c++ - programa - leer datos en c
¿Cómo obtener entrada de teclado directa en C++? (3)
Actualmente estoy escribiendo un juego en C ++ en Windows. Todo va bien hasta ahora, pero mi menú se ve así:
1. Ir al norte
2. Ir al sur
3.Go East
4. Ir al norte
5.Inventario
6. Salida
Insertar elección -
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 por adelantado
¿Ha considerado usar una biblioteca de interfaz de usuario de la consola como ncurses ?
En Windows, puede usar 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 puedes mirar los códigos de escaneo. conio.h
contiene las firmas requeridas.
Puede usar GetAsyncKeyState . Le permite obtener entradas directas del teclado desde flechas, botones de función (F0, F1, etc.) y otros botones.
Aquí hay una implementación de ejemplo:
// 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);
}
}