所以,这里是一个倒计时。我的目标是下一个:如果您在给定的时间(ent_sec)内不做任何事情,倒计时将在一段时间后达到 0 并返回 0,但是如果您按下字母 c(代码:99)倒计时停止并且您可以输入您的 PIN 码并返回。我已经通过以下方式解决了 Windows.h 的问题:
if (GetAsyncKeyState(VK_SPACE))
这解决了问题是通过WIN32 API(在这种情况下你必须按SPACE,而不是字母'c'),但它显示我不能使用任何WinAPI函数(学校项目)。所以我将此行重写为以下内容:
if (getchar() == 99)
但不幸的是,它不能以正确的方式工作,导致我的倒计时几乎每一秒都会停止,直到我没有按一些“错误”键(例如我按“x”,然后倒计时继续,但在下一个秒它再次停止)......在第一个解决方案(win func)中,这个问题不存在......那么我该如何解决呢?谢谢。这是我的函数的完整代码:
unsigned Timer::DownCount
{
int ent_sec = this.time;
cout << "The counter has started (" << this.time << "sec), press 'C' to enter your PIN code: " << endl;
while (ent_sec >= 0)
{
if (getchar() == 99) // c letter's code is 99 in ANSI (or ASCII dunno)
{
unsigned code;
cout << "PIN code: ";
cin >> code;
return code;
}
else
{
SecCounter(1); // this function counts 1 secundum
cout << ent_sec << endl;
ent_sec--;
}
}
return 0;
}