Programación de puntuación
h gt
# incluir ltstdlib.h gt
# incluir ltdos.h gt
#definir izquierda 0x4b00
#definir derecha 0x4d00
#Definir 0x5000 abajo
#Definir hasta 0x4800
#Definir ESC 0x011b
int i, clave
int puntuación = 0;
int gamespeed = 32000
Estructura alimentaria/*Estructura alimentaria*/
{
int x /*Coordenada en abscisa de la comida*/
int y;/*Coordenada vertical de la comida*/
int yes/*Variable de si aparece comida*/
}Alimento;
Estructura de serpiente/*Estructura de serpiente*/
{
int x[N];
int y [ N];
int node; /*El número de nudos de la serpiente*/
int dirección; /*La dirección de la serpiente*/
int life/* La vida de Snake, 0 está vivo, 1 está muerto*/
}Snake;
void Init(void);/*Controlador de gráficos*/
void Close(invalid);/*Cerrar la función del juego*/
void DrawK(invalid);/*Función de dibujo*/
void game over(void);/ * Función de error de salida*/
void gameplay(); /*Función de control del juego programa principal*/
void PrScore(void) /*Función de salida decimal*/
DELAY(char ch)/*Ajustar velocidad del juego*/
{
if(ch=='3 ')
{ p >
Retraso (velocidad del juego); /*retraso es la función de retraso*/
}
else if(ch=='2 ')
{
Retraso (velocidad del juego);
}
}
Menú()/*Menú de inicio del juego*/
{
char ch
printf("Seleccione la velocidad del juego: \ n ");
printf(" 1-rápido 2-normal 3- Lento\n ");
printf(" \nPor favor presione el número..\n ");
Hacer
{ ch = getch( }
Y (ch! = ' 1 ' amp;ampch! = '2' amperios amch! ='3');
clr SCR();
Retorno (ch);
}
/*Función principal* /
Administrador no válido (no válido)
{
int ch
ch = Menú();
init();
DrawK();
Juego (ch);
cerrar();
inicialización de vacío (void)
{
int gd=DETECT, GM;
init gráfico( amp; gd, ampgm, " c: \ \ TC ");
borrar dispositivo();
}
anular Dra
wK(no válido)
{
establecer color(11);
setlinestyle(SOLID_LINE, 0, THICK _ WIDTH);
for(I = 50; i lt = 600; i = 10)
{
Rectángulo (I, 40, i 10, 49 /*Dibuja el borde superior*/);
Rectangle(I, 451, i 10, 460); /*Dibujar borde inferior*/
}
for(I = 40; i lt= 450 ; i =10)
{
Rectángulo (50, I, 59, I 10); /*Dibujar el borde izquierdo*/
Rectángulo ( 601, I, 610, I 10);/*Dibuja el cuadro de la derecha*/
}
}
Juego no válido (char ch)
{
randomize(); /*Generador de números aleatorios*/
comida sí = 1; /*1 significa que aparece comida, 0 significa que existe comida* /
vida = 0;
serpiente = 1;
serpiente . 100;
serpiente. x[1]= 110; y[1]= 100;
nodo serpiente = 2;
PrScore() ;
Y (1) /*Puedes repetir el juego*/
{
Y (!Khit ())/*La serpiente no tiene botón y camina solo*/ p>
{
If(food.yes==1) /*Necesita comida*/
{
comida . x = rand() 400 60;
comida . y = rand() 350 60; /*Usa la función rand para generar coordenadas de comida aleatoriamente*/
Y (comida) .x10!=0)
comida . >
comida sí = 0; /*Ahora hay comida*/
}
Si( food.yes==0) /*Mostrar comida disponible*/ /
{
setcolor(green);
Rectangle(food.x, comida.y, comida.x 10, comida . y-10);
}
for(I = serpiente . nodo-1;I gt0;I-)/* Serpiente algoritmo de movimiento*/
{
snake */
}
Switch(snake.direction) /* Algoritmo de movimiento de la cabeza de la serpiente. para controlar el movimiento*/
{
caso 1: serpiente x[0] = 10
Caso 2: serpiente [0]-. = 10; romper;
Caso 4: serpiente y[0] = 10;
}
for(I = 3; Iltsnake. node; I) /*Determinar si la cabeza choca con el cuerpo*/
{
if(serpiente. x[I]= = serpiente. x[0] amp; ampsnake.y[i]==serpiente.y[0])
{
juego terminado();
vida de serpiente = 1;
descanso;
}
}
/*Aquí se explica cómo juzgar si se ha golpeado contra una pared*/
if(snake . x[0] lt; 55 | | Snake . x[0] gt; 595 | | Snake . y[0] lt; 55 | | serpiente . y[0] gt;
{
juego terminado();
vida de serpiente. 1;
p>
}
If(snake.life==1) /*Salir del ciclo si mueres*/
Romper;
if(serpiente. x[0]= = comida. color(0);
Rectángulo (comida.x, comida.y, comida.x 10, comida. y- 10); /*Limpia la comida con negro después de comer*/
serpiente .>
comida
Puntuación = 10; p>PrScore();
}
establecer color (4); /*Limpia la parte posterior del cuerpo después de cada ejercicio*/
for(I). = 0; iltsnake.node;i)
Rectángulo (snake.x[i] , serpiente.y[i], serpiente.x[i] 10, serpiente .y[I]-10);
Retraso (velocidad del juego);
Retraso (ch);
establecer color(0);
Rectángulo(snake.x[ serpiente.nodo-1], serpiente.y[snake.nodo-1], serpiente.x[snake.nodo-1] 10, serpiente y[snake.nodo-1]-10);
}
if(snake.life==1)
Break;
tecla = tecla BIOS(0);/*Botón Aceptar*/ p>
if(key==ESC)
Descanso;
Otros
if(key == ARRIBA amp; amp serpiente, dirección! =4)/*Juzga si cambiar de dirección*/
snake .direction = 3
Otros
if(key = = DERECHA amp; amp serpiente , dirección! =2)
serpiente. dirección = 1;
Otro
if(clave = = IZQUIERDA amp; amp serpiente, dirección!=1)
dirección de serpiente = 2;
Otro
if(key == DOWN amp; amp serpiente, dirección! = 3)
dirección de serpiente = 4;
}
}
Juego terminado no válido (no válido)
{
borrar dispositivo();
setcolor(rojo);
settextstyle(0, 0, 4);
outtextxy(200, 200, "Juego terminado");
getch();
}
PrScore no válido(no válido)
{
char str[10]; p> p>
setfillstyle(SOLID_FILL, amarillo);
Barra(50, 15, 220, 35);
establecer color(6);
settextstyle(0, 0, 2);
sprintf(str, "scord: d", puntuación);
outtextxy(55, 20, str);
}
Cierre no válido (no válido)
{
getch();
closegraph();
}