Ein 2D Spiel erstellen - aber wie?
-
Hallo Forum,
Ich programmiere/lerne C++/CLI seit ca. 6 Monaten (Programm: Visual C++ 2008 Express Edition), kenne mich also mit einigen sachen aus. Zur Zeit programmiere ich ein Programm das Dateien umbennenen soll, also der User soll ein Ordner auswählen und dann kriegt er die Dateien aus dem Ordner und kann die dann umbenennen. Das Programm habe ich in C++/CLI WindowsForms geschrieben, bis auf ein paar kleinigkeiten funktioniert das gut, bin also zufrieden :).
Selbstverständlich interessiert es mich wie ich ein Spiel programmieren kann.
Ich hab auch schon ein Pong Spiel erstellt oder besser gesagt abgeschrieben, konnte aber alles nachvollziehen
(der Schläger war ein Panel und der Ball auch, wurde in WindowsForms geschrieben, hatte keine schwierigkeiten).Das Spiel das ich nun programmieren will soll in 2D sein:
ein Jump and Run wie" Super Marion" von Suber Nintendo (ob das einer kennt?),
oder ein Flugzeug/Raumschiff das von links nach rechts fliegt und andere Schieffe oder was auch immer abschießen kann,
oder ein Strategie Spiel von oben, Häuser und Panzer bauen oder so
ist doch bestimmt machbar.Das spiel soll auch grafisch aussehen halt wie ein normales Spiel (keine Taskleiste mit Minimieren, Maximieren und Schliessen Button).
Wie soll ich das jetzt machen?
In WindowsForms wie Pong (siehe oben) oder gibt es andere möglichkeiten wie DirectX, OpenGL, oder so, kenne mich da nicht so aus (will aber noch lernen).
-
Guten Abend
Bei etwas grösserem als einem simplen Pong kommst du mit Windows Forms und GDI+ leider nicht mehr sehr weit, da die Performance einfach mieserabel ist. DirectX und OpenGL sind verhältnismässig hart für einen Einsteiger und für deine Zwecke wohl auch ein wenig Overkill (wobei... there's no thing such as overkill). Ich würde dir SFML empfehlen; das ist dann allerdings eine komplett andere Welt als .NET (was du bisher gemacht hast).
Eine pure .NET Alternative dazu, und was ich momentan gerade mache, wäre C++/CLI mit WPF (Windows Presentation Foundation) zu programmieren. Damit sind verdammt schöne Dinge machbar und die Performance ist im Vergleich zu Windows Forms bei anspruchsvollen grafischen Sachen wesentlich besser (im Vergleich zu DirectX oder OpenGL aber immernoch sehr schlecht). Und die Lernkurve ist nicht gerade motivierend. Für ein einfacheres Game reicht WPF aber verdammt gut...
MfG
-
ein Jump and Run wie" Super Marion" von Suber Nintendo (ob das einer kennt?)
WTF???
-
hustbaer schrieb:
ein Jump and Run wie" Super Marion" von Suber Nintendo (ob das einer kennt?)
WTF???
AHAHAHAH!!!! Super Marion von Suber Nintendo ... ahahahahaha ... von welchem Planeten kommst du? Sehr sehr geil.
-
dust schrieb:
hustbaer schrieb:
ein Jump and Run wie" Super Marion" von Suber Nintendo (ob das einer kennt?)
WTF???
AHAHAHAH!!!! Super Marion von Suber Nintendo ... ahahahahaha ... von welchem Planeten kommst du? Sehr sehr geil.
hehe jo net schlecht
btw. lol
http://fc05.deviantart.net/fs45/f/2009/100/c/d/Super_Mario_TCG___Marion_by_GeoPyro.pngum mal auf das Thema zurück zu kommen
Könntest dir ja mal XNA ansehen.
-
was genau ist an super mario fuer supernintendo so lustig?
-
rapso schrieb:
was genau ist an super mario fuer supernintendo so lustig?
Na weil es hier die Super Marion ist
-
Hallo,
lol, ich meinte natürlich Super Mario World
aber egal.
Ich hab mich für SFML entschieden.
Da brauche ich eine kleine Starthilfe.
So, ich hab mal von der Seite http://wiki.sfml.boxbox.org/index.php/SFML_mit_Visual_Studio Das erste SFML-Programm erstellt, (hatte zwar schwierigkeiten aber hat geklappt
).
Beim zweiten Tut http://wiki.sfml.boxbox.org/index.php/Renderfenster_benutzen klappt das aber nicht mehr. Ich hab den ganzen Code rüber kopiert und noch die #include <SFML/Graphics.hpp> oben eingefügt und im Projekt -> Einstellungen -> ... -> Linker -> Eingabe -> Zusätzliche Abhängikeit sfml-graphics-s-d.lib eingefügt. Und bekomme folgende 18 Fehler:1>------ Erstellen gestartet: Projekt: sfml-test3, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>neu.cpp 1>Verknüpfen... 1>neu.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall sf::Window::Display(void)" (?Display@Window@sf@@QAEXXZ)" in Funktion "_main". 1>neu.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall sf::Window::Close(void)" (?Close@Window@sf@@QAEXXZ)" in Funktion "_main". 1>neu.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: bool __thiscall sf::Window::GetEvent(class sf::Event &)" (?GetEvent@Window@sf@@QAE_NAAVEvent@2@@Z)" in Funktion "_main". 1>neu.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: bool __thiscall sf::Window::IsOpened(void)const " (?IsOpened@Window@sf@@QBE_NXZ)" in Funktion "_main". 1>neu.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (??0VideoMode@sf@@QAE@III@Z)" in Funktion "_main". 1>sfml-graphics-s-d.lib(RenderWindow.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: virtual __thiscall sf::Window::~Window(void)" (??1Window@sf@@UAE@XZ)" in Funktion "__unwindfunclet$??0RenderWindow@sf@@QAE@XZ$0". 1>sfml-graphics-s-d.lib(RenderWindow.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall sf::Window::Window(void)" (??0Window@sf@@QAE@XZ)" in Funktion ""public: __thiscall sf::RenderWindow::RenderWindow(void)" (??0RenderWindow@sf@@QAE@XZ)". 1>sfml-graphics-s-d.lib(RenderWindow.obj) : error LNK2001: Nicht aufgelöstes externes Symbol ""private: virtual void __thiscall sf::Window::OnEvent(class sf::Event const &)" (?OnEvent@Window@sf@@EAEXABVEvent@2@@Z)". 1>sfml-graphics-s-d.lib(RenderWindow.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall sf::Window::Create(class sf::VideoMode,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned long,struct sf::WindowSettings const &)" (?Create@Window@sf@@QAEXVVideoMode@2@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KABUWindowSettings@2@@Z)" in Funktion ""public: __thiscall sf::RenderWindow::RenderWindow(class sf::VideoMode,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned long,struct sf::WindowSettings const &)" (??0RenderWindow@sf@@QAE@VVideoMode@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KABUWindowSettings@1@@Z)". 1>sfml-graphics-s-d.lib(RenderWindow.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall sf::Window::Create(void *,struct sf::WindowSettings const &)" (?Create@Window@sf@@QAEXPAXABUWindowSettings@2@@Z)" in Funktion ""public: __thiscall sf::RenderWindow::RenderWindow(void *,struct sf::WindowSettings const &)" (??0RenderWindow@sf@@QAE@PAXABUWindowSettings@1@@Z)". 1>sfml-graphics-s-d.lib(RenderWindow.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: bool __thiscall sf::Window::SetActive(bool)const " (?SetActive@Window@sf@@QBE_N_N@Z)" in Funktion ""private: virtual bool __thiscall sf::RenderWindow::Activate(bool)" (?Activate@RenderWindow@sf@@EAE_N_N@Z)". 1>sfml-graphics-s-d.lib(Image.obj) : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall sf::Window::SetActive(bool)const " (?SetActive@Window@sf@@QBE_N_N@Z)". 1>sfml-graphics-s-d.lib(RenderWindow.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: unsigned int __thiscall sf::Window::GetWidth(void)const " (?GetWidth@Window@sf@@QBEIXZ)" in Funktion ""public: virtual unsigned int __thiscall sf::RenderWindow::GetWidth(void)const " (?GetWidth@RenderWindow@sf@@UBEIXZ)". 1>sfml-graphics-s-d.lib(RenderWindow.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: unsigned int __thiscall sf::Window::GetHeight(void)const " (?GetHeight@Window@sf@@QBEIXZ)" in Funktion ""public: virtual unsigned int __thiscall sf::RenderWindow::GetHeight(void)const " (?GetHeight@RenderWindow@sf@@UBEIXZ)". 1>sfml-graphics-s-d.lib(GraphicsContext.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall sf::Context::SetActive(bool)" (?SetActive@Context@sf@@QAEX_N@Z)" in Funktion ""public: __thiscall sf::priv::GraphicsContext::GraphicsContext(void)" (??0GraphicsContext@priv@sf@@QAE@XZ)". 1>sfml-graphics-s-d.lib(GraphicsContext.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: static class sf::Context & __cdecl sf::Context::GetGlobal(void)" (?GetGlobal@Context@sf@@SAAAV12@XZ)" in Funktion ""public: __thiscall sf::priv::GraphicsContext::GraphicsContext(void)" (??0GraphicsContext@priv@sf@@QAE@XZ)". 1>sfml-graphics-s-d.lib(GraphicsContext.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: static bool __cdecl sf::Context::IsContextActive(void)" (?IsContextActive@Context@sf@@SA_NXZ)" in Funktion ""public: __thiscall sf::priv::GraphicsContext::GraphicsContext(void)" (??0GraphicsContext@priv@sf@@QAE@XZ)". 1>D:\MyFiles\C++ Project\sfml-test3\Debug\sfml-test3.exe : fatal error LNK1120: 16 nicht aufgelöste externe Verweise. 1>Das Buildprotokoll wurde unter "file://d:\MyFiles\C++ Project\sfml-test3\sfml-test3\Debug\BuildLog.htm" gespeichert. 1>sfml-test3 - 18 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Wenn ich sfml-system-s-d.lib einfüge dann bekommeich nur 10 Fehler.
Kann mir da einer helfen weiß nicht weiter
-
Dann fehlt dir wohl noch die "sfml-window-s-d.lib" in den Linkereinstellungen
(mehrere Libs einfach mit einem Leerzeichen trennen)...