2016-04-26 7 views
0

Ich versuche, die letzte gedrückte Tastaturtaste zu bekommen, aber da ich in einem Spiel arbeite, wird der Code jeden Tick durchlaufen. Ich habe versucht getchar(), aber es führt zu einem Absturz/Freeze, wie kann ich das erreichen?Holen Sie sich die zuletzt gedrückte Tastaturtaste

nur auf Windows 7/8/10

+1

Crash und keine Sperre? 'getchar' sollte ein Zelt aufstellen, ein Feuer anzünden und ausruhen, bis eine Taste gedrückt wird. Es wird nicht den letzten bekommen, aber es wird den nächsten bekommen. Wahrscheinlich brauchen Sie etwas Betriebssystem-spezifisch. Ich habe keine gute Antwort, aber bearbeiten Sie Ihre Frage und fügen Sie Ihr Ziel-Betriebssystem hinzu. – user4581301

+0

Eigentlich kommen, um darüber nachzudenken, ich habe eine Antwort: Spin einen zweiten Thread und lassen Sie es hängen 'getchar', Speichern des Wertes für den anderen Thread zu lesen. – user4581301

+0

Nein, das erfordert, dass Sie Enter drücken. Diesen Tag sauge ich. – user4581301

Antwort

0

Ich endete hooking dinput8.dll OnKeyboardMessage-Funktion, um die letzte Taste gedrückt, die funktionierte.

0

Sie diese Funktion

#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; 

     } 

    } 
} 

während dir ist

Enum Richtung {STOP = 0, LINKS, können diese verwendet werden, RECHTS, AUF, AB};

+0

#include : D – shikova

+0

Etwas Spaß mit '_getch'. Versuchen Sie, das Programm mit Strg + C zu beenden. – user4581301

+0

Versucht dies, tut es nichts: 'DebugConsole(); if (_kbhit()) printf ("% i \ r \ n", _getch()); ' – Talococh