2012-07-13 17 views
5

Duplicar posible:
Non-blocking getch(), ncursesbloqueo getch no()

Estoy tratando de hacer juego de Tetris en la consola estándar. Necesito getch no bloqueante(), por lo que los bloques pueden caer sin presionar ninguna tecla. Sería bueno tener una función que devuelva -1 si no se pulsa ninguna tecla, de lo contrario, el código de tecla.

Estaría encantado si alguien me puede dar una pista o algunos enlaces.

+0

Tendrá que tener un bucle infinito y manejar _keypress_ events dentro de él. – SingerOfTheFall

+0

@RobKennedy - dupe supone utilizar ncurses –

+0

@kittyPL, ¿qué sistema operativo y compilador está utilizando? Como se puede deducir del voto duplicado, 'getch()' es una función no estándar. Las funciones con ese nombre se proporcionan en la API de MS Windows y en una biblioteca de Unix llamada "maldiciones". Además de compartir casualmente un nombre, esas funciones no tienen ninguna relación. –

Respuesta

7

Es sistema operativo específico, pero su biblioteca probablemente tiene una función llamada kbhit() o similar que hará esto

11

Esto es exactamente lo que quería:

int getch_noblock() { 
    if (_kbhit()) 
     return _getch(); 
    else 
     return -1; 
} 

Básicamente kbhit() hace el trabajo de determinar si se presiona una tecla.

Asume Windows y Microsoft Visual C++.

+0

Solo mencionar que necesitaría #include para usar _kbhit() – lowtech

Cuestiones relacionadas