//// c = kbd_getc(c) Will return a key value if pressed or /0 if not ////
//// This function should be called frequently so as ////
//// not to miss a key press. ////
Una vez que comparas deberías poner la variable entrada en 0, asi no te molesta, ya que la variable mantiene el valor aun después y el if vuelve a entrar, por eso se ejecuta continuamente.
El problema de kbhit() es que una vez que se pulsa una tecla se pone a -1. Luego alguien sabe como resetearlo?
Toco la solución pero...
El problema de kbhit() es que una vez que se pulsa una tecla se pone a -1. Luego alguien sabe como resetearlo?
Toco la solución pero...
Hola antoniojdobarro, el problema es que no estás usando correctamente la función kbhit(). Leiste el post #8 de este hilo?
Saludos!
Bien, copio la estructura:Código: C++El problema es que en virtual console de proteus una vez que pulso 2 o 5, luego la única manera de detenerlo es pulsando una tecla que no sea una de esas dos. Es como si kbhit no funcionase, ya que si fuese cero debería irse directamente a detención y solamente entrar en la sentencia if si hubiese algún botón presionado.
void main(void) { do{ //hacer.. if (kbhit()){ // si pulso tecla char entrada; //declara variable entrada=getchar(); //capturas el caracter y lo guardas en variable // aqui deberia de verificar o filtar con un while que quieres que pase por el if. if (entrada=='2') avance(); else if (entrada=='5') retroceso(); }//fin de if else detencion(); //haces la detencion pero seguiras dentro del bucle si no lo rompes } while(x<10); }