Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda con snake

Estas en el tema de ayuda con snake en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/11/2010, 21:42
 
Fecha de Ingreso: enero-2008
Ubicación: Oruro
Mensajes: 50
Antigüedad: 16 años, 3 meses
Puntos: 0
ayuda con snake

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^^.
  #2 (permalink)  
Antiguo 10/11/2010, 09:19
 
Fecha de Ingreso: enero-2008
Ubicación: Oruro
Mensajes: 50
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: ayuda con snake

pueden cerrar el tema ya averigue como hacerlo con kbhit()
saludos ^^.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:06.