Viele Fragen eines (eventuell) zukünftigen Spieleprogrammierers



  • denken, tiger888, einfach mal denken....
    und wissen, daß ein programm zeile für zeile abgearbeitet wird.



  • Hast recht.
    Ich habs 😃 😃

    #include <iostream>
    using namespace std;
    
    int main()
    {
      int zahl1;
      int zahl2;
      int zahl3;
    
      cout<<"Bitte eine Zahl eingeben\n";
      cin>>zahl1;
      cout<<"Bitte noch eine Zahl eingeben\n";
      cin>>zahl2;
      cout<<"Bitte eine dritte zahl eingeben\n";
      cin>>zahl3;
      cin.get();
      cout<<"Die Zahlen lauten\n";
      cin.get();
      cout<<zahl1<<" "<<zahl3<<" "<<zahl2<<"\n";
      cin.get();
    }
    

    P.S. Das ist dann aber auch nicht mein Fehler. ich habe mich ja anfangs auf das Tutorial verlassen. 🙂



  • und schau mal hier in der konsolenfaq.. .da steht eine weitere möglichkeit mit erklärung für dein problem
    http://www.c-plusplus.net/forum/viewtopic.php?t=39328



  • thx



  • Hi,
    eine Frage zum vorherigen Code (hier ein Ausschnitt):

    #include <iostream> 
    using namespace std; 
    
    int main() 
    { 
      int zahl1; 
      int zahl2; 
      int zahl3; 
    
      cout<<"Bitte eine Zahl eingeben\n"; 
      cin>>zahl1; 
      cout<<"Bitte noch eine Zahl eingeben\n"; 
      cin>>zahl2; 
      cout<<"Bitte eine dritte zahl eingeben\n"; 
      cin>>zahl3;
    

    Soweit ich weiß, wird ein Fenster doch nur dann nicht geschlossen, wenn zwischen den Zeilen ein "cin.get()" steht. Doch zwischen den folgenden Zeilen steht doch auch kein "cin.get()" und es wird trotzdem nicht geschlossen, wieso?:

    cout<<"Bitte eine Zahl eingeben\n";
    cin>>zahl1;
    cout<<"Bitte noch eine Zahl eingeben\n"; ....
    cin>>zahl2;
    cout<<"Bitte eine dritte zahl eingeben\n";
    cin>>zahl3;



  • Weil die Eingabeaufforderung auf eine Eingabe wartet 😉



  • Jetzt, wo du es sagst 💡



  • Wenn das so weiter geht, dann ist der Thread ja bald einen Eintarg in den Geschichtsbüchern wert. 😉 .
    Ich persönlich bevorzuge die Methode mit 'getchar()', so kann ich ein Fenster auch offen halten.

    Ich bin auch bei C++ eingestiegen und habe auch mit Volkards Kurs angefangen, hat großen Spass gemacht, vor allem desshalb, weil er alles genau erklärt und viele Beispiele und Übungen miteingebaut hat.

    Ich habe jetzt mit DX angefangen und bin bislang voll zufrieden, aber ich finde es komisch, dass ich in C++ .NET besser mit DX umgehen kann als in C++ 6.0.

    Aber zurück zum eigentlichen Thema:
    - Mit dem Stil der C++-programmierung bist du schon mal gut gerüstet, denn die .NET Versionen wollen genau das sehen, da funktioniert z.B. folgendes nicht mehr:

    #include <iostream.h>
    void main()
    {
    cout<<"..."<<endl;
    }
    

    Der Compiler will unbedingt folgendes sehen:

    #include <iostream>
    using namespace std;
    int main()
    {
    cout<<"..."<<endl;
    return 0;
    }
    

    Die gravierenden Unterschiede sind, dass er die Include-Datei 'iostream.h' nicht findet, da muss man eben das h weglassen, und noch das using namespace std; drunter setzen, dann ist eigentlich alles in bester Ordnung.
    Ansonsten gibt er nur Fehlermeldungen aus, dass 'cout' und 'endl' nicht deklariert seien. 🙄 .

    Und zu der Frage, warum zwischen den anderen Zeilen nicht auch eine Wartefunktion eingebaut ist:
    Das Programm läuft den Code von oben nach unten ab, wenn die main-Funktion vorbei ist, schaltet sich das Programm aus, man kann z.B. auch folgendes Schreiben:

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    int main()
    {
    cout<<"H"<<endl<<"a"<<endl<<"l"<<endl<<"l"<<endl<<"o"<<endl<<"!"<<endl;
    cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
    cout<<"Eingabetaste druecken."<<endl;
    getchar();
    return 0;
    }
    

    Das würde dann zu folgendem Ergebnis führen:
    **H
    a
    l
    l
    o
    !

    Eingabetaste druecken.**
    (Hier wird gewartet bis die Eingabetaste gedrückt wird!(Ursache->'getchar();))

    Aber man kann das alles auch in wenige Zeilen packen:

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    int main()
    {
    cout<<"H"<<endl<<"a"<<endl<<"l"<<endl<<"l"<<endl<<"o"<<endl<<"!"<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<"Eingabetaste druecken."<<endl;
    getchar();
    return 0;
    }
    

    Das würde dann zum exakt gleichen Ergebnis führen!

    Der Übersichtlichkeit wegen sollte sollte man jedoch für jede neue Zeile auch ein neues 'cout' verwenden.

    Noch was:
    Wieso gibst du die Zahlen eigentlich nicht der Reihenfolge nach aus? 😞 ?
    Wenn du es schon so herum machst, dann ändere wenigstens die Werte, z.B. so:

    int zahl1=10;
    int zahl2=20;
    int zahl3=30;
    int tausch;
    tausch=zahl1;
    zahl1=zahl2;
    zahl2=zahl3;
    zahl3=tausch;
    

    Aber das Verfahren kommt auch noch in dem Tutorial dran. 😉 .

    - Aber ich kann dazu nur eins sagen:

    cout<<"Much fun!"<<endl;
    

    MfG Mastermind.



  • Hi,

    cout<<"dankeschön!!!\n";
    

    Meine Fragen:
    1. Warum setzt du nach jeder fertigen Zeile folgendes: <<endl; 😕
    Ich habe es in dem Tutorial von "Schornboeck" http://tutorial.schornboeck.net/ anders gelernt.
    Im Normalfall setze ich entweder nur ein "; dahinter oder noch das Zeichen für Zeilenumbruch dahinter : \n"; (siehe oben)

    2. Ich benutze folgenden Stil:

    #include <iostream>
    using namespace std;
    
    int main()
    {
     cout<<"...\n";
     cin.get()
    }
    

    Ist das der C++.NET oder der andere Stil?

    3. Was bedeutet folgendes (nach Count<<...?)

    return 0;
    

    Das kam in dem Tutorial (noch) nicht vor.

    4. Was bedeutet die Folgende zeile nach #include <iostream>

    #include <iostream>
    #include <stdio.h>
    

    5. Folgendes Versteh ich nicht (kannst du das nochmal erklären?):

    Noch was:
    Wieso gibst du die Zahlen eigentlich nicht der Reihenfolge nach aus? ?
    Wenn du es schon so herum machst, dann ändere wenigstens die Werte, z.B. so:
    C/C++ Code:

    int zahl1=10;
    int zahl2=20;
    int zahl3=30;
    int tausch;
    tausch=zahl1;
    zahl1=zahl2;
    zahl2=zahl3;
    zahl3=tausch;

    Aber das Verfahren kommt auch noch in dem Tutorial dran.



  • hallo

    treibe dich mal auf hume sikkins seiten rum (der mod aus c++, seine site steht in seinem profil).
    da werden einige fragen beantwortet.

    zum anderen: lese einfach weiter... 😉

    und mache ab jetzt (nur wenn du wirklich nicht weiterkommst!!!) einen thread zu EINEM thema auf in einem geeigneteren forum, mit spieleprogrammieren hat das nix mehr zu tun!



  • 1.)
    Gelernt ist gelernt, ich mache es bei Konsolenanwendungen immer mit dem endl-Befehl, außerdem wird dadurch auch so ein komischer Speicher geleert 😕 . Noch dazu find ich den Code dadurch übersichtlicher weil ich die Zeilenumbrüche damit schneller finde (praktisch bei großen Projekten).
    2.)
    Das ist einfach nur der Standard Programmierstil, weil die 'void main()'-Funktion gibt keinen Wert zurück, aber das sollte eigentlich der Fall sein,
    die Wertrückgabe erfolgt durch 'return 0;' , in diesem Fall gibt man einen leeren Wert zurück, wodurch deine Frage (3.) auch schon beantwortet ist('return ...;' muss nicht hinter einer Ausgabe-Anweisung(z.B. 'cout') stehen, aber es sollte immer am Schluss des Programmes stehen).
    4.)
    Das ist die Standard Ein-/Ausgabe - Include Datei, die benötigt man, damit der Befehl 'getchar()' auch funktioniert.
    5.)
    Du gibst die Zahlen in der Reihenfolge 1->3->2 aus, aber die Funktion, die ich dir dazugeschrieben habe, kommt auch in Volkards Tut. vor, nennt sich glaub 'Dreieckstausch', so kannst du die Zahlen in umgekehrter, die Variablen jedoch in richtiger Reihenfolge ausgeben, indem du die Werte vertauschst.
    6.)Gern geschehen, MfG Mastermind.



  • Dankeschön, hab mir jetzt ersteinmal folgendes Buch gekauft:
    http://www.amazon.de/exec/obidos/ASIN/3826608240/ref=pd_sxp_elt_l1/028-8364312-3753316

    Mal sehen wie es ist.



  • HI auch,

    ich habe jetzt auch mal mit VC++ angefangen, hab davor aber schon mit blitzbasic, pascal und c rumgespielt...

    Der Befehl ?::TextBox (o.ä.) war für VC++, oder?

    Aber ich find den VC++ Compiler den ich habe nur unübersichtlich aber ich versteh da auch (wenn ich glück hab) die hälfte davon.

    Für das normale C++ habe ich den Dev-CPP von Blodshed, ich find den so ganz gut.
    Wenn du wirklich C++ anfangen willst, dann mach das, ich versuchs ja auch, aber meine erste Sprache war BlitzBasic und da mach ich auch erst n Strategiespiel. Also für kleine Games is das mit sicherheit schneller!!!

    Versuchs einfach, ich bin sicher das Forum wird dir (und mir) helfen!!!

    MfG, feiadragon



  • feiadragon schrieb:

    HI auch,

    ich habe jetzt auch mal mit VC++ angefangen, hab davor aber schon mit blitzbasic, pascal und c rumgespielt...

    Der Befehl ?::TextBox (o.ä.) war für VC++, oder?

    Aber ich find den VC++ Compiler den ich habe nur unübersichtlich aber ich versteh da auch (wenn ich glück hab) die hälfte davon.

    Für das normale C++ habe ich den Dev-CPP von Blodshed, ich find den so ganz gut.
    Wenn du wirklich C++ anfangen willst, dann mach das, ich versuchs ja auch, aber meine erste Sprache war BlitzBasic und da mach ich auch erst n Strategiespiel. Also für kleine Games is das mit sicherheit schneller!!!

    Versuchs einfach, ich bin sicher das Forum wird dir (und mir) helfen!!!

    MfG, feiadragon

    Scheinbar hast Du also auch ein "Anfänger-Problem"... mir ist nur leider nicht ganz klar welches...?!? 😕



  • Die Rezesionen sind ja ausgezeichnet, ich überlege gerade, ob ich mir das Buch nicht auch noch zulege, auch wenn es nur als Nachschlagwerk dient. 😉 .
    Ich habe vor einem Jahr mit dem Programmieren angefangen, und bin jetzt bei DX, und das Wichtigste ist, dass man alles versteht, was man schreibt, deswegen programmiere ich mir gerade meine eigene Spiele-Engine, weil ich halte nichts von vorgegebenen Quellcodes, denn meißtens findet man doch nicht so richtig rein in den Prog.-stil des Autors.
    Aber wenn das Buch wirklich so gut ist, wie die Rezesionen sagen, dann ist es die perfekte Methode, mein Wissen in C++ zu vollenden! 😃 !

    Dieser Artikel hat zwar nichts mit dem eigentlichen Thema zu tun, aber ich kann auch nicht sagen, welches Buch du kaufen sollst, ich weiß nur, dass es der Beschreibung nach das optimale Buch für dich(tiger888) ist!

    MfG Mastermind.



  • Dank der guten Rezensionen habe ich es mir ja auch gekauft.



  • MASTERMIND112 schrieb:

    Die Rezesionen sind ja ausgezeichnet, ich überlege gerade, ob ich mir das Buch nicht auch noch zulege, auch wenn es nur als Nachschlagwerk dient. 😉 .

    Echt? Hat es?
    Ich find's scheiße.
    Zudem sie die typischen "Zweier-Komplement-Fehler" machen IIRC.
    Nicht gerade sehr profihaft... 😉



  • Kauf es doch einfach und im Zweifelsfall kannst es über amazon ja wieder verkaufen.
    Habe mich auch schon das ein oder andere mal im Buch vergriffen, man kann nicht
    immer 100% auf die Rezensionen gehen.


Anmelden zum Antworten