C++ lernen zwecks Spiele Entwicklung



  • Wie man aus denn Titel entnehmen kann möchte ich gerne C++ lernen um selber ein Spiel zu entwickeln aber leider habe ich keine Ahnung wie ich es am besten anstellen soll.

    Kommen wir erst mal dazu was ich schon so weiß.
    Die heutigen Spiele werden alle größtenteils in C++ geschrieben verknüpft mit der Bibliothek DirectX.
    Man braucht also erst einmal eine Programmierer Umgebung. Ich habe mir Microsoft Visual C++ 2008 Express Edition zugelegt.

    Quelle: http://www.microsoft.com/germany/Express/product/vc.aspx

    Aber nun habe ich keiner leih Erfahrung mit der Sprache noch mit der Software gemacht.
    Ich habe mal angefangen mit denn einfachen Schritten aus dem Buch „Jetzt lerne ich Spieleprogrammierung mit DirectX“
    Nun komme ich aber schon zu den ersten Problemen das Buch ist von 2006 und ich schätzte mal die Programmzeilen die dort drin stehen sind nicht mehr die aktuellsten! Z.B. wollte ich das Geliebte „Hallo Welt“ Programm schreiben.
    Im Buch sind die Zeilen wie folgt:

    #include <iostream>
    
    using namespace std;
    
    int main(void)
    {
          cout << “Hallo Welt!”;
    }
    

    Error das kann der Komprimierer nicht um setzten.

    Aber es gibt auch von der Software (Microsoft Visual C++ 2008 Express Editio) das gleiche Programm nur mit anderen Zeilen.
    Das sieht dann so aus:

    #include "stdafx.h"
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
        Console::WriteLine(L"Hello World");
        return 0;
    }
    

    Das funktioniert fast einbanfrei bis auf das dass Fenster nach 2 Sekunden wieder verschwindet.
    Ist den der Zweite Code überhaupt C++? Und wenn ja muss sich einiges geändert haben oder nicht?

    Gibt es irgendein Buch was auf dem neusten Stand ist? Am besten Auflage 2009. Preis ist Uninteressante, Hauptsache ist nur das es eine Schritt für Schritt in die Materie C++ einführt.

    Ich weiß das sind viele Fragen und ich hoffe es kann mir wer helfen. Ja und ich habe google genutzt nur habe ich da auch nicht wirklich was brauch bares gefunden.

    Und wenn waren die Themen schon so veraltet wie mein Buch 😕





  • so weit wie ich weiß, ist das C++, nur halt .net. Also von Microsoft. Wenn du plattformunabhängig programmieren willst würde ich dir für Windows Code::Blocks mit mingw empfehlen.
    Plattformunabhängig heißt, dass deine Programme auch unter Linux, etc. laufen, nach dem du sie für das ensprechende System kompiliert hast.

    mfg liggi



  • Echt super von euch beiden 🙂
    Das hilft mir schon ein ganze Stück weiter.

    Aber wie sieht es mit C++ aus wird die Sprache denn weiter entwickelt? Sowie z.B. PHP. weil wenn ja wäre es doch dumm wenn ich die alten Sachen lerne und mich nachher dann doch auf die neuen Konzentrieren muss.



  • Es wird bald eine runderneuerte Spezifikation geben (C++0x), einige neuere Compiler bringen schon Funktion daraus und Bestandteile der überarbeiteten Standardbibliothek mit (siehe auch "TR1"). Soweit ich das gesehen habe, bauen die Erweiterungen aber nur auf dem auf, was schon besteht. Du wirst also nichts verlernen müssen. Hier ist irgendwo ein sehr schöner Artikel zu diesem Thema zu finden.

    Viele Grüße,
    Michael



  • Puh ich dachte schon 😃
    Habe es grade auch hin bekommen mit dem Programm Code::Blocks zu arbeiten hatte zwar noch ein paar Schwierigkeiten damit aber jetzt läuft es 🙂
    Habe sogar schon mein zweites Programm fertig^^ Nix tolles aber für ein Blutigen Anfänger.

    Hier mal der Code falls es euch Interessieren sollte

    #include <iostream>
    
    int Zahl1 = 0;
    int Zahl2 = 0;
    
    using namespace std;
    
    int main()
    {
        cout << "Bitte geben Sie 2 Zahlen an!";
    
        cin >> Zahl1;
    
        cin >> Zahl2;
    
        char Aktion ='a';
    
        cout << "Was möchten Sie nun mit denn Zahlen machen?\n";
    
        cout << "(A)ddiren (S)ubtrairen?\n";
    
        cin >> Aktion;
    
         if('a' == Aktion)
         {
             cout << "Summe: " << Zahl1+Zahl2;
         } else {
    
             cout << "Summe: " << Zahl1-Zahl2;
         }
    
    }
    

    Für Kritik und Vorschläger immer offen! 😋

    P.S werde mir nachher mal den Artikel suchen und durch lesen und nochmal Danke für die Hilfe 🙂


  • Mod

    Yakkul schrieb:

    #include <iostream>
    
    using namespace std;
    
    int main(void)
    {
          cout << "Hallo Welt!";
    }
    

    Und wenn waren die Themen schon so veraltet wie mein Buch 😕

    nein, das passt scho, sollte so compilieren, es wuerde helfen wenn du den genauen fehler angibst.

    Yakkul schrieb:

    Echt super von euch beiden 🙂
    Das hilft mir schon ein ganze Stück weiter.

    Aber wie sieht es mit C++ aus wird die Sprache denn weiter entwickelt? Sowie z.B. PHP. weil wenn ja wäre es doch dumm wenn ich die alten Sachen lerne und mich nachher dann doch auf die neuen Konzentrieren muss.

    alle 10jahre kommt eine kleine erweiterung, ansonsten kann die sprache alles was noetig ist.
    ich weiss nicht weshalb dir die leute eine komplett neue programmierumgebung aufschwatzen, nur weil dein erster compilierversuch schiefging ohne den fehler ueberhaupt zu kennen.
    so ca 99% der spiele die du kaufen kannst werden wohl mit VisualStudio (das was du anfangs nutztes) geschrieben, es kann also nicht so schlecht sein.



  • Yakkul schrieb:

    Puh ich dachte schon 😃
    Habe es grade auch hin bekommen mit dem Programm Code::Blocks zu arbeiten hatte zwar noch ein paar Schwierigkeiten damit aber jetzt läuft es 🙂
    Habe sogar schon mein zweites Programm fertig^^ Nix tolles aber für ein Blutigen Anfänger.

    Hier mal der Code falls es euch Interessieren sollte

    #include <iostream>
    
    int Zahl1 = 0;
    int Zahl2 = 0;
    
    using namespace std;
    
    int main()
    {
        cout << "Bitte geben Sie 2 Zahlen an!";
    
        cin >> Zahl1;
    
        cin >> Zahl2;
    
        char Aktion ='a';
    
        cout << "Was möchten Sie nun mit denn Zahlen machen?\n";
    
        cout << "(A)ddiren (S)ubtrairen?\n";
    
        cin >> Aktion;
    
         if('a' == Aktion)
         {
             cout << "Summe: " << Zahl1+Zahl2;
         } else {
    
             cout << "Summe: " << Zahl1-Zahl2;
         }
    
    }
    

    Für Kritik und Vorschläger immer offen! 😋

    P.S werde mir nachher mal den Artikel suchen und durch lesen und nochmal Danke für die Hilfe 🙂

    Dein 2 Programm ist nicht ganz korrekt....



  • @ rapso
    Ich werde später auf VisualStudio umsteigen. Werde am Wochende es mir nochmal genauer anschauen.

    @ zerberos
    Schön das es nicht korrekt ist aber man sollte dann aber auch sagen wo oder?
    Naja ist aber auch egal habe das Programm wieso nochmal weiter entwickelt.

    #include <iostream>
    
    using namespace std;
    
    int Zahl1 = 0;
    int Zahl2 = 0;
    
    int main()
    {
    
       bool nochmal=true;
       while(nochmal)
       {
    
          cout<<"Menu  |   Programm (b)eenden"<<endl;
          cout<<"----------------------------"<<endl;
          cout<<"(A)ddiren"<<endl;
          cout<<"(S)ubtrairen"<<endl;
          cout<<"(M)ultipliziren"<<endl;
          cout<<"(D)ividiren"<<endl;
          cout<<"----------------------------"<<endl;
    
          char eingabe;
          cin>>eingabe;
    
          string name;
          string nummer;
          switch(eingabe)
          {
          case 'b':
             nochmal=false;
          break;
          case 'a':
    
              cout<<"Bitte geben Sie zwei Zahlen ein!\n";
              cin>>Zahl1;
              cin>>Zahl2;
              cout<<"Summe: "<<Zahl1+Zahl2<<"\n\n";
    
          break;
          case 's':
    
              cout<<"Bitte geben Sie zwei Zahlen ein!\n";
              cin>>Zahl1;
              cin>>Zahl2;
              cout<<"Summe: "<<Zahl1-Zahl2<<"\n\n";
    
          break;
          case 'm':
    
              cout<<"Bitte geben Sie zwei Zahlen ein!\n";
              cin>>Zahl1;
              cin>>Zahl2;
              cout<<"Summe: "<<Zahl1*Zahl2<<"\n\n";
    
          break;
          case 'd':
    
              cout<<"Bitte geben Sie zwei Zahlen ein!\n";
              cin>>Zahl1;
              cin>>Zahl2;
              cout<<"Summe: "<<Zahl1/Zahl2<<"\n\n";
    
          break;
          default:
             cout<<"Diesen Menupunkt gibt es nicht!"<<endl;
          };
       };
    
    }
    


  • ich würde erst abfragen was der User will, dann die Zahlen einlesen und dann erst ein swicht, also so:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    
       bool nochmal=true;
       int Zahl1 = 0;
       int Zahl2 = 0;
       int eingabe;
       while(nochmal)
       {
    
          cout<<"Menu  |  1. Programm beenden"<<endl;
          cout<<"----------------------------"<<endl;
          cout<<"2. Addiren"<<endl;
          cout<<"3. Subtrairen"<<endl;
          cout<<"4. Multipliziren"<<endl;
          cout<<"5. Dividiren"<<endl;
          cout<<"----------------------------"<<endl;
    
          cin>>eingabe;
    
          if(eingabe == 1) return 0; //Beendet das Programm
          if(eingabe>0 && eingabe<5) //Eingabe zwischen 1 und 4
          {
    
            cout<<"Bitte geben Sie zwei Zahlen ein!\n";
            cin>>Zahl1;
            cin>>Zahl2;
    
            string name;
            string nummer;
            switch(eingabe)
            {
              case 1:
                cout<<"Summe: "<<Zahl1+Zahl2<<"\n\n";
                break;
    
              case 2:
                cout<<"Differenz: "<<Zahl1-Zahl2<<"\n\n";
                break;
    
              case 3:
                cout<<"Produkt: "<<Zahl1*Zahl2<<"\n\n";
                break;
    
              case 4:
                cout<<"Wert des Quotienten: "<<Zahl1/Zahl2<<"\n\n";
                break;
            };
         }
         else
         {
            cout<<"Diesen Menupunkt gibt es nicht!"<<endl;
         };
       };
    
    }
    

    mfg liggi



  • Ok so hätte ich es auch machen können danke! Aber ist es nicht so je mehr schleifen man im Programm hat detso langsamer ist es?



  • Yakkul schrieb:

    @ zerberos
    Schön das es nicht korrekt ist aber man sollte dann aber auch sagen wo oder?
    Naja ist aber auch egal habe das Programm wieso nochmal weiter entwickelt.

    Beim Debuggen/Fehlersuchen lernt man am meisten, von daher ist es schon sinnvoll dich nur darauf hinzuweisen, den Fehler nennen kann er dir ja jederzeit.



  • > ich würde erst abfragen was der User will <<<
    Wenn das meinst S.T.A.L.K.E.R. hätte ich es nicht als Fehler angesehen, weil das in mein Augen kein Fehler ist. Höchsten ein Schönheitsfehler^^



  • liggi1998 schrieb:

    so weit wie ich weiß, ist das C++, nur halt .net. Also von Microsoft. Wenn du plattformunabhängig programmieren willst würde ich dir für Windows Code::Blocks mit mingw empfehlen.
    Plattformunabhängig heißt, dass deine Programme auch unter Linux, etc. laufen, nach dem du sie für das ensprechende System kompiliert hast.

    Bitte verbreite hier nicht irgendwelche Gerüchte. Mit Visual Studio kann man genauso plattformunabhängig programmieren wie mit einer anderen IDE. Das C++, das man normalerweise programmiert, hat auch rein gar nichts mit .NET zu tun.

    Yakkul schrieb:

    Ok so hätte ich es auch machen können danke! Aber ist es nicht so je mehr schleifen man im Programm hat detso langsamer ist es?

    Es ist meistens so, dass durch mehr Code die Ausführungszeit erhöht wird... 😉

    Aber mach dir deswegen keine Gedanken und setze Sprachmittel erst mal dort ein, wo sie Sinn machen.



  • Danke Nexus 🙂 Werde es versuchen zu berücksichtigen.

    Mir sind heute auf der Arbeit noch so ein paar Fragen in den Kopf gekommen und zwar wird bei Spielen ja der Fortschritt gespeichert.

    Im ersten Moment dachte ich da an eine SQL-Datenbank aber das ist Schwachsinn da es ja nicht jede aufm Rechner hat also muss es eine Datei sein aber wie wird sowas gemacht? Oder welche Dateientyp/en sind es?



  • Yakkul schrieb:

    Danke Nexus 🙂 Werde es versuchen zu berücksichtigen.

    Mir sind heute auf der Arbeit noch so ein paar Fragen in den Kopf gekommen und zwar wird bei Spielen ja der Fortschritt gespeichert.

    Im ersten Moment dachte ich da an eine SQL-Datenbank aber das ist Schwachsinn da es ja nicht jede aufm Rechner hat also muss es eine Datei sein aber wie wird sowas gemacht? Oder welche Dateientyp/en sind es?

    Man schreibt sich dafür im Zweifel eigene Datentypen in denen die Daten gespeichert werden. Für das Thema solltest du dich mal über Chunks Informieren da sist eigentlich recht Simpel.


Anmelden zum Antworten