Por qué se queda pasmado?

Rev
08 de Abril del 2004
He probado correr esta parte de código pero cuando tratro de usar las teclas se queda pasmado, alguien me podría decir el porqué.

do
{
click=clickmouse(x,y);
if(kbhit())
tecla=toupper(getch());

fflush(stdin);
}while(!click || tecla!='');

while(click || tecla!='')
{
click=clickmouse(x,y);
fflush(stdin);
if(((x>=100 && x<=200) && (y>=150 && y<=175)) || tecla=='N') //Si presionan nuevo juego
{
boton(100,150,100,25,8,7); //Nuevo juego
outtextxy(120,158,"Nuevo Juego");
nuevo_juego();
}

if(((x>=100 && x<=200) && (y>=200 && y<=225)) || tecla=='I') //Si presionan instruciones
{
boton(100,200,100,25,8,7); //Instrucciones
outtextxy(115,208,"Instrucciones");
instrucciones();
}

if(((x>=100 && x<=200) && (y>=250 && y<=275)) || tecla=='S') //Si presionan salir
{
boton(100,250,100,25,8,7); //Salir
outtextxy(140,258,"Salir");
break;
}
}//while(click)

Alejandro_
08 de Abril del 2004
Supongo que las variables click y tecla ya fueron definidas e inicializadas antes.

Si tecla se inicializó a cero:

char tecla = '';

la condición tecka != '' será "false" hasta que se pulse una tecla. Entonces se hará "true", y ya no saldrá del ciclo nunca más.

Ejemlo:

si se pulsa una 'a':

entonces tecla != '' se hace "true", y va de nuevo...


Alejandro

Rev
08 de Abril del 2004
Alejandro_ tenias razón la condición del while era el problema con respecto a los menús por las teclas.

Gracias