[英]How to detect if any keyboard key other than a specific keyboard key has been pressed in C++?
[英]How to count the times a key has been pressed in c++
我在 Visual studious 2017 (visual c++) 中制作游戲,你必須反復按空格鍵才能賺錢。 但是我遇到了一個問題,當你快速按下空格鍵時編譯器跟不上,所以它算錯了。 我試着做一些研究,但我得到的只是這個,正如我之前所說的,它跟不上。
到目前為止,這是我得到的:
int click_systm()
{
char spacebar;
while (1)
{
if (GetAsyncKeyState(VK_SPACE) != 0)
{
if (GetKeyState(VK_SPACE) == 0)
{
spacebar = _getch();
int value = spacebar;
if (value == 32)
{
money++;
cout << money << endl;
}
}
}
}
}
如果您在這里完成,感謝您抽出寶貴時間閱讀本文:)
編譯器是將你的 C++ 代碼編譯成一些二進制文件的東西。 CPU 和操作系統應該能夠跟上人類速度空格鍵粉碎的速度。 問題可能來自您在控制台中運行您的軟件(請參閱 user253751 留下的評論)。
std::cout 由於打印需要時間而大大減慢了程序的速度。 正如評論中提到的那樣,將您的打印拆分到不同的線程中。 您還可以添加std::ios_base::sync_with_stdio(false);
如果您確實需要,可以加快速度。
對於那些有同樣問題的人,我已經找到了我自己問題的答案。 此處的代碼將執行相同的操作,但響應速度更快,並且會跟上按鈕混搭。
int click_systm()
{
char spacebar;
while (1)
{
spacebar = _getch();
if (spacebar == 32)
{
money++;
cout << money << "\n";
}
}
}
感謝所有試圖幫助我的人,尤其是 MrScriptX 和 Antonio。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.