[英]How to get direct keyboard input in C++?
我目前正在Windows中用C ++编写游戏。 到目前为止一切都很好,但是我的菜单看起来像这样:
1,往北走
2.往南走
3.东行
4,往北走
5,库存
6,退出
插入选择-
它工作正常,但我已经使用了一段时间,希望您可以使用向上和向下箭头进行导航。 我将如何去做呢?
提前考虑
您是否考虑过使用控制台UI库(例如ncurses) ?
在Windows中,您可以使用通用的kbhit()
函数。 根据是否有键盘击中,此函数返回true / false。 然后,您可以使用getch()
函数读取缓冲区中存在的内容。
while(!kbhit()); // wait for input
c=getch(); // read input
您也可以查看扫描代码。 conio.h
包含必需的签名。
您可以使用GetAsyncKeyState 。 它使您可以从箭头,功能按钮(F0,F1等)和其他按钮直接获得键盘输入。
这是一个示例实现:
// Needed for these functions
#define _WIN32_WINNT 0x0500
#include "windows.h"
#include "winuser.h"
#include "wincon.h"
int getkey() {
while(true) {
// This checks if the window is focused
if(GetForegroundWindow() != GetConsoleWindow())
continue;
for (int i = 1; i < 255; ++i) {
// The bitwise and selects the function behavior (look at doc)
if(GetAsyncKeyState(i) & 0x07)
return i;
}
Sleep(250);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.