Código fuente del juego VC
# incluir ltgraphics.h gt
# incluir ltstdlib.h gt
# incluir ltdos.h gt
#definir izquierda 0x4b00
#definir derecha 0x4d00
#definir abajo 0x5000
#definir hasta 0x4800
#definir ESC 0x011b
int i, key
int score = 0 /*score*/
int gamespeed = 50000/*Ajusta la velocidad del juego tú mismo*/
Alimento estructurado
{
int x; /*coordenada en abscisa del alimento*/
int y;/*coordenada en abscisa del alimento*/ p>
int yes/*Determinar si aparecerá la variable de los alimentos*/
}Alimentos /*La estructura de los alimentos*/
Estructura de la 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); proceso de juego*/
void PrScore(void);/*Resultado de salida*/
/*Función principal*/
Administrador no válido (void )
{
init() /*Controlador de gráficos*/
DrawK() /*Pantalla de inicio*/
Jugabilidad();/ *Proceso detallado del juego*/
close() /*Fin del gráfico*/
}
/*Gráficos controlador*/
inicialización nula (void)
{
int gd=DETECT, GM;
init gráfico( amp; gd , ampgm, " c: \ \ TC ");
clear device();
}
/*Pantalla de inicio, las coordenadas de la esquina superior izquierda son (50, 40), la esquina inferior derecha Las coordenadas son (610, 460 */
void DrawK (inválido)
{
/*setbkcolor ( verde claro) */
set color(11);
setlinestyle(SOLID_LINE, 0, THICK _ WIDTH); /*Establecer estilo de línea*/
for(I = 50; Ilt=600 ;I =10)/*Dibujar una valla*/
{
Rectángulo (I, 40, i 10, 49); *Mayor que*/
Rectangle(I, 451, i 10, 460); /*abajo*/
}
for(I = 40; i lt = 450; i = 10)
{
Rectángulo (50, I, 59, I 10); 601, yo, 610
, I 10); /*right*/
}
}
/*El proceso específico de jugar*/
Juego no válido(void)
{
randomize(); /*Generador de números aleatorios*/
comida sí = 1 /*1 significa nuevo. La comida necesita aparecer, 0 significa que la comida ya existe*/
snake life = 0; /*alive*/
snake direction = 1 /*direction to the right. */
serpiente . x[0]= 100; serpiente .y[0]= 100; /*cabeza de serpiente*/
serpiente ]= 100;
snake .node = 2; /*Número de nodos*/
PrScore(); /*Puntuación de salida*/
Y (1 )/*Puedes reproducir el juego repetidamente y presiona ESC para finalizar*/
{
Y (!Khit ())/*La serpiente se mueve sola sin presionar un botón*/ p>
{
If(food.yes==1)/*necesita comida nueva*/
{
comida . ;
comida . y = rand() 350 60;
Y (food.x10!=0)/*Después de que la comida aparezca aleatoriamente, la comida debe estar solo en toda la cuadrícula. las serpientes pueden comer */
comida x ;
Y (food.y10!=0)
comida y ;
. comida . yes = 0;/*Hay comida en la pantalla*/
}
If(food.yes==0)/*Si hay comida en la pantalla, se mostrará*/
{
setcolor(green);
Rectangle(food.x, food.y, food.x 10, food. y - 10);
}
for(I = serpiente . nodo-1;I gt0;I-)/*Cada eslabón de la serpiente avanza, que es la clave de la serpiente algoritmo*/
{
serpiente . x[I]= serpiente .
serpiente y[I]= serpiente . y[I-1];
}
/*1, 2, 3, 4 significa derecha, izquierda, arriba y abajo. Este juicio puede mover la cabeza de la serpiente*/. p>
Cambio (dirección de la serpiente)
{
caso 1: serpiente x[0] = 10;
Caso 2. : serpiente . = 10; break;
}
for(I = 3; I ltsnake . node; I )/* Juzga si te has golpeado desde el cuarto cuarto del serpiente, debido a que la cabeza de la serpiente tiene dos secciones, es imposible girar la tercera sección*/
{
if(snake . x[I]= = serpiente . x[0 ] amp; ampsnake .y[i]==snake.y[0])
{
juego terminado() /*fallo de visualización*/
serpiente . vida = 1;
Romper;
}
p>
}
if(serpiente . x[0] lt;55 | | serpiente . x[0] gt;595 | | serpiente . y[0] lt;55|| p>
snake . y[0] gt; 455)/*La serpiente chocó contra la pared*/
{
juego terminado();/*Este juego terminó */
snake.life = 1;/*La serpiente muere*/
}
If(snake.life==1)/*Arriba Después de dos juicios, si la serpiente muere, salta del bucle interno y comienza de nuevo*/
Descanso;
if(snake . x[0]= = food . x amp; ampSnake y[0]==food.y)/*Después de comer comida*/
{
set color(0); /*Eliminar comida de la imagen*/
Rectángulo(comida.x, comida.y, comida.x 10, comida.y-10);
snake.x[snake.node]=-20;snake.y[ Snake . node]=-20;
/*Primero coloque el nuevo segmento fuera de la vista y tome la posición del segmento anterior en el siguiente bucle*/
snake . ; /*El cuerpo de la serpiente tiene una sección larga*/
comida yes = 1; /*Es necesario que aparezca nueva comida en la pantalla*/
Puntuación = 10; p >
PrScore();/*Generar nueva puntuación*/
}
establecer color(4);/*Dibujar una serpiente*/
for(I = 0; iltsnake.node;i)
Rectángulo(snake.x[i], serpiente.y[i], serpiente.x[i] 10,
snake . y[I]-10);
Delay (gamespeed);
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 el la serpiente muere, sale del bucle*/
Break;
key = BIOS key(0); /*Recibir botón*/
If(key) ==ESC)/ *Presiona ESC para salir*/
Pausa;
Otros
if(key == ARRIBA amp; amp serpiente, dirección! =4)
/*Determinar si moverse en la dirección opuesta*/
dirección serpiente = 3;
Otros
. if( clave = = DERECHA amp; amp serpiente, dirección! =2)
dirección de la serpiente = 1;
Otro
if(clave = = IZQUIERDA. amp; amp serpiente, dirección! =1)
serpiente dirección = 2;
Otro
if(clave == ABAJO amp; amp serpiente, dirección !=
3)
dirección de la serpiente = 4;
}/*end while(1)*/
}
/*Juego terminado */
Juego terminado no válido (no válido)
{
borrar dispositivo();
PrScore();
setcolor(rojo);
settextstyle(0, 0, 4);
outtextxy(200, 200, "Juego terminado"); getch();
}
/*Resultados de salida*/
PrScore no válido (no válido)
{
char str[10];
setfillstyle(SOLID_FILL, amarillo);
Bar(50, 15, 220, 35);
establecer color( 6);
settextstyle(0, 0, 2);
sprintf(str, "score: d", puntuación);
outtextxy(55, 20, str);
}
/*Fin del gráfico*/
Cierre no válido (no válido)
{
getch();
closegraph();
}
Este es el código de Snake, con explicaciones detalladas y se puede ejecutar correctamente.