我15岁,我正在尝试制作游戏(很好,很意外),我想捕捉按键(也使用该功能进行密码输入)。这是代码:
StructReturn getCharacter() {
StructReturn ReturnValue;
char input[2];
for (int a = 0; a < 2; a++) {
input[a] = _getch();
}
ReturnValue.a = input[0];
ReturnValue.b = input[1];
std::cout << (int)ReturnValue.a << ", " << (int)ReturnValue.b << std::endl;
return ReturnValue;
}
您不必告诉我有关
ReturnValue.a = input[0];
ReturnValue.b = input[1];
,这只是原始代码的缩写版本,因此在原始代码中更容易以这种方式阅读...
现在,当我在vs 2017(社区)中运行相同的代码时,得到的输出如下:
97, 0 //a
98, 0 //b
99, 0 //c
100, 0 //d
(一按,给我两个字符),如果我在DEV-C ++上运行它,则输出如下:
97, 98 //a, b
99, 100 //c, d
(一按,给我一个字符)。
我不知道这是怎么回事...能请你解释一下。谢谢!
编辑: getch returns 2 characters when I type one,感谢您提供此链接,但它仍然无法回答我的原始问题,只是说这是一个错误:为什么当我运行相同的代码时会有不同的结果在VS 2017和DEV-c ++上。 (应该是相同的结果,对吧?... VS 2017中的c ++和DEV-c ++中的c ++)
PS。
a)我需要使用_getch()
之类的东西,因为我想捕获按键输入而不将其输出到控制台,以便我可以检测输入和输出密码的*并在其中移动游戏角色带有“ a”,“ w”,“ s”,“ d”的地图。
b)“ vs 2017”方式对我来说更好,因为这样我甚至可以捕获“向下箭头”,“向上箭头”等等。
c)对不起,我的英语。