4.8.5 获取玩家的猜测
接下来,程序获取玩家的猜测。
- char guess;
- cout << "\n\nEnter your guess: ";
- cin >> guess;
- guess = toupper(guess); //make uppercase since secret word in uppercase
- while (used.find(guess) != string::npos)
- {
- cout << "\nYou've already guessed " << guess << endl;
- cout << "Enter your guess: ";
- cin >> guess;
- guess = toupper(guess);
- }
- used += guess;
- if (THE_WORD.find(guess) != string::npos)
- {
- cout << "That's right! " << guess << " is in the word.\n";
- //update soFar to include newly guessed letter
- for (int i = 0; i < THE_WORD.length(); ++i)
- {
- if (THE_WORD[i] == guess)
- {
- soFar[i] = guess;
- }
- }
- }
- else
- {
- cout << "Sorry, " << guess << " isn't in the word.\n";
- ++wrong;
- }
- }
程序使用文件cctype中定义的函数uppercase()将玩家的猜测转换为大写形式。之所以这样做是因为在比较玩家的猜测与神秘单词时,可以在大写字母之间进行比较。
如果玩家猜测的字母之前已经猜过,程序让玩家重新猜测。如果玩家猜中了某个字母,程序更新目前所猜的单词。否则,程序告知玩家所猜字母不在单词中,并且增加玩家猜错的次数。