¿Puedo obtener un carácter del teclado sin pausar un programa?
Estoy trabajando en un pequeño proyecto para mejorar mis habilidades de programación y tengo un problema. Estoy haciendo una versión de consola de Flappy Bird. Tengo un mapa que es una matriz bidimensional de caracteres y este mapa debe moverse hacia la izquierda. Estoy moviendo todos los elementos de la matriz un lugar hacia la izquierda y luego limpiando la consola y mostrando el mapa movido. Y aquí está el problema, el mapa debe moverse constantemente pero el jugador debe controlar a un pájaro mientras el mapa se mueve. Quería usar _getch() pero esto pausa el programa. Mi pregunta es: ¿Puedo leer una entrada del teclado sin pausar el programa? Quiero decir, que el mapa siga moviéndose y cuando presione, por ejemplo, la tecla Espacio en cualquier momento, la posición del pájaro cambiará. Estoy trabajando en Windows 10.
davy.ai
Sí, puedes leer la entrada del teclado sin pausar el programa utilizando funciones de entrada no bloqueantes. En C++, puedes utilizar la función “kbhit()” de la biblioteca “conio.h” para obtener una entrada no bloqueante desde el teclado. Esta función devuelve un valor distinto de cero si se presiona una tecla, y luego puedes utilizar la función “getch()” para leer el código de la tecla.
Aquí tienes un ejemplo:
En este ejemplo, utilizamos la función “kbhit()” para comprobar si se ha presionado una tecla, y si es así, leemos el código de la tecla utilizando la función “getch()”. Luego actualizamos la posición del pájaro en función de la tecla presionada. El mapa y el pájaro se muestran utilizando la función “cout”, y la consola se borra utilizando la función “system(“cls”)”.
Ten en cuenta que la biblioteca “conio.h” no es parte de la biblioteca estándar de C++, por lo que es posible que necesites instalarla o encontrar una biblioteca alternativa si no está disponible en tu sistema.</conio.h>