Страницы

Поиск по вопросам

вторник, 12 февраля 2019 г.

Нажатие стрелок С++

Решил написать консольного Марио и столкнулся с такой проблемой: как отлавливать событие нажатия стрелок на клавиатуре, скажем через WinApi или при помощи стандартных средств с++? (Windows)
void Game::input() { Key key; char c; while (true) { cin >> c; switch (c) { case up_key: movePlayer(player_pos + new Position(0, -3)); break; case down_key: movePlayer(player_pos + new Position(0, 1)); break; case right_key: movePlayer(player_pos + new Position(1, 0)); break; case left_key: movePlayer(player_pos - new Position(1, 0)); break; } show(); } }


Ответ

Ну, в консоли Windows можно воспользоваться не входящей в стандарт, но входящей в SDK getch()
#include #include
int main(int argc, const char * argv[]) { int k1, k2; for(;;) { k1 = _getch(); if (k1 == 0xE0 || k1 == 0x00) { k2 = _getch(); switch(k2) { case 0x4B: printf("Left on %s kbd
", k1 ? "main" : "extended"); break; case 0x48: printf("Up on %s kbd
", k1 ? "main" : "extended"); break; case 0x4D: printf("Right on %s kbd
", k1 ? "main" : "extended"); break; case 0x50: printf("Down on %s kbd
", k1 ? "main" : "extended"); break; } } } }

Комментариев нет:

Отправить комментарий