Features zum Spiel



  • Was erwartest Du?? Ohne eine Schleife wirst Du immer rausgeworfen!!



  • Hallo!

    mach mal ganz hinten noch ein

    cin.get();

    dran, damit er auf die nächste Eingabe wartet.
    Sonst beendet er das Programm sofort.

    Ansonsten wird mit

    cin >> answer;

    nur bis zum ersten Leerzeichen eingelesen. Wenn Du bis zum Enter einlesen willst solltest Du es mit getline versuchen!

    Viel Erfolg!
    Jester



  • danke, werde das mal probieren

    das mit der schleift kapiere ich nicht - c++ ist wirklich kompliziert für anfänger



  • nein ein strcmp hätte es nicht getan. 1. strcmp kann nicht mit std::string umgehen. Das ist zwar das kleiner übel wegen std::string::c_str(), aber strcmp ist case-sesitiv, wogegen meine Version das nicht is.

    string answer;   
      cout<<"Frage skajbdk?"<<endl;   
      getline(cin, answer);   // wegen der lerzeichen
    
      if (equal(answer.begin(), aswer.end(), "abc def", case_insensitive_compare)) 
        cout << ">That's right, " << username << "\n\n";  
      else   
        cout <<">That's wrong\n\n";
      cin.get();  // damit du noch was davon hast
    


  • Hi,

    also,

    dieses cin.get(); bedeutet soviel wie: drücke eine beliebig taste, oder?
    leider geht das bei mir nicht, warum weiß ich auch nicht -es schließt einfach so.

    Das getchar allerdings geht, wenn man <stdio.h> inkludiert.

    Noch ne Frage( ich weiß):
    Wenn ich jetzt ein Punktesystem intergrieren will, wie löse ich das?
    Geht das mit ner Bedingung, oder brauche ich ne Schleife( damit kenne ich mich noch nicht so aus, werde aber lernen...)
    Ihr braucht mir sicherlich keinen Code geben wenn ihr nicht wollt, darum versuche ich es alleine, nett wäre nur wenn ihr mit helfen könntet wie man ein Punktesystem einrichtet.

    Danke! 👍



  • hi 😋
    probiers mal mit
    cin.ignorde(cin.rdbuf()->in_avail()) vor dem cin.get()

    ein punktesystem, lege einmal fest:
    was brauche ich, um die punkte zu speichern:
    reicht eine variable vom typ int, die also Ganzzahlen aufnehmen kann?
    Müssen die Punkte permanent gespeichert werden (in einer Datei zb)? -> da musst du etwas über filestreams lernen. kommt in deinem buch/kurs sicher erst etwas später.
    übernimm dich am anfang nicht, das kann frustrierend sein!



  • sorry ist nicht böse gemeint aber du hast nicht sehr viel Ahnung von C++! Bevor du gleich ein Quiz-Spiel Programmierst, kauf dir doch mal ein buch, oder schau dir mal ein paar tutorials an! mein tipp 🙂

    grüße EGF



  • klar kann ich c++ noch nicht,
    nur wollte ich am anfang halt mal einen kleinen "erfolg", denn wenn ich irgendwelche taschenrechner mache, befriedigt mich das halt net,

    klar werde ich noch weiter in meinem tutorial lernen, aber so ein kleines nettes quiz hat doch was für anfänger oder nicht?



  • markusgamer schrieb:

    klar kann ich c++ noch nicht,
    nur wollte ich am anfang halt mal einen kleinen "erfolg", denn wenn ich irgendwelche taschenrechner mache, befriedigt mich das halt net,

    klar werde ich noch weiter in meinem tutorial lernen, aber so ein kleines nettes quiz hat doch was für anfänger oder nicht?

    lern erstmal die grundlagen 😉

    nur mein tipp 🙂



  • Helium schrieb:

    if (equal(answer.begin(), aswer.end(), "abc def", case_insensitive_compare))
    

    Das ist aber nicht ganz so simpel, wie es aussieht. Wenn answer z. B. "abc def\0xyz" wäre, hättest du schon ein Problem, weil er zum Vergleichen hinter das Ende der Stringkonstante gehen würde. Ich halte es ja für ziemlich sicher, dass answer nie \0 enthält, aber spätestens wenn du zwei verschieden lange strings mit der Methode vergleichst, ist es nicht mehr portabel sicher. Und da es eh schon eine viel zu lange Zeile ist, bietet sich eine Extrafunktion doch an:

    bool compare_strings(const std::string& a, const std::string& b)
    {
        if (a.length() != b.length())
            return false;
        return equal(a.begin(), a.end(), b.begin(), case_insensitive_compare);
    }
    


  • Hallo,

    ich bin mal wieder am ausflippen:
    nachdem ich mein quit fertig habe, wieder eine problem:

    in meinem quiz habe ich es so aber ich weiß nicht wie ich das geschafft habe??

    also:

    (so will ich es)namen eingeben:_______

    (so kriege ich es)
    namen eingeben:
    ____________



  • nocheinmal



  • du möchtest sozusagen, dass der Eingabecursor nicht auf einer neuen Zeile erscheint, sondern auf der mit der Frage? Quelltext wäre schön gewesen aber vielleicht geht es auch so...

    Auf die neue Zeile marschiert der cursor offensichtlich nach der Ausgabe von "namen eingeben:" per cout und vor der Texteigabe mit getline(). An dieser Stelle musst du also auch im Quelltext den Fehler suchen. Der Zeilenwechsel passiert höchstwahrscheinlich mit einem "\n" im Ausgabetext oder per "<< endl" am Ende von cout. Wenn du die weglässt sollte es gehen...



  • // Mach einfach statt sowas
    std::cout << "Name eingeben:\n";
    std::cin >> name;
    
    // bzw. sowas
    std::cout << "Name eingeben:" << std::endl;
    std::cin >> name;
    
    //sowas:
    std::cout << "Name eingeben: ";
    std::cin >> name;
    

    edit: Zu spät...



  • Danke!

    ich habe natürlich das\n oder endl wegelassen aber da kamen dann halt irgendwie
    trotzdem net das raus wie ihr richtig gesagt habt.

    also es geht



  • Hä? also das "Danke" hab ich verstanden, aber den Rest nicht. 😉 Also falls es wichtig war - bitte noch einmal in richtigem Deutsch.



  • also deins geht, meines aber nicht, warum weiß ich net

    aber egal, is alles oki dokey



  • irgdnwie kompliziert:

    Mein code ging nicht
    Euer ging



  • #include <iostream>
    #include <stdlib.h>
    #include <string>
    using namespace std;
    
    int main()
    
    {
      cout <<"Willkommen beim 'Attentat auf den Presidenten'" <<endl;
      cout <<"Hier bist du der Polizist des Spieles!\n\n";
      cout <<"Drücke 'Enter' um mit dem Abenteuer zu beginnen!" <<endl;
      cin.get();
      string spielername;
      cout <<"Alles begann so..." <<endl;
      cout <<"Detective Brown:...Sagen Sie mir ihren Namen..." <<endl;
      cout <<"Ich bin ";
      getline(cin, spielername);
    
    cout <<"Wie Sie wissen wurde der Sever, indem die Dokumente über das Attentat" <<endl;
    cout <<"auf President Bush waren, gecrackt.  " <<endl;
    cout <<"Nun haben Sie die Aufgabe die Cracker aufzuspüren und sie zu töten.\n\n";
    cout <<"[WÄHLEN SIE DEN 1. SCHRITT]\n";
    cout <<"[1] Hmm, ich muss ersteinmal an den Server um Spuren zu sichern" <<endl;
    cout <<"[2] Ich sollte sofort President Bush informieren, dass ein Attentat auf ihn geplant ist." <<endl;
    cout <<"[3] Die Sache wird mir zu heiß, ich flüchte ins Ausland!" <<endl;
    
    int schritt1;
    cout<<"Auswahl [";
    cin>>schritt1;
    cout<<"]";  //Warum wird hier eigentlich nicht ausgeben [1], sondern [1
    //] ---- ich habe doch gar kein /n nirgendwo hingemacht, bitte um erklärung :)
    
    if (schritt1==1)
      cout<<"Angekommen im Servergebäude, macht sich Detective" <<spielername<<" auch gleich an die Arbeit,..\n";
    if (schritt1==2)
      cout<<"Angekommen vor dem Weißen Haus, versucht " <<spielername<< " den Presidenten zu warnen doch,.\n";  
    
    if (schritt1==3)
      cout<<"Soll ich das wirklich tun? O.k!"<<endl;
      getchar();
      return 0;
    
    }
    

    Und wie löse ich das ä ö Problem bei Dos?



  • Ich bins mal wieder ;)))

    Wie intergriere ich jetzt eingentlich 256 Farben a la Siedler 1 (das ja auch von Konsole
    startet)?
    Ich stell mir das halt so vor:
    Eine Grafik(bmp wahrsch.) hier, dann den quelltext (if, blabla, nächhtes bild,...)


Anmelden zum Antworten