Решил написать консольного Марио и столкнулся с такой проблемой: как отлавливать событие нажатия стрелок на клавиатуре, скажем через 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
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;
}
}
}
}
Комментариев нет:
Отправить комментарий