Pregunta

HEU, así que estoy usando las funciones de Windows indicadas anteriormente que afortunadamente son para Windows 2000 y más, pero al hacer un juego en la consola, me he encontrado con un problema: tan pronto como se presiona una tecla, la consola se pasa el kbhit ( ) Función no importa si una tecla no se presiona nuevamente ...

¿Hay alguna forma de que pueda borrar el búfer de presionar el teclado para que no se pueda pasar KBHIT sin un nuevo KeyPress?

Si se requiere una nueva descarga de lib se requiere, supongo que podría ... ¡pero espero una forma estándar de Windows!

¡¡Gracias!!

¿Fue útil?

Solución

Quien te dijo eso kbhit() era una función de Windows mal informada. kbhit(), getch() y sus parientes son en realidad parte de los (enlaces del lenguaje C al) MS-DOS API. Su presencia en las bibliotecas de tiempo de ejecución para OS/2, Win32 y otros compiladores C/C ++ es simplemente ser Una ayuda de portada para programas MS/PC/DR-DOS. La biblioteca los asigna a lo que sea nativo El mecanismo existe para acceder al teclado, si es que hay uno, y generalmente solo de la manera correcta para que las aplicaciones de TUI, no GUI, accedan al teclado.

Si está escribiendo una nueva aplicación TUI, no use la API MS-DOS. Use la API adecuada y nativa para la plataforma que está aturdiendo, como el API de consola Win32 o el API de consola OS/2, o el Interfaz de terminal general de Posix (a través de ncurses o algo de este tipo).

Cuando lo haga, leerá su documentación y descubrirá cómo realizar una "obtención" destructiva de la entrada del teclado después de hacer un "vista" no destructivo. O, de hecho, cómo enjuagar el búfer en su totalidad si eso es lo que quieres hacer.

Otros consejos

La elección obvia sería FlushConsoleInputBuffer

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top