我在for
此代码末尾附近的循环有问题。
该循环用于刽子手游戏,本质上循环char
使用密码词在数组中循环,并将用户猜测与char
数组中的每个元素进行比较。如果找到,则更新输出以显示该字母并将计数器重置为 0,否则如果计数器等于密码字的长度,则表示循环未找到该字母,char
并且都应在显示中加一(对于刽子手绞刑架)并将错误的猜测放入错误的猜测数组中。
我在这里遇到的问题是,在大多数情况下,循环按预期工作,但有时它会读取一个正确的答案,因为它既正确又仍然将它放在错误的猜测数组中,以及增加绞刑显示值。
它看起来是随机的,而且只有在我玩第二场比赛时才会这样做。我认为这是计数器的问题,但我在循环开始时将其重置为 0,如果找到正确答案,则在循环while
中重置为零。for
所以我不知道为什么它将正确答案读为正确并仍将其放在wrongChoice
数组中,因为此时的计数器不应该是wordLength - 1
. 这是代码:
while(!winner)
{
count = 0;
for(int i = 0; i < secretWord.length(); i++)
cout << userPrompt[i] << " ";
cout << "\n" << endl;
cout << "Wrong Guess: ";
for(int i = 0; i < (secretWord.length() + 6); i++)
{
cout << userChoice[i] << " ";
}
cout << "\n" << endl;
displayGallows(display);
if(display == 6)
{
cout << "Sorry, you lost!" << endl;
break;
}
cout << "Enter a letter: ";
cin >> userGuess;
while(!cin)
{
cin.ignore();
cin.clear();
cin.sync();
cout << "Error reading input character! Try Again!" << endl;
cout << "Enter a letter: ";
cin >> userGuess;
}
guessCount++;
cin.ignore();
for(int i = 0; i < secretWord.length(); i++)
{
if(word[i] == tolower(userGuess))
{
userPrompt[i] = tolower(userGuess);
count = 0;
}
else if(count == (wordLength - 1))
{
display++;
userChoice[guessCount - 1] = toupper(userGuess);
}
count++;
}
winner = checkWin(word, userPrompt, display, secretWord);
}
again = playAgain();