Código fuente del software Vc
# include & ltgraphics.h & gt
# include & ltstdlib.h & gt
# include & ltdos.h & gt
#Definir 0x4b00 izquierdo
#Definir 0x4d00 derecho
#Definir 0x5000 hacia abajo
#Definir hasta 0x4800
#define ESC 0x011b
int i, key
int score = 0; /*score*/
int gamespeed = 50000/*Ajusta la velocidad del juego usted mismo */
Alimentos estructurados
{
int x; /*Abscisa de los alimentos */
int y;/*Vertical de los alimentos coordinar */
int yes/*Determinar si aparecerá la variable de alimento*/
}Alimento /*Estructura de alimento*/
Estructura de serpiente p>
{
int x[N];
int y[N];
int nodo /*Número de nudos de serpiente */
int direction; /*La dirección de movimiento de la serpiente*/
int life/*La vida de la serpiente, 0 está viva, 1 está muerta*/
}Serpiente;
void Init(void); /*Controlador de gráficos*/
void Close(void); >void DrawK(void);/*Pantalla de inicio*/
void game over(void);/*Fin del juego*/
void gameplay(void);/*Jugar The proceso específico del juego*/
void PrScore(void);/*Resultados de salida*/
/*Función principal*/
Administrador no válido (no válido )
{
init() /*Controlador de gráficos*/
DrawK() /*Pantalla de inicio*/
Jugabilidad();/*El proceso específico de jugar*/
close();/*Fin del gráfico*/
}
/* Programa del controlador de gráficos*/
inicialización de vacío (void)
{
int gd=DETECT, GM;
init gráfico(& amp; gd, & ampgm, " c:\ \ TC ");
borrar dispositivo();
}
/*Pantalla de inicio, las coordenadas. de la esquina superior izquierda son (50, 40), las coordenadas de la esquina inferior derecha son (610, 460 */
void DrawK (inválido)
{
/*setbkcolor (verde claro);*/
establecer color(11);
setlinestyle(SOLID_LINE, 0, THICK _ WIDTH); /*Establecer estilo de línea* /
for( I = 50;i<=600;I+=10)/*Dibujar una valla*/
{
Rectángulo(I, 40, i+10, 49);/ *arriba*/
Rectangle(I, 451, i+10, 460); /*abajo*/
}
for(I = 40;i<=450;i+=10)
{
Rectángulo(50,I,59,I+10);/*izquierda*/
Rectángulo (601, I, 610, I+10) /*derecha*/
}
}
/*El proceso específico de juego */
Juego no válido (nulo)
{
randomize()
;/*Generador de números aleatorios*/
comida yes = 1; /*1 significa que es necesario que aparezca nueva comida, 0 significa que la comida ya existe*/
vida de serpiente = 0. ; /*vivo*/
serpiente . /*snake head*/
snake . /
PrScore();/*Puntuación de salida*/
Y (1)/*Puedes jugar el juego repetidamente y presiona ESC para finalizar*/
{
Y (!Khit ())/*La serpiente se mueve sola sin presionar una tecla*/
{
If(food.yes==1) /*Necesita comida nueva*/
{
comida . 60;
comida . y = rand()% 3560;
Y (food.x%10!=0)/*Después de que la comida aparezca aleatoriamente, la comida debe ser en toda la cuadrícula antes de que la serpiente pueda comerlo*/
comida x++;
Y (comida.y%10!=0)
comida. y++;
comida . yes = 0; /*Hay comida en la pantalla */
}
If(food.yes==0)/ *Si hay comida en la pantalla, se mostrará*/
{ p>
setcolor(green);
Rectangle (food.x, food. y, comida.x+10, comida y-10);
}
p>
for(I = serpiente . nodo-1;I>0;I-) /*Cada eslabón de la serpiente avanza, que es el algoritmo clave de la serpiente*/
{
serpiente x[I]= serpiente. ;
serpiente . y[I]= serpiente .
}
/*1, 2, 3, 4 significa correcto. , izquierda, arriba y abajo. Este juicio puede mover la cabeza de la serpiente*/
Cambiar (dirección de la serpiente)
{
caso 1: serpiente x. [0]+= 10; romper;
Caso 2: serpiente x[0]-= 10; romper ;
Caso 3: serpiente y[0]-= 10 ; romper;
Caso 4: serpiente . y[0]+= 10;
}
for(I = 3; I & ltsnake. node; I++)/*Juzga si te golpeaste desde la cuarta sección de la serpiente, porque la cabeza de la serpiente tiene dos secciones, la tercera sección es imposible darse la vuelta*/
{
if(serpiente. x[I]= = serpiente. x[0]& amp;& ampsnake.y[i]== serpiente.y[0])
{
juego terminado(); /*fallo de visualización*/
vida de serpiente = 1;
Pausa;
}
}
if(serpiente . x[0]& lt; 55 | | serpiente . x[0]& gt ;595 | p>{
juego terminado();/ *Este juego ha terminado*/
snake.
e = 1; /*La serpiente muere*/
}
If(snake.life==1)/*Después de los dos juicios anteriores, si la serpiente muere, salta de el bucle interno Empezar de nuevo*/
Pausa;
if(snake . x[0]= = comida . *Después de comer comida*/
{
set color(0); /*Eliminar comida de la imagen*/
Rectangle(food.x, food.y, food.x+10, food.y-10) ;
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
p>/*Primero saque el nuevo segmento vista y toma la posición del segmento anterior en el siguiente bucle*/
snake.node++;/*El cuerpo de la serpiente tiene un segmento largo */
food yes = 1. ; /*Es necesario que aparezca comida nueva en la pantalla*/
Puntuación += 10;
PrScore();/ *Producir nueva puntuación*/
}
set color(4); /*Dibuja una serpiente*/
for(I = 0; i<snake .node;i++)
Rectangle(serpiente) .x[i], serpiente.y[i], serpiente.x[i]+10,
snake .y[I] -10);
Retraso (velocidad del juego) ;
set color(0); /*Eliminar la última sección de la serpiente con negro*/
Rectángulo (snake .x[snake.node-1], serpiente.y [snake.node-1],
snake.x[snake.node-1]+10, serpiente.y[snake.node-1 ]-10);
} /*end while(!kbhit)*/
If(snake.life==1)/*Si la serpiente muere, salta fuera del bucle*/
Romper; p>
tecla = tecla BIOS(0); /*Botón Recibir*/
If(key==ESC)/*Presione ESC para salir*/
Break;
Otro
if(key == ARRIBA & amp; & amp serpiente, dirección! = 4)
/ *Determina si moverse en la dirección opuesta */
serpiente . dirección = 3;
Otros
if(clave == DERECHA & amp; & amp serpiente, dirección!
serpiente . dirección = 2;
Otro
if(clave == ABAJO & & serpiente, dirección! = 3)
dirección de la serpiente = 4;
}/*end while(1)*/
}
/*Juego terminado*/
< p. >Juego no válido terminado (no válido){
borrar dispositivo();
PrScore();
setcolor(rojo);
settextstyle(0, 0, 4);
outtextxy(200, 200, "Juego terminado");
getch();
}
/*Resultados de salida*/
Ninguno
ValidPrScore(no válido)
{
char str[10];
setfillstyle(SOLID_FILL, amarillo);
Bar(50, 15, 220, 35);
establecer color(6);
settextstyle(0, 0, 2);
sprintf(str, " puntuación: %d ",score);
outtextxy(55, 20, str);
}
/*Fin del gráfico*/
Cierre no válido (no válido)
{
getch();
closegraph()
}
<; p>Este es el código de Snake, con una explicación detallada, y se puede ejecutar correctamente.