2012-02-17 3 views
5

Attualmente sto scrivendo un gioco in C++ in Windows. Tutto sta andando benissimo finora, ma il mio menu simile a questo:Come ottenere l'input diretto della tastiera in C++?

1.Go Nord

2.Go Sud

3.Vai Oriente

4.Go Nord

5.Inventory

6.Exit

Inserire scelta -

Funziona bene, ma ho usato quel genere di cose per un po 'e preferirei che tu possa navigare con le frecce su e giù. Come potrei fare questo?

saluti di anticipo

+0

Non sono sicuro se le frecce sono gestite le stesse piattaforme in tutta. Quindi, quale piattaforma? Inoltre, cosa hai provato? –

+0

Domanda simile molto recente: http://stackoverflow.com/questions/9324806/how-to-read-standard-input-continuously – BoBTFish

risposta

2

In Windows, è possibile utilizzare la funzione generica kbhit(). Questa funzione restituisce vero/falso a seconda che vi sia o meno un hit da tastiera. È quindi possibile utilizzare la funzione getch() per leggere ciò che è presente nel buffer.

while(!kbhit()); // wait for input 
c=getch();  // read input 

È inoltre possibile visualizzare i codici di scansione. conio.h contiene le firme richieste.

4

Hai considerato l'utilizzo di una libreria dell'interfaccia utente della console come ncurses?

0

È possibile utilizzare GetAsyncKeyState. Ti consente di ottenere l'input diretto della tastiera da frecce, pulsanti funzione (F0, F1 e così via) e altri pulsanti.

Ecco un esempio di implementazione:

// Needed for these functions 
#define _WIN32_WINNT 0x0500 
#include "windows.h" 
#include "winuser.h" 
#include "wincon.h" 

int getkey() { 

    while(true) { 
     // This checks if the window is focused 
     if(GetForegroundWindow() != GetConsoleWindow()) 
      continue; 

     for (int i = 1; i < 255; ++i) { 
      // The bitwise and selects the function behavior (look at doc) 
      if(GetAsyncKeyState(i) & 0x07) 
       return i; 

     } 

     Sleep(250); 
    } 
}