我在此代码末尾附近遇到for
循环问题。
循环用于刽子手游戏,并且循环基本上循环通过具有秘密字的char
数组,并将用户猜测与char
数组中的每个元素进行比较。如果找到它,它会更新输出以显示字母并将计数器重置为0,否则如果计数器等于密码字的长度,则表示循环不找到{{ 1}}它应该向显示器添加一个(对于刽子手绞架)和将错误的猜测放在错误的猜测数组中。
我在这里遇到的问题是,在大多数情况下,循环按预期工作,但偶尔它会读取正确的答案,因为它仍然是正确的和将它放在错误的猜测数组中,以及增加绞架显示值。
这似乎是随机的,只有当我玩第二场比赛时。我认为这是计数器的一个问题,但我在char
循环开始时将其重置为0,并在while
循环中重置为零如果找到了正确答案。
所以我不知道为什么它会将正确的答案读成正确并仍然放在for
数组中,因为那时的计数器不应该是{{1 }}。这是代码:
wrongChoice
答案 0 :(得分:0)
这里有一个猜测,但它是否只是/总是第一个给你问题的角色?
如果userGuess位于单词[]某处,则使用count作为检测器,但如果它位于word []中的第一个字符,则count仍然以与第一个字符错误时相同的方式递增。因此,在循环结束时,也会选择错误选择的分支。真的你想要的是在循环结束后检查......不是循环的每次迭代!
试试这个:
bool found = false;
for(int i = 0; i < secretWord.length(); i++)
{
if(word[i] == tolower(userGuess))
{
userPrompt[i] = tolower(userGuess);
found = true;
}
}
if( !found )
{
display++;
userChoice[guessCount - 1] = toupper(userGuess);
}