我正在尝试开发一个简单的基于文本的刽子手游戏,主游戏循环以提示输入每个字母的猜测开始,然后继续检查该字母是否在单词中,如果是则结束生命不是。但是,当我运行游戏时,每次都会出现两次提示,并且程序不会等待用户输入。它还夺走了一条生命(如果输入正确,则一条生命,如果不是,则两条生命),因此无论它接受什么都与先前的输入不同。这是我的游戏循环,稍微简化了一点:
while (!finished)
{
printf("Guess the word '%s'\n",covered);
scanf("%c", ¤tGuess);
i=0;
while (i<=wordLength)
{
if (i == wordLength)
{
--numLives;
printf("Number of lives: %i\n", numLives);
break;
} else if (currentGuess == secretWord[i]) {
covered[i] = secretWord[i];
secretWord[i] = '*';
break;
}
++i;
}
j=0;
while (j<=wordLength)
{
if (j == (wordLength)) {
finished = 1;
printf("Congratulations! You guessed the word!\n");
break;
} else {
if (covered[j] == '-') {
break;
}
}
++j;
if (numLives == 0) {
finished = 1;
}
}
}
我认为问题是 scanf 认为它在没有的情况下吸收了一些东西,但我不知道为什么。有谁有想法吗?我在 Mac OS X 10.5 上使用 gcc 4.0.1。