Komplexes Programm für Lernzwecke



  • Hallo,
    da ich neu in c++ bin würde ich euch gerne fragen ob ihr mir einen euerer quellcodes für ein etwas komplexeres programm zur verfügung stellen würdet.

    ich habe gemerkt das ich am besten lerne wenn ich mit etwas befasse.

    also wäre schön wenn ihr mir helfen könntet 🙂

    danke



  • Such dir doch ein Open-Source Programm zu einer Thematik, die dich besonders interessiert!



  • Auch wenn mich jetzt vielleicht einige köpfen werden, aber fang mit einem 2D Spiel basierend auf Direct3D oder OpenGL an, dann hat man wenigstens mehr motivation als bei so einem langweiligen Kundenverwaltungsprogramm, dass man zumindestens Hobbytechnisch nie wieder braucht.
    Ich hab mich erstmal durch die Basics gewurschtelt, dann mit der WinApi ein bisschen rumgespielt, und dann angefangen Dreiecke mit OpenGL auf meinen Bildschirm zu zaubern. Jetzt, nach einem halben Jahr intensiver Arbeit, habe ich schöne bewegende Vierecke auf meinem Bildschirm, und ich behaupte von mir, dass ich einigermaßen gut in C++ bin (zu ende lernen tut man aber natürlich nie). Nützlich ist es dabei natürlich immer ein paar Bücher und ein haufen Internet Tutorials zu haben.



  • #include "Spiel.h"
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Spiel* spiel = new Spiel;
    	spiel->start();
    	delete spiel;
    
    	return 0;
    }
    


  • snaker schrieb:

    ...

    Wenn schon, dann richtig:

    #include "Spiel.h"
    #include <memory>
    
    int main()
    {
    	std::auto_ptr<Spiel> spiel(new Spiel);
    	spiel->start();
    
    	return 0;
    }
    


  • Wobei, wirklich richtig wäre es so:

    #include "Spiel.h"
    
    int main()
    {
        Spiel spiel;
        spiel.start();
    
        return 0;
    }
    

    Um noch was zum Topic beizutragen. Du kannst dir ja mal Gedanken über die drei Varianten machen. Über ihre Unterschiede, Vor- und Nachteile. So trivial wie es auf dem ersten Blick erscheinen mag, ist es nämlich nicht.



  • Guter Tipp schrieb:

    Jetzt, nach einem halben Jahr intensiver Arbeit, habe ich schöne bewegende Vierecke auf meinem Bildschirm, und ich behaupte von mir, dass ich einigermaßen gut in C++ bin (zu ende lernen tut man aber natürlich nie).

    Nimms mir nicht übel, aber so gehts vielen Anfängern. Sobald sie ein paar Vierecke zeichnen können, denken sie, sie würden sich mit C++ auskennen. Und selbst wenn du schon einen Grossteil der Sprachmittel kennst (was ich bezweifle, zumal z.B. Templates ein Kapitel für sich sind): Wichtig ist Erfahrung mit einzelnen Projekten, damit man weiss, welche Werkzeuge man in welcher Situation benutzen kann, wie sauberes Design aussieht, etc.

    Gerade bei gewissen Spieleprogrammierern habe ich die Erfahrung gemacht, dass sie zwar recht fortgeschrittene Programme zustande bringen, aber teilweise von grundlegendsten Konzepten wie RAII keine Ahnung haben. Ist dann halt schade, wenn sie sich jedes Mal enorm abmühen und durchgehend hässlichen Code erzeugen, nur weil sie am Anfang Zeit für Grundlagen einsparen wollten, die sich inzwischen schon um ein Vielfaches amortisiert hätte.

    Natürlich muss man sich nicht zwei Jahre mit Konsolenanwendungen befassen. Nachdem man sich bereits eine Zeit lang mit den Grundlagen auseinandergesetzt hat, kann man sich gerne an ein Spiel wagen. Nur sollte man 1. nicht das Gefühl haben, man könne C++ programmieren, und 2. deswegen immer dafür sorgen, nebenbei C++-Theorie zu lernen. Wenn man merkt, dass man für gewisse Problemstellungen keine oder nur sehr unschöne Ansätze hat, sollte man vielleicht doch noch etwas warten.

    Und nein, ich hab das nicht soeben erfunden. Ich hab den genau gleichen Fehler gemacht und nach kurzer Zeit angefangen Spiele zu programmieren. Dann noch mit der SDL, einer C-Bibliothek mit entsprechend veralteten und fehleranfälligen Techniken. Fragwürdige C++-Bücher trugen ihren Teil bei. Richtig C++ lernte ich erst um Einiges später, als ich mir die Zeit nahm, auch die dicken Bücher durchzuarbeiten.

    Guter Tipp schrieb:

    Nützlich ist es dabei natürlich immer ein paar Bücher und ein haufen Internet Tutorials zu haben.

    Wobei man bei beiden aufpassen muss. Schlechte Bücher über C++ gibts wie schon angedeutet nicht wenige, Tutorials sind oft viel zu oberflächlich und lassen wichtiges Hintergrundwissen weg.



  • am ebsten ein referenz werk welche alle c++ befehle inne hat, eignet sich natürlich die msdn library am besten da hast gleich schon mal immer ein beispiel dabei, auch was die windows api betrifft!

    windows SDK 7 downloaden als tipp !

    und für openGL empfehle ich dir zb das Lighthouse GLUT 3d tutorial -> vorsicht GLUT ist nicht gleich ganz OpenGL "source", nenn ich das mal,!



  • Ich würde SFML empfehlen und mich zunächst auf 2D beschränken.


Anmelden zum Antworten