【发布时间】:2020-06-27 20:41:58
【问题描述】:
我正在尝试用 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;
}
但是,无论我按什么,输出都是“向上移动”。另外,当我阅读“如何检测按键”时,我读到 72 是 Windows 为向上键提供的数字,但是当我尝试打印 _getch()
然后按向上键,它给了我 244,它对 rigth、left 和 down 也是如此。我对这里发生的事情感到困惑,任何帮助将不胜感激。谢谢
【问题讨论】:
-
对不起,我不确定它是 Visual Studio 附带的 c++
-
刚刚google了一下turbo c++是什么,肯定不是那个
-
@TedLyngmo Microsoft 已将所有 unix API 声明为非标准,声明了带有 _ 前缀的新版本,并调用了该标准。
-
@GemTaylor Posix 也不是 C++ 标准,这是正确的。 :-)
-
调用 _getch 3 次需要 3 次不同的按键。调用一次并将值保存在变量中。