我目前正在用Windows编写一个C ++游戏。到目前为止,一切都很顺利,但我的菜单看起来像这样:
1.Go North
2.Go South
3.GoGo
4.Go North
5.Inventory
6.Exit
插入选项 -
它工作正常,但我一直在使用那种东西而宁愿使用向上和向下箭头导航。我该怎么做呢?
提前问候
答案 0 :(得分:4)
您是否考虑使用控制台UI库,例如ncurses?
答案 1 :(得分:2)
在Windows中,您可以使用通用kbhit()
功能。此函数返回true / false,具体取决于是否有键盘命中。然后,您可以使用getch()
函数读取缓冲区中的内容。
while(!kbhit()); // wait for input
c=getch(); // read input
您还可以查看扫描代码。 conio.h
包含所需的签名。
答案 2 :(得分:0)
您可以使用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);
}
}