hola tengo una practica que es hacer 3 niveles del juego snake y pues ya termine casi todo solo me falta que la vibora se mueva continuamente y que cambie de direccion si se apreta alguna flecha del teclado y pues no se como hacerlo ya que en el codigo inicial que nos dio el ingeniero la vibora se mueve en las diferentes direcciones pero como utiliza getch() espera que se presione una tecla para que la consola se vuelva a pintar con el siguiente cuadro(por asi decirlo jeje)y el juego de sanake requiere que la vibora se mueva continuamente y cuando se apreta un tecla de las flechas vaya hacia esa direccion
hay alguna funcion o forma de que pasado determinado tiempo(0.5segundo) si no se apreto la tecla entonces se pueda pasar de largo la instruccion getch().
---------------------------------------------------------------------------------------------------
Código:
void nivel1(){
char car1,car2;
string vidas;
clrscr();
choque=false;
frec=1;
dir=5;
randomize();
comida.x=random(80)+1;
comida.y=random(21)+3;
pfin=pini=NULL;
pos.x=15;
pos.y=15;
add(pos);
mostrar();
paredes1();
vidas=int2string(vida);
gotoxy(8,1);
cprintf(vidas.c_str());
gotoxy(40,1);
cprintf("Pause(P)");
do {//esta el la parte donde se debe presionar el teclado
car1=getch();
switch(car1)
{
case 0: car2=getch();
switch(car2)
{
case 72: if(dir!=1){
pos.y--;
frec++;
}
else
frec=0;
if(frec!=0)
dir=0;
break;
case 75: if(dir!=3){
pos.x--;
frec++;
}
else
frec=0;
if(frec!=0)
dir=2;
break;
case 77: if(dir!=2){
pos.x++;
frec++;
}
else
frec=0;
if(frec!=0)
dir=3;
break;
case 80: if(dir!=0){
pos.y++;
frec++;
}
else
frec=0;
if(frec!=0)
dir=1;
break;
}
break;
case 'p':Sleep(2000);
}
if(frec!=0)
add(pos);
if(comida.x==pos.x &&
comida.y==pos.y )
{ PlaySoundA("C:/Documents and Settings/Leaf Leopard/Escritorio/sounds/boiapp med.wav", NULL, SND_FILENAME ||SND_ASYNC);
comida.x=random(79)+1;
comida.y=random(20)+4;
cont++;
}
else{
if(frec!=0)
sup();
}
if(cont==15) {
car1=27;
op=2; }
else{
clrscr();
paredes1();
if(pos.y==2&&pos.x>=0||pos.y==25&&pos.x>=0) {
vida--;
vidas=int2string(vida);
car1=27;
PlaySoundA("C:/Documents and Settings/Leaf Leopard/Escritorio/sounds/maximise_52.wav", NULL, SND_FILENAME ||SND_ASYNC);
}
if(car1!=27){
mostrar();//refresca la pantalla
gotoxy(8,1);
cprintf(vidas.c_str());
gotoxy(40,1);
cprintf("Pause(P)");}
if(choque==true)
car1=27;
}
}while(car1 != 27);
}
void main(int argc, char* argv[])
{
nivel1();
clrscr();
cout<<"PERDISTE!!!!"<<endl;
PlaySoundA("C:/Archivos de programa/Game_Maker8/Sounds/lose2.wav", NULL, SND_FILENAME ||SND_ASYNC);
getch();
Sleep(1000);
}
---------------------------------------------------------------------------------------------
gracias por leer el mensaje espero puedan ayudarme.
saludos^^.