Я пытаюсь разработать простую текстовую игру с палачом, и основной цикл игры начинается с приглашения ввести предположение для каждой буквы, затем проверяется, есть ли буква в слове, и отнимает жизнь, если она нет. Однако, когда я запускаю игру, подсказка появляется дважды каждый раз, и программа не ждет ввода пользователя. Он также забирает жизнь (одну жизнь, если это был правильный ввод, и две, если это не так), поэтому все, что он принимает, не совпадает с предыдущим. Вот мой игровой цикл, немного упрощенный:
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 думает, что он что-то принял, хотя этого не произошло, но я понятия не имею, почему. Есть у кого-нибудь идеи? Я использую gcc 4.0.1 в Mac OS X 10.5.