我正在用C ++编写游戏。为此,我需要检测同时按下或按住的多个键,或者检测按键和释放键的事件。
例如,如果我同时按住 up 和 right 键,我希望能够检测到并沿对角线移动游戏。此外,当前,如果我按住 right 键,并按 up ,则它不再识别出已按住 right 。我需要一种方法来找到真正释放 right 键的时间,以便它不会像这样被打断。
我知道sdl2
可以识别按下或按住的多个键,但这需要创建一个窗口,并且我希望它完全在终端中。
getch()
中的 curses/ncurses
对此无效。
我可以用来做什么?如果可能的话,我想避免使用Allegro。
答案 0 :(得分:0)
您没有提及您现在如何读取按键输入以及如何处理输入,因此这只是有关如何处理按键输入的一般建议。
当您检测到或处理特定按键的按键按下(按键按下)事件时,请设置一个标志(例如keyflags = keyflags | KEY_RIGHT)以指示按键已按下,并取消设置(删除)按键按下事件上的标记。如果直接按按键操作,这可能会解决您今天遇到的问题。