Turbo C игра в угадайку с циклом do/while

Я сделал простую программу на Turbo C, которая действует как игра в угадайку. Игра должна завершиться после того, как пользователь введет 3 неправильных символа или как только будет угадан правильный. Однако это не работает, и я не могу понять, почему. Игра просто закрывается после того, как я ввожу 4 символа (неправильно или нет).

#include <stdio.h>
#include <conio.h>

void main(void)
{
char ch;
int tries = 0;
int win_flag = 0;

clrscr();


printf("Guess the letter: ");

do
{
    ch = getch();
    printf("%c", ch);
    tries++;
    if (ch == 'a')
        win_flag = 1;
    else
        win_flag = 0;
}
while (tries <= 3 || win_flag == 1);

if (tries <= 3)
    printf("\nGame over.");
else if (win_flag == 1)
    printf("\nYou win!");

getch();

}


person user3359196    schedule 05.03.2014    source источник


Ответы (2)


Измените условие цикла как

while (tries <= 3 && win_flag == 0);
person Riz    schedule 05.03.2014

  1. Вы забыли обработать клавиши enter, которые люди нажимают после каждого символа. Так что ваш следующий getch получит их.

  2. Ваш пункт while нарушен. Вы хотите продолжать зацикливаться до тех пор, пока у человека еще остались попытки, а флаг победы по-прежнему равен нулю. Итак: (tries <= 3) && (win_flag == 0)

person David Schwartz    schedule 05.03.2014