In meinem Henker Spiel habe ich Probleme, das Spiel zu beenden. Mit meiner Header-Datei I definiert haben ...So beenden Sie Hangman-Spiel mit "Int promptYN (String-Antwort)" in C++
#define PLAY 1 #define STOP 0 #define ERROR -1
... und dann I definiert Funktion
int promptYN(string reply)
{
reply = strToUpper(reply);
if (reply == "YES", "OK", "SURE", "Y")
return PLAY;
else if (reply == "NO", "QUIT", "STOP", "TERMINATE", "N", "Q")
return STOP;
else
return ERROR;
}
... nun, dass die Funktion in Haupt egal, was die aufgerufen wurde Benutzertypen Das Hangman-Spiel läuft immer, auch wenn ich mit "NEIN", "QUIT", "STOP", "TERMINATE", "N", "Q" antworte.
Hier ist meine While-Schleife, die ich benutze, um zu versuchen und das Spiel zu spielen, ich brauche nur Hilfe herauszufinden, wenn der Benutzer mit "Y" reagiert, dann spielt das Spiel, "N" dann stoppt das Spiel oder ERROR und das Spiel wird zurückgesetzt, um die Frage erneut zu stellen. Vielen Dank!
cout << "Do you want to play hangman? (y or n): ";
cin >> userReply;
gameStatus = promptYN(userReply);
while (gameStatus != STOP)
{
if (gameStatus == PLAY)
{
chances = 0;
cout << "Let's Play\n\n";
guessWord = getNextWord(); // Function call (randword.h)
guessWord = strToUpper(guessWord); // Function call (MyFuncts.h)
cout << "\nWord to Guess: " << guessWord << endl;
cout << endl << h1;
while (wrong != 6) // Function to find out which hangman board to print to user
{
cout << "\nEnter a letter to guess: ";
cin >> gLetter;
gLetter = toupper(gLetter);
cout << "You entered: " << gLetter << endl << endl;
cout << gLetter << " is NOT in the word to guess.";
wrong++;
if (wrong == 0)
cout << endl << h1 << endl;
if (wrong == 1)
cout << endl << h2 << endl;
if (wrong == 2)
cout << endl << h3 << endl;
if (wrong == 3)
cout << endl << h4 << endl;
if (wrong == 4)
cout << endl << h5 << endl;
if (wrong == 5)
cout << endl << h6 << endl;
if (wrong == 6)
cout << endl << h7 << endl;
}
}
else if (gameStatus == STOP)
{
cout << "Goodbye\n";
}
else
{
cout << "Error - please enter (y or n)\n";
}
cout << "Do you want to play hangman? (y or n): ";
cin >> userReply;
gameStatus = promptYN(userReply);
}
'if (Antwort ==" YES "," OK "," SURE "," Y ")' tut nicht, was Sie denken, dass es tut. Der Komma-Operator wertet alle Ausdrücke aus, gibt aber nur das Ergebnis des letzten zurück (in diesem Fall ein Zeiger auf das String-Literal "Y"). Da dies ein Wert ungleich null ist, wird dieser Test immer erfolgreich sein. Wenn Sie mit mehreren Strings vergleichen möchten, müssen Sie jeden einzeln vergleichen. –