2016-04-26 3 views
0

Я пытаюсь получить последнюю нажатую клавишу клавиатуры, но так как я работаю в игре, код будет запускаться с каждым тиком. Я пробовал getchar(), но это приводит к сбою/зависанию, как я могу добиться этого?Получить последнюю нажатую клавишу клавиатуры

Это будет использоваться только на окнах 7/8/10

+1

Сбой и не запирание? 'getchar' должен выставить палатку, запустить огонь и выйти в лагере до тех пор, пока не будет нажата клавиша. Он не получит последний, но получит следующий. Возможно, что-то нужно для конкретной операционной системы. У меня нет хорошего ответа, но отредактируйте свой вопрос и добавьте целевую ОС. – user4581301

+0

На самом деле подумайте об этом, у меня есть ответ: открутите второй поток и позвольте ему висеть на 'getchar', сохраняя значение для чтения другого потока. – user4581301

+0

Нет, это требует, чтобы вы нажали enter. В этот день я сосать. – user4581301

ответ

0

Я закончил работу с функцией OnKeyboardMessage dinput8.dll, чтобы захватить последнюю нажатую клавишу, которая сработала.

0

вы можете использовать эту функцию

#include conio.h 
.............. 
.............. 
void input() 
{ 
    if (_kbhit()) 
    { 
     switch (_getch()) 
     { 
     case 'q': 
      dir = LEFT; 
      break; 
     case 'z': 
      dir = UP; 
      break; 
     case 'd': 
      dir = RIGHT; 
      break; 
     case 's': 
      dir = DOWN; 
      break; 
     case 'x': 
      gameover; 
      break; 
     default : 
      break; 

     } 

    } 
} 

пока НАПРАВЛ

перечисление Направление {STOP = 0, ЛЕВЫЙ, RIGHT, UP, DOWN};

+0

#include : D – shikova

+0

Немного веселья с '_getch'. Попробуйте выйти из программы с помощью ctrl + c. – user4581301

+0

Пробовал это, он ничего не делает: 'DebugConsole(); if (_kbhit()) printf ("% i \ r \ n", _getch()); ' – Talococh