【发布时间】:2014-01-04 11:19:29
【问题描述】:
我在此代码末尾附近的 for 循环遇到问题。
该循环是针对刽子手游戏的,本质上,该循环通过带有密码字的char 数组循环,并将用户猜测与char 数组中的每个元素进行比较。如果找到,则更新输出以显示该字母并将计数器重置为 0,否则如果计数器等于密码字的长度,则表示循环 未 找到 @987654324 @ 并且它应该在显示器上加一(对于绞刑架)并且将不正确的猜测放入错误的猜测数组中。
我在这里遇到的问题是,在大多数情况下,循环按预期工作,但偶尔它会读取一个正确的答案,因为它既正确 并且仍然正确将其放入错误的猜测数组中,并增加绞刑架显示值。
这似乎是随机的,而且只有在我玩第二个游戏时才会这样做。我认为这是计数器的问题,但我在 while 循环开始时将其重置为 0,并在 for 循环中重置为零 if 找到正确答案.
所以我不知道为什么它会将正确答案读作正确并仍将其放在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();
【问题讨论】:
-
听起来像是您选择的调试器的工作。
-
其实,这只是我编程的第一个学期,我们的老师并没有在意教我们如何使用调试器.....我曾尝试使用 Visual Basics 调试器,但自从我我是一个完全的新手,我没有运气试图自己弄清楚那个调试器,我们的老师说我们下学期学习如何使用调试器:/很难自己弄清楚所有这些东西......我去这些板子,因为它需要至少 5 天的时间来回复我们的电子邮件查询,到那时项目或作业已经到期
-
说了这么多,这就是为什么我在发帖时尽量解释它,包括我假设代码应该如何运行,以表明我正在尝试从这些中学习,而不仅仅是得到一个快速的答案继续前进......我真的很想知道/理解编码,而不仅仅是得到一个快速的 A
-
编辑您的帖子并稍微清理一下您的代码...尤其是在您弄清楚答案后。您可能会收回您的反对票...(cout
-
缺少调试器,最好的办法是找出你认为出错的变量的值。这样您就可以缩小出错的范围。
标签: c++ loops for-loop while-loop loop-counter