2012-02-17 16 views
5

Actualmente estoy escribiendo un juego en C++ en Windows. Todo va muy bien hasta ahora, pero mi menú es el siguiente:¿Cómo obtener entrada de teclado directa en C++?

1.Go Norte

2.Go Sur

3.Go Medio

4.Go Norte

5.Inventory elección

6.Exit

Insertar -

Funciona bien, pero he estado utilizando ese tipo de cosas por un tiempo y preferiría una que pueda navegar con las flechas hacia arriba y hacia abajo. ¿Cómo voy a hacer esto?

Saludos de antelación

+0

No estoy seguro si las flechas son manejados a través de las mismas plataformas. Entonces, ¿qué plataforma? Además, ¿qué has intentado? –

+0

Pregunta similar muy reciente: http://stackoverflow.com/questions/9324806/how-to-read-standard-input-continuously – BoBTFish

Respuesta

2

En Windows, puede utilizar la función genérica kbhit(). Esta función devuelve verdadero/falso dependiendo de si hay un teclado pulsado o no. A continuación, puede usar la función getch() para leer lo que está presente en el búfer.

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

También puede consultar los códigos de escaneo. conio.h contiene las firmas requeridas.

4

¿Ha considerado utilizar una biblioteca de interfaz de usuario de consola como ncurses?

0

Puede usar GetAsyncKeyState. Le permite obtener entradas directas del teclado desde flechas, botones de función (F0, F1, etc.) y otros botones.

Aquí hay un ejemplo de implementación:

// 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); 
    } 
} 
Cuestiones relacionadas