嗨,我正在用 C++ 创建一个用于游戏分析的小程序(这是一种爱好,我不知道自己在做什么,所以请不要对我抱太大期望),它可以做三件事。
字母:A Times_pressed:14 持续时间:10000ms
到目前为止,这是我的代码,我从计算次数开始,但我无法弄清楚它是如何工作的。当按下“A”键时它增加得非常快,当释放时它停止。这不是我真正想要的。我只想要 +1 的增量,即使我持有它很长时间但在释放时重复下一个 +1 的增量。 任何建议或帮助将不胜感激!
#include <iostream>
#include <windows.h>
int main()
{
int aKeyCount{0};
while (true)
{
if (GetAsyncKeyState('A') & 0x8000)
{
++aKeyCount;
std::cout << aKeyCount << std::endl;
}
}
return 0;
}
之所以在按下“A”键时代码递增得非常快,是因为只要按住该键,GetAsyncKeyState() 就会返回值 1。换句话说,您的代码在循环中每次按下键时都在计数,每秒多次。
添加了一个布尔标志以跟踪之前是否按下了“A”键。
#include <iostream>
#include <windows.h>
int main()
{
int aKeyCount{0};
bool wasKeyPressed{false};
while (true)
{
if (GetAsyncKeyState('A') & 0x8000)
{
if (!wasKeyPressed)
{
++aKeyCount;
std::cout << aKeyCount << std::endl;
}
wasKeyPressed = true;
}
else
{
wasKeyPressed = false;
}
}
return 0;
}