Как обработать нажатия на стрелки С++

102
07 декабря 2021, 12:00

Пишу простенькую игру и хочу сделать движение на стрелки. Пытаюсь словить нажатую клавишу через _getch(). С его помощью ничего не получается, так как при нажатии на любую стрелку переменная инициализируется одним и тем же числом 224. Что я могу делать не так, и какие есть еще варианты (сложно не надо)

int a = _getch();
cout << a;
Answer 1

Для стрелок (и некоторых других не буквенно-цифровых клавиш) генерируется два события - c кодом символа 224 (0xE0) или нулём - в первом, и 72 для стрелки вверх и т.д. во втором (в Windows и DOS).

Т.е., поймав 0xE0, нужно ещё раз сделать _getch()

int a = _getch();
if (a == 0xE0 || a == 0) 
   a = _getch();
cout << a;

Вот нашёл:

When reading a function key or an arrow key, each function must be called twice; the first call returns 0 or 0xE0, and the second call returns the actual key code.

READ ALSO
Получение размера данных C++

Получение размера данных C++

ВопросЕсть функция

81
Правильно ли реализованы IEnumerator&#39;s для чтения CSV?

Правильно ли реализованы IEnumerator's для чтения CSV?

Я реализовал простенький IEnumerable<CSVLine> для чтения CSV файлов

158
Передача active из листа типа GameObject в лист bool

Передача active из листа типа GameObject в лист bool

Объясните как передать active из листа с типом GameObject в лист типа bool ?

221
Prism.WPF &amp; DryIoc, как регистрировать типы с фабрикой?

Prism.WPF & DryIoc, как регистрировать типы с фабрикой?

Доброго времени сутокВозникла проблема с регистрацией типов в IContainerRegistry с фабрикой

146