Features zum Spiel



  • Hi,

    hast Du den Code schonmal compiliert??
    Also ich denke dass Dein Prog gar nicht startet weil

    const string username="eingabe"; 
      cout<<"Please enter your name: "<<endl;   // Nameeingabe 
      cin>>eingabe;
    

    falsch ist. Schau Dir einmal an was Du genau in der cin Zeile machst 🙄
    Tip: Deine Variable heißt username und darf nicht const sein!! 😉

    Denk, dran Variablen nicht mit Großbuchstaben zu benennen ...

    cout << "Hinter diesem Text steht Dein Name" << username << endl; // und ein Zeilenumbruch hinterher
    

    Legolas

    edit: hoppla, zu lange nicht aktualisiert 🙂



  • markusgamer schrieb:

    if (NAMEAA=="abc def"||NAMEAA=="ABC DEF"||NAMEAA=="Abc Def")
        cout<<">That's right,/* wie mache ich das hier */username!\n\n";
      else
        cout <<">That's wrong\n\n";
    

    und was machst du wenn der benutzer "aBc def" oder "aBC dEf" oder "abc dEf"
    oder...
    eingibt?



  • Also,

    das mit dem << eingabe << klappt nicht, allerdings wenn ich << username << nehme dann schon.
    Wie hätte ich das cin>> eingabe sonst machen sollen?
    Kannst du mir das nochmals erklären?

    Und, jedesmal wenn ich 2 Wörter bei der Lösung habe, dann schliesßt das dos fenster sich.
    Also, muss ich da was für die Leertaste eingeben, ein Zeichen?

    Und wie ändere ich die Hintergrundfarbe der DOS Console + die Schrift (also
    das es schon gemacht wird).

    VIELEN VIELEN DANKE LEUTE!



  • #include <iostream>  
    #include <string>  
    #include <cctype>  
    #include <algorithm>  
    
    using namespace std;  
    
    bool case_insensitive_compare (char a, char b)
    {
       return tolower(a) == tolower(b);
    }
    
    int main ()  
    {  
      cout <<"Thanks very much for downloading abc quiz!\n" 
           <<"The game was developed by Markus R.\n" 
           <<"To start the game press 'Enter'"<<endl;  
      cin.get(); // das tuts auch 
    
      string username; 
      cout << "Please enter your name: "<<endl;
      cin >> username;
      cout << "Live from your desktop, abc quiz starts right now!"<<endl;
    
      string answer;  
      cout<<"Frage skajbdk?"<<endl;  
      cin>>answer;  
      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";
    

    vielleicht sowas?



  • Dass es mit cin>>eingabe nicht geht ist doch klar, das habe ich ja versucht Dir zu erklären. Deine Variable heißt username!! nicht "eingabe". "eingabe" war der Wert den Du vorhin der Variablen username zugewiesen hast.
    also kannst Du nur schreiben cin>>username.

    Farben und so Zeug, benutz mal die Suche ... da findest Du so einiges hier.

    Beim Rest hat Helium ja schon was gesagt. Wobei es ein strcmp() auch getan hätte, oder?

    Legolas



  • Hallo,

    das hat nichts gebracht.
    Immer noch raus wenn ich abc def als lösung eintippe.



  • 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...


Anmelden zum Antworten