在 C++ 中检测按键时遇到问题
Having problems detecting keypress in c++
我正在尝试用 C++ 制作一个简单的游戏,为此我必须检测按键(特别是对上、下、左和右感兴趣)。为此,我做了以下工作
#include <iostream>
#include <conio.h>
using string = std::string;
const int K_UP = 72;
const int K_DOWN = 80;
const int K_LEFT = 75;
const int K_RIGHT = 77;
string get_pressed()
{
if (K_UP == _getch());
{
return "UP";
}
if (K_DOWN == _getch());
{
return "DOWN";
}
if (K_RIGHT == _getch());
{
return "RIGTH";
}
return "LEFT";
}
int main()
{
cout << "MOVING" << get_pressed() << endl;
}
但是,无论我按什么,输出都是"MOVING UP"。另外,当我在 "how to detect keypresses" 上阅读时,我读到 72 是 windows 给上键的数字,但是当我尝试打印 _getch()
然后按向上键,它给我 244 并且它对右、左和下也是如此。我对这里发生的事情感到困惑,我们将不胜感激。谢谢
您(可能)将键码与 ascii 码混淆了。 c/c++ 方法基本上只支持键的 ascii 代码,而您正在阅读的文档是针对原始键代码的。
例如,有一些 API 可以读取 Windows 上的原始键码,您可能无论如何都需要求助于它们,否则您可能会发现您遇到了缓冲 io,其中键未被读取直到按下换行符。
在 unix 或终端仿真器中,箭头和编辑键将生成(可能)一个转义序列,一系列以代码 31 开头的 ascii 代码,用于转义。 termcap 库应该可以帮助您解码这些。
我正在尝试用 C++ 制作一个简单的游戏,为此我必须检测按键(特别是对上、下、左和右感兴趣)。为此,我做了以下工作
#include <iostream>
#include <conio.h>
using string = std::string;
const int K_UP = 72;
const int K_DOWN = 80;
const int K_LEFT = 75;
const int K_RIGHT = 77;
string get_pressed()
{
if (K_UP == _getch());
{
return "UP";
}
if (K_DOWN == _getch());
{
return "DOWN";
}
if (K_RIGHT == _getch());
{
return "RIGTH";
}
return "LEFT";
}
int main()
{
cout << "MOVING" << get_pressed() << endl;
}
但是,无论我按什么,输出都是"MOVING UP"。另外,当我在 "how to detect keypresses" 上阅读时,我读到 72 是 windows 给上键的数字,但是当我尝试打印 _getch()
然后按向上键,它给我 244 并且它对右、左和下也是如此。我对这里发生的事情感到困惑,我们将不胜感激。谢谢
您(可能)将键码与 ascii 码混淆了。 c/c++ 方法基本上只支持键的 ascii 代码,而您正在阅读的文档是针对原始键代码的。
例如,有一些 API 可以读取 Windows 上的原始键码,您可能无论如何都需要求助于它们,否则您可能会发现您遇到了缓冲 io,其中键未被读取直到按下换行符。
在 unix 或终端仿真器中,箭头和编辑键将生成(可能)一个转义序列,一系列以代码 31 开头的 ascii 代码,用于转义。 termcap 库应该可以帮助您解码这些。