เกมทายคำเทอร์โบพร้อม do/ while loop

ฉันได้สร้างโปรแกรมง่ายๆ ใน 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