【发布时间】:2020-12-11 11:00:50
【问题描述】:
假设您在计算机上玩游戏,使用箭头键或 WASD 移动角色,假设您按住 向上箭头 键/W 和 向左箭头 键/A 一起,如果游戏允许,你的角色会在两者之间移动 >,即使您按住两个中的一个然后另一个之后,同时继续按住第一个,2个中的一个都不会被打断然后忽略。
我知道如何检测用户是否按下了箭头键/字母,
#include <iostream>
#include <conio.h>
using namespace std;
int main() {
while (1) {
int ch = getch();
if (ch == 224) {
ch = getch();
switch (ch) {
case 72: cout << "up\n"; break;
case 80: cout << "down\n"; break;
case 77: cout << "right\n"; break;
case 75: cout << "left\n"; break;
default: cout << "unknown\n";
}
}
else
cout << char(ch) << '\n';
}
}
但我找不到方法来做我在这个问题开头提到的事情
感谢任何尝试提供帮助
【问题讨论】:
-
添加了windows 标签,因为
conio.h是一个MS-DOS 库。如果它不正确,请随时恢复它。 -
如果确实是windows,那么stackoverflow.com/questions/2067893/c-console-keyboard-events或者问题实际上是关于DOS的?
-
@Yksisarvinen,我实际上是在 Visual Studio 2019 中的 Windows 中编写代码,但我不是在编写 Windows 程序,我不使用 WinAPI,我认为是跨平台的,而不是
getch()我使用_getch()bcs 否则我会出错 -
跨平台 C++ 只有基于行的字符 I/O(conio.h 不是标准头文件)。即使无需每次都按 Enter 键来获取单个字符,也取决于平台。更不用说允许您识别同时按键的按键事件了。所以...我猜是选一个平台?
标签: c++ windows input arrow-keys