C ++ - многократное нажатие клавиш или события нажатия / отпускания клавиш - PullRequest
0 голосов
/ 25 октября 2019

Я пишу игру на C ++. Для этого мне необходимо обнаружить одновременное нажатие или удержание нескольких клавиш, а также обнаружение событий нажатия и отпускания клавиш.

Например, если я удерживаю клавиши up и right , я хочу иметь возможность обнаружить это и перемещать игру по диагонали. Кроме того, в настоящее время, если я удерживаю клавишу вправо и нажимаю вверх , он больше не распознает, что вправо удерживается. Мне нужен способ узнать, когда клавиша вправо действительно отпущена, поэтому она не прерывается следующим образом.

Я знаю, что sdl2 может распознавать нажатие или удержание нескольких клавиш, ноэто требует создания окна, и я хочу, чтобы это было полностью внутри терминала.

getch() из curses/ncurses дополнительно не работает для этого.

Что я могу использовать для этого? Я хотел бы избежать Аллегро, если это возможно.

1 Ответ

0 голосов
/ 25 октября 2019

Вы не упоминаете, как вы сейчас читаете ввод с клавиатуры и как вы обрабатываете ввод, так что это всего лишь общий совет о том, как обрабатывать ввод с клавиатуры.

Когда вы обнаруживаете или обрабатываете событие нажатия клавиши (клавиша вниз) для определенной клавиши, установите флаг (например, keyflags = keyflags | KEY_RIGHT), чтобы указать, что клавиша нажата, и снимите (удалите) флаг насобытие keyup. Это может решить проблему, с которой вы сталкиваетесь сегодня, если будете действовать непосредственно на нажатие клавиш.

...