【问题标题】:how to make a key start to print immediately after i start holding c++如何在我开始持有 c++ 后立即开始打印
【发布时间】:2021-05-17 08:14:48
【问题描述】:

我正在创建一种赛车游戏,我有箭头键来左右移动汽车(上下箭头不起作用)。但是当你按住左/右时,大约需要半秒钟才能开始。

这里有进一步的解释:

让我们想象这是我的车:

 O
OOO  
 O 
OOO

当你按下 right 时,它会按原样移动(我已经设置好了,所以它会移动一个空格)。但是当你握住它时,大约需要半秒钟才能开始反复移动。

如何让它立即移动?

还有一件事,如果可能的话,我不想更改计算机上的个人设置。

感谢您以后的回答。

【问题讨论】:

  • 这与 C++ 无关。这是由您的操作系统处理的。有关此主题的更多信息,请参阅您的操作系统的技术文档。您将需要使用操作系统中适当的 API 来读取原始键盘状态,并接收原始按键按下/释放,然后根据您的应用程序中的逻辑,尽可能频繁地执行适当的操作。没有交钥匙解决方案,这将需要一些开发工作。
  • 您好,这个答案能解决您的问题吗?如果您有任何问题,请随时告诉我,如果有帮助,请接受。

标签: visual-studio winapi visual-c++


【解决方案1】:

您可能想使用GetKeyStateGetAsyncKeyState(但更可能是GetKeyState)。

其中任何一个都可以让您读取键的状态,因此您将调用它一次以查看是否按下了左箭头键,然后分别查看是否按下了右箭头键(以及是否同时按下了两者。 ..好吧,由您决定在这种情况下该怎么做)。

您还可以决定对当前键盘状态进行采样的频率,以及用户按住按键时的反应速度。如果您尽可能快地对其进行采样,那么很有可能汽车会反应太快而无法很好地控制它。

【讨论】:

  • 是的,getkeystate 运行良好。但是当用户持有时如何更改反应时间?
  • @flyguycolby:当你调用函数时它会告诉你按键的状态,所以如果用户按住按键,每次调用函数时,它都会显示按键仍然按下,并且您对此做出适当的反应。
猜你喜欢
  • 2022-06-15
  • 2017-10-25
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 2016-11-09
  • 2018-11-03
  • 1970-01-01
  • 2011-04-20
相关资源
最近更新 更多