私は自分のクラスで Keyboard Trainer というゲームを作成していますが、問題が発生しました。5 から 0 までカウントするループを作成し、文字などの何かが挿入されているかどうかを 1 つの数字ごとにチェックしますが、私のコードでは、入力に反応せずに5から0までカウントするだけです。それに反応するようにしたいのですが、カウントダウンには何もしません。
#include <cstdlib>
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
void countdown(){
for (int o = 5; o >= 0 ; o--)//Countdown timeris, kuris skaiciuoja nuo 5 iki 0
{
cout << o << " ";//Isveda timerio duomenis
Sleep(1000);//Palaukia 1 sekunde
}
}
int main(){
int ivestas_kl, sugeneruotas_kl, ats_neats = 0, taip_ne, Y_N, i = 0, ats = 0, neats = 0;
string taip;
cout << "Sveiki atvyke i Klaviaturos Treniruokli!\n";
cout << "Ar norite pradeti zaidima?(Y/N)?\n" << "Kai paspausite Y, jums atsiras zaidimo taisykles.\n\n";
Y_N = _getch();
if (Y_N == 121)//Patikrina ar Y_N yra Y raide
{
while (Y_N != 110 && i % 2 == 0)//Jei Y_N nera N ir i padalinus is 2 nelieka liekanos
{
i++;
cout << "\tTaisykles\n";
cout << "\t-------------------------------------------------------------------\n";
cout << "\t|Sio zaidimo metu, jus turesite paspausti atsitiktinai sugeneruota|\n\t|klavisa siam tikslui jus turesite 5s. Jei suspesite ji paspausti,|\n\t|jus gausite viena taska ir sitaip taskai bus pridedami po du, jei|\n\t|nesuklysdami atspesite kelis is eiles, bet jei neatspesite vieno,|\n\t|taskai vel prisides po viena ir taip kas 2 spejimus.Trukme- 1min.|\n";
cout << "\t-------------------------------------------------------------------\n";
cout << "Pradeti zaidima?(taip)\t";
cin >> taip;
while (Y_N != 27 && taip == "taip")//Kol Y_N nera ESC ir taip yra lygus taip
{
system("cls");
sugeneruotas_kl = rand() % 78 + 48;//Sugeneruoja betkoki skaciu nuo 48 iki 126
char kl = char(sugeneruotas_kl);//Konvertuoja is int i char
cout << "Spauskite " << kl << " !\n\n";//Parodo koki klavisa paspausti
countdown();
ivestas_kl = _getch();//Paima ivesta simboli
char konv_ivestas_kl = char(ivestas_kl);//Konvertuoja int i char
if (ivestas_kl != 0 && konv_ivestas_kl == kl)//Jei ivestas_kl nera lygus 0 ir konv_ivestas_kl yra lygus ivestam ir jei timerio laikas nesibaige
{
ats++;
cout << "\nTeisingai!\n\n" << "Norint baigti zaidima spauskite ESC.\n";
break;
}
else if (konv_ivestas_kl != kl)
{
neats++;
cout << "\nNespejote.\n\n";
break;
}//Else if pabaiga
}//For pabaiga
Y_N = _getch();
}
}//While pabaiga
}//Pirmo if pabaiga