/*
PROGRAMA QUE SIMULA EL MOVIMIENTO DE LA CLASICA CULEBRA
DE LOS CELULARES...EL OBJETIVO, ES GUIAR LA CULEBRA, HACIA
LOS OBJETOS QUE APARECEN EN LA PANTALLA...Haciendola Crecer
UTILICE LAS TECLAS DE DIRECCION PARA CAMBIAR LA DIRECCION DE LA
CULEBRA...
MATERIA: ESTRUCTURA DE DATOS.
PROFESOR: FREDY JUAREZ.
ALUMNO: DARWIN SOSA GOMEZ.
INFORMATICA GRUPO: 312 A
*/
#include
#include
#include
#include
#define arriba 72
#define abajo 80
#define izquierda 75
#define derecha 77
#define instrucciones 59
/*Funciones Usadas*/
void finaliza();
void inicializa();
void culebra();
void objeto();
void pantalla();
void pantalla1();
void juego();
int sonido();
/*Variabes Usadas*/
int col;
int v=60;
int s=440;
int color1,puntos,nivel,cn;
int FinVxy=-1;/*Tope de los vectores de Direcciones*/
int vectorx[10000];
int vectory[10000];
int i,j;
int x=10;
int y=15;
int color=1;
int objetoX=1;
int objetoY=1;
char direccion1=0;
char direccion=0;
char Jnuevo=0;
void objeto()/*Funcion que genera posicion para el objeto*/
{
objetoX=(rand()%38)+1;
objetoY=(rand()%48)+1;
if(objetoX==1 || objetoY==1){objetoY+=1;objetoX+=1;}
textcolor(10);gotoxy(objetoX,objetoY);cprintf("%c",1);
}
void finaliza()
{
int fcol=0;Jnuevo=0;direccion=0;
puntos=0;nivel=0;cn=0;v=60;x=10;y=15;
clrscr();
while(Jnuevo!=60 && Jnuevo!=27)
{
while(!kbhit())
{
fcol=(rand()%15)+1;
textcolor(fcol);delay(200);
gotoxy(20,9);cprintf("²²²²²²²²²²²²²²²");
gotoxy(20,10);cprintf("²²²²²²²²²²²²²²²");
gotoxy(21,15);cprintf("²²²²²²²²²²");
gotoxy(21,16);cprintf("²²²²²²²²²²");
for(i=11;i<=25;i++){gotoxy(20,i);cprintf("²²");}
for(i=9;i<=25;i++){gotoxy(36,i);cprintf("°°");}
for(i=9;i<=25;i++){gotoxy(40,i);cprintf("±±");}
for(j=40,i=9;i<=25;i++,j++){gotoxy(j,i);cprintf("±±");}
for(i=9;i<=25;i++){gotoxy(56,i);cprintf("±±");}
for(i=3;i<=34;i++){gotoxy(i,35);cprintf("Í");}
for(i=3;i<=34;i++){gotoxy(i,43);cprintf("Í");}
gotoxy(2,35);cprintf("É");
gotoxy(43,35);cprintf("É");
gotoxy(76,35);cprintf("»");
gotoxy(35,35);cprintf("»");
gotoxy(76,43);cprintf("¼");
gotoxy(35,43);cprintf("¼");
gotoxy(2,43);cprintf("È");
gotoxy(43,43);cprintf("È");
for(i=44;i<=75;i++){gotoxy(i,35);cprintf("Í");}
for(i=44;i<=75;i++){gotoxy(i,43);cprintf("Í");}
gotoxy(7,39);cprintf("JUEGO NUEVO..Presione 'F2'");
gotoxy(50,39);cprintf("SALIR..Presione 'ESC'");
}
Jnuevo=getch();
if(Jnuevo==27)abort();
if(Jnuevo==60)
{
textcolor(10);
for(i=0;i<10000;i++)
{
vectorx[i]=0;
vectory[i]=0;
}
FinVxy=-1;
juego();
}
}
clrscr();
}
void inicializa()
{
int fcol=0;Jnuevo=0;direccion=0;
puntos=0;nivel=0;cn=0;v=60;x=10;y=15;
clrscr();
while(Jnuevo!=60 && Jnuevo!=27)
{
while(!kbhit())
{
fcol=(rand()%15)+1;
textcolor(fcol);delay(200);
gotoxy(4,2);cprintf("ÉÉ");
gotoxy(17,2);cprintf("»");
gotoxy(17,3);cprintf("¼");
gotoxy(5,11);cprintf("È");
gotoxy(4,11);cprintf("Ç");
gotoxy(4,12);cprintf("È");
for(i=6;i<=16;i++){gotoxy(i,11);cprintf("Í");}
for(i=5;i<=15;i++){gotoxy(i,12);cprintf("Í");}
gotoxy(17,11);cprintf("»");
gotoxy(16,12);cprintf("»");gotoxy(17,12);cprintf("×");
for(i=13;i<=20;i++){gotoxy(16,i);cprintf("××");}
gotoxy(17,21);cprintf("×");gotoxy(17,22);cprintf("¼");
gotoxy(16,21);cprintf("¼");
for(i=5;i<=16;i++){gotoxy(i,2);cprintf("Í");}
for(i=6;i<=16;i++){gotoxy(i,3);cprintf("Í");}
gotoxy(4,21);cprintf("É");gotoxy(4,22);cprintf("È");
for(i=5;i<=15;i++){gotoxy(i,21);cprintf("Í");}
for(i=5;i<=16;i++){gotoxy(i,22);cprintf("Í");}
for(i=3;i<=10;i++){gotoxy(4,i);cprintf("××");}
for(i=5;i<=15;i++){gotoxy(i,2);cprintf("Í");}
for(i=6;i<=15;i++){gotoxy(i,3);cprintf("Í");}
for(i=3;i<=34;i++){gotoxy(i,35);cprintf("Í");}
for(i=3;i<=34;i++){gotoxy(i,43);cprintf("Í");}
/*Dibujando la letra N*/
gotoxy(21,2);cprintf("ɻ");gotoxy(21,22);cprintf("ȼ");
for(i=3;i<=21;i++){gotoxy(21,i);cprintf("××");}
gotoxy(37,2);cprintf("ɻ");gotoxy(37,22);cprintf("ȼ");
for(i=3;i<=21;i++){gotoxy(37,i);cprintf("××");}
for(j=22,i=5;i<=19;i++,j++){gotoxy(j,i);cprintf("È»");}
/*Dibujando la letra A*/
gotoxy(41,2);cprintf("É");gotoxy(42,3);cprintf("É");
gotoxy(41,22);cprintf("ȼ");gotoxy(41,3);cprintf("×");
for(i=4;i<=21;i++){gotoxy(41,i);cprintf("××");}
gotoxy(52,2);cprintf("»");gotoxy(51,3);cprintf("»");
for(i=42;i<=51;i++){gotoxy(i,2);cprintf("Í");}
for(i=43;i<=50;i++){gotoxy(i,3);cprintf("Í");}
gotoxy(52,3);cprintf("×");
for(i=4;i<=21;i++){gotoxy(51,i);cprintf("××");}
gotoxy(51,22);cprintf("ȼ");
for(i=42;i<=51;i++){gotoxy(i,11);cprintf("Í");}
for(i=42;i<=51;i++){gotoxy(i,12);cprintf("Í");}
/*Dibujando la Letra K*/
gotoxy(55,2);cprintf("É");gotoxy(56,2);cprintf("»");
gotoxy(55,22);cprintf("ȼ");
for(i=3;i<=21;i++){gotoxy(55,i);cprintf("××");}
for(i=56;i<=64;i++){gotoxy(i,12);cprintf("Í");}
for(i=56;i<=63;i++){gotoxy(i,13);cprintf("Í");}
gotoxy(65,12);cprintf("»");
gotoxy(64,13);cprintf("»");
for(i=13;i<=21;i++){gotoxy(64,i);cprintf("××");}
gotoxy(64,22);cprintf("ȼ");
for(j=65,i=3;i<=12;i++,j--){gotoxy(j,i);cprintf("ɼ");}
/*Dibujando la letra E*/
gotoxy(68,2);cprintf("É");gotoxy(69,3);cprintf("É");
gotoxy(68,3);cprintf("×");gotoxy(68,21);cprintf("×");
gotoxy(68,22);cprintf("È");gotoxy(69,21);cprintf("È");
for(i=4;i<=20;i++){gotoxy(68,i);cprintf("××");}
for(i=69;i<=79;i++){gotoxy(i,2);cprintf("Í");}
for(i=70;i<=79;i++){gotoxy(i,3);cprintf("Í");}
gotoxy(80,2);cprintf("»");gotoxy(80,3);cprintf("¼");
for(i=70;i<=79;i++){gotoxy(i,21);cprintf("Í");}
for(i=69;i<=79;i++){gotoxy(i,22);cprintf("Í");}
gotoxy(80,21);cprintf("»");gotoxy(80,22);cprintf("¼");
for(i=69;i<=79;i++){gotoxy(i,12);cprintf("Í");}
for(i=69;i<=79;i++){gotoxy(i,13);cprintf("Í");}
gotoxy(80,12);cprintf("»");gotoxy(80,13);cprintf("¼");
/*Margenes de Pantalla*/
gotoxy(2,35);cprintf("É");
gotoxy(43,35);cprintf("É");
gotoxy(76,35);cprintf("»");
gotoxy(35,35);cprintf("»");
gotoxy(76,43);cprintf("¼");
gotoxy(35,43);cprintf("¼");
gotoxy(2,43);cprintf("È");
gotoxy(43,43);cprintf("È");
for(i=44;i<=75;i++){gotoxy(i,35);cprintf("Í");}
for(i=44;i<=75;i++){gotoxy(i,43);cprintf("Í");}
gotoxy(7,39);cprintf("JUEGO NUEVO..Presione 'F2'");
gotoxy(50,39);cprintf("SALIR..Presione 'ESC'");
}
Jnuevo=getch();
if(Jnuevo==27)abort();
if(Jnuevo==60)
{
textcolor(10);
for(i=0;i<10000;i++)
{
vectorx[i]=0;
vectory[i]=0;
}
FinVxy=-1;
juego();
}
}
clrscr();
}
void culebra()
{
int color;
textcolor(14);gotoxy(48,12);cprintf("%d",puntos);gotoxy(66,12);cprintf("%d",nivel);
color=(rand()%15)+1;
textcolor(color);
/*Dibujando LOGO (Culebra)*/
gotoxy(46,34);cprintf(" ");
gotoxy(47,34);cprintf("%c%c%c%c%c%c",4,4,4,4,4,4);
gotoxy(53,35);cprintf("%c",4);
gotoxy(53,36);cprintf("%c",4);
gotoxy(49,37);cprintf("%c%c%c%c",4,4,4,4);
gotoxy(48,36);cprintf("%c",4);
gotoxy(44,36);cprintf("%c%c%c%c",4,4,4,4);
gotoxy(43,37);cprintf("%c",4);
gotoxy(43,38);cprintf("%c",4);
gotoxy(44,39);cprintf("%c%c%c%c%c%c%c%c%c%c",4,4,4,4,4,4,4,4,4,4);
gotoxy(54,40);cprintf("%c",4);
gotoxy(54,41);cprintf("%c",4);
gotoxy(49,42);cprintf("%c%c%c%c%c",4,4,4,4,4);
gotoxy(48,41);cprintf("%c",4);
gotoxy(43,41);cprintf("%c%c%c%c%c",4,4,4,4,4);
gotoxy(42,42);cprintf("%c",4);
gotoxy(42,43);cprintf("%c",4);
gotoxy(43,44);cprintf("%c%c%c%c%c%c%c%c%c%c%c%c",4,4,4,4,4,4,4,4,4,4,4,4,4);
gotoxy(58,32);cprintf("O B J E T I V O");
textcolor(11);
gotoxy(56,34);cprintf("Hacer que la Culebra");
gotoxy(57,35);cprintf("coma los Objetos. ");
gotoxy(56,37);cprintf("Evitar que la Culebra");
gotoxy(57,38);cprintf("choque con su Cuerpo.");
textcolor(color);
gotoxy(61,41);cprintf("N O T A");
textcolor(11);
gotoxy(56,43);cprintf("Si la Culebra Choca con");
gotoxy(56,45);cprintf("cualquier parte de su");
gotoxy(56,47);cprintf("cuerpo. El juego Termina");
textcolor(10);
}
void pantalla1()
{
col=(rand()%14)+1;if(col==0)col=14;
gotoxy(41,1);textcolor(col);cprintf("É");gotoxy(80,1);cprintf("»");
gotoxy(49,3);textcolor(color1);cprintf("C U L E B R A....U M A R");
textcolor(14);
gotoxy(43,7);cprintf(" P U N T O S ");
gotoxy(59,7);cprintf("N I V E L ");
gotoxy(46,17);cprintf(" I N S T R U C C I O N E S ");
/*Instrucciones de USO*/
gotoxy(46,20);cprintf("Flecha - Girar a la Derecha");
gotoxy(46,22);cprintf("Flecha %c Girar a la Izquierda",27);
gotoxy(46,24);cprintf("Flecha %c Girar hacia arriba",24);
gotoxy(46,26);cprintf("Flecha %c Girar hacia Abajo",25);
gotoxy(46,28);cprintf("ESC Terminar Juego");
textcolor(color1);
/*Imprimiendo Margenes de Pantalla*/
for(i=42;i<80;i++)
{
gotoxy(i,1);textcolor(col);cprintf("Í");
}
gotoxy(41,5);textcolor(col);cprintf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹");
for (i=6;i<15;i++){textcolor(col);gotoxy(56,i);cprintf("º");}
gotoxy(41,15);textcolor(col);cprintf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹");
gotoxy(41,30);textcolor(col);cprintf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹");
for(i=2;i<5;i++){textcolor(col);gotoxy(41,i);cprintf("º");}
for(i=6;i<15;i++){textcolor(col);gotoxy(41,i);cprintf("º");}
for(i=16;i<30;i++){textcolor(col);gotoxy(41,i);cprintf("º");}
for(i=31;i<50;i++){textcolor(col);gotoxy(41,i);cprintf("º");}
for(i=6;i<15;i++){textcolor(col);gotoxy(80,i);cprintf("º");}
for(i=16;i<30;i++){textcolor(col);gotoxy(80,i);cprintf("º");}
for(i=31;i<50;i++){textcolor(col);gotoxy(80,i);cprintf("º");}
for(i=2;i<5;i++){textcolor(col);gotoxy(80,i);cprintf("º");}gotoxy(41,49);cprintf("È");
for(i=42;i<80;i++){textcolor(col);gotoxy(i,49);cprintf("Í");}gotoxy(80,49);cprintf("¼");
textcolor(10);
}
void pantalla()/*Escribe la pantalla donde juega la Culebra*/
{
color1=(rand()%15)+1;
textcolor(color1);
gotoxy(1,1);cprintf("É");
for(i=1;i<40;i++)cprintf("Í");gotoxy(40,1);cprintf("»");
for(i=2;i<50;i++){gotoxy(40,i);cprintf("º\n");}
for(i=2;i<50;i++){gotoxy(1,i);cprintf("º\n");}gotoxy(1,49);cprintf("È");
for(i=1;i<40;i++)cprintf("Í");gotoxy(40,49);cprintf("¼");
textcolor(10);
}
int sonido()/*Genera el sonido*/
{
sound(s);
delay(100);
nosound();
return 0;
}
/*FUNCION PRINCIPAL*/
void main(void)
{
clrscr();
_setcursortype(_NOCURSOR);/*Desaparece Cursor*/
inicializa();
if(Jnuevo==60){textcolor(10);juego();}
}/*Cerrando el Main*/
void juego(void)
{
clrscr();
objeto();
/*While de direcciones*/
while(direccion!=27)
{
pantalla();pantalla1();textcolor(10);
direccion=getch();/*Capturando Direccion*/
if(direccion==27)finaliza();
/*Validando Direcciones*/
if(direccion1==derecha && direccion==izquierda)direccion=derecha;
if(direccion1==izquierda && direccion==derecha)direccion=izquierda;
if(direccion1==arriba && direccion==abajo)direccion=arriba;
if(direccion1==abajo && direccion==arriba)direccion=abajo;
/*While de Movimientos*/
while(!kbhit())
{
culebra();
color1=(rand()%14)+1;if(color1==0)col=14;
/*DIRECCIONES*/
if(direccion==derecha){x=(x==39?2:x+1);direccion1=direccion;}
if(direccion==izquierda){x=(x==2?39:x-1);direccion1=direccion;}
if(direccion==abajo){y=(y==48?2:y+1);direccion1=direccion;}
if(direccion==arriba){y=(y==2?48:y-1);direccion1=direccion;}
if(FinVxy==0)FinVxy=-1; /*Comprobando si existen elementos en los vectores*/
else if(FinVxy>0) /*Si existe mas de 1 elemento en los vectores*/
{
for(i=0;i<10000;i++) /*Moviendo elementos*/
{
vectorx[i]=vectorx[i+1];
vectory[i]=vectory[i+1];
}
FinVxy--;
/*Imprimiendo cuerpo de la culebra*/
for(i=0;i<=FinVxy;i++)
{
textcolor(RED);
/*Comprobando si ha chocado con su cuerpo*/
if(vectorx[i]==x && vectory[i]==y)
{
gotoxy(15,15);cprintf(" JUEGO TERMINADO ");
gotoxy(13,17);cprintf(" Puntos Alcanzados = %d ",puntos);
gotoxy(13,19);cprintf(" Nivel Logrado = %d ",nivel);
delay(6000);finaliza();
}
gotoxy(vectorx[i],vectory[i]);
cprintf("%c",233);
}
}
/*Imprimiendo y borrando cabeza*/
textcolor(14);gotoxy(x,y);cprintf(" ");
delay(v);gotoxy(x,y);printf("%c",32);
if(FinVxy>=0)/*Existe 1 o mas elementos, borrando cola*/
{
for(i=0;i<=FinVxy;i++)
{
gotoxy(vectorx[i],vectory[i]);cprintf("%c",32);
}
}
if(x==objetoX && y==objetoY)/*Comiendo objeto*/
{
FinVxy++;sonido();
puntos+=3;
cn++;/*Incrementando nivel*/
if(cn==4){nivel++;v-=5;cn=0;}
vectorx[FinVxy]=objetoX;
vectory[FinVxy]=objetoY;
objeto();
}
FinVxy++;
vectorx[FinVxy]=x;
vectory[FinVxy]=y;
}/*Cerrando While DE MOVIMIENTOS */
}/*Cierre del While DE DIRECCIONES*/
}/*Cerrando JUEGO*/
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario