我正在尝试编写一个简单的刽子手游戏。我试图让程序运行直到有人猜出这个词,但只给他们 6 次打击。所以基本上,只有当人们猜到字符串中不存在的字母时,计数器才会递增。我还希望当人们弄错时它显示“再试一次”。
由于某种原因,它没有按照我想要的方式工作。它多次打印“重试”,而不是一次,而且我无法正确地了解计数器情况。
#include <iostream>
#include <string>
using namespace std;
int main(){
string hidden;
string answer;
char guess;
int counter = 0;
cout << "Give me a word (5-15 chars): ";
cin >> hidden;
int length = hidden.length();
for (int i = 0; i < length; i++)
answer.insert(i,"*");
do {
cout << "The Word is: " << answer << endl;
cout << "What is your guess: ";
cin >> guess;
for (int i = 0; i < hidden.length(); i++) {
if (guess == hidden[i]) {
answer[i] = guess;
cout << "Correct Guess!" << endl;
}
else {
cout << "Try again!";
counter++;
}
}
if (answer == hidden) {
cout << "You have guessed the word!";
break;
}
} while (counter < 7);
cout << "Game over: >>" << answer << "<<";
}
这里是如何做到这一点
bool any_right = false;
for (int i = 0; i < hidden.length(); i++) {
if (guess == hidden[i]) {
any_right = true;
answer[i] = guess;
}
}
if (any_right) {
cout << "Correct Guess!" << endl;
}
else {
cout << "Try again!";
counter++;
}