Red de conocimiento informático - Conocimiento sistemático - Proporcione alrededor de 300 líneas de código, en cualquier idioma, con funciones completas, sin compilación, para usar en la clase de revisión de software. ¡Gracias!

Proporcione alrededor de 300 líneas de código, en cualquier idioma, con funciones completas, sin compilación, para usar en la clase de revisión de software. ¡Gracias!

Un clásico de la programación estructurada: el código C para el juego Snake.

¡No es fácil equivocarse! Puedes elegir algunos lugares si lo deseas y equivocarlos a propósito para encontrar fallas y errores.

#definir N 200

#include lt; lt;dos.hgt;

#define IZQUIERDA 0x4b00

#define DERECHA 0x4d00

#define ABAJO 0x5000

#define ARRIBA 0x4800

#define ESC 0x011b

int i, clave

int puntuación=0 /*puntuación**

int gamespeed= 50000; /* La velocidad del juego se puede ajustar sola**

struct Food

{

int x /* La abscisa de la comida**; /

int y; /* La ordenada de la comida**/

int yes /* La variable que determina si la comida aparece

}comida ; /*La estructura de la comida** /

struct Snake

{

int x[N]

int y; [N];

int node; /* El número de nodos de la serpiente***

int direction; /* La dirección de movimiento de la serpiente***

int life; /* La vida de la serpiente, 0 viva, 1 muerta**

}Serpiente;

void Init(void);/* Controlador de gráficos* /

void Close(void);/* Fin gráfico*/

void DrawK(void); /* Pantalla de inicio*/

void GameOver(void); /* Fin del juego*/

void GamePlay(void);/*Jugar proceso de juego específico*/

void PrScore(void);/*Puntuación de salida*/

/*Función principal*/

void main(void)

{

Init() /*Controlador de gráficos*/

DrawK(); /* pantalla de inicio */

GamePlay() /* Jugar proceso de juego específico*/

Cerrar() /* Fin del gráfico* /

}

/* Controlador de gráficos*/

void Init(void)

{

int gd=DETECT, gm;

initgraph( amp;gd,amp;gm, "c:\\tc");

Borrar dispositivo();

}

/*Con coordenadas (50, 40) está ubicado en la esquina superior izquierda de la cerca, (610, 460) está ubicado en la esquina inferior derecha de la pantalla de inicio de la cerca*/

void DrawK(void)

{

/* setbkcolor(LIGHTGREEN);*/

setcolor(11);

setlinestyle(SOLID_LINE, 0, THICK_ WIDTH); /* setlinestyle*/

for( i=50;ilt;=600;i =10)/* Dibujar el caparazón*/

{

rectángulo(i, 40, i 10, 49); /* Borde superior*/

rectángulo(i, 451, i 10, 460); /

}

for(i=40; ilt; =450; i =10)

{

rectángulo(50, i, 59, i 10);/* lado izquierdo*/

rectángulo(601, i, 610, i 10);/* lado derecho*/

}

}

/* Juega el juego*/

void GamePlay(void)

{

randomize(); /* Generador de números aleatorios*/

food.yes=1;/*1 significa que es necesario que aparezcan nuevos alimentos, 0 significa que los alimentos ya existen***

Snake.life=0 ;/ * Vivo***

serpiente.dirección=1; /* Dirección derecha***

serpiente.x[0]=100; 100; /* Dirección a la izquierda***

Serpiente.

y[0]=100;/* Cabeza de serpiente**

serpiente.x[1]= 110; serpiente.y[1]=100;

serpiente.node=2 ; /* Número de nodos**

PrScore(); /* Puntuación de salida**

while(1)/* Puedes repetir el juego, presiona ESC para finalizar el juego. **

{

while(!kbhit())/* Si no hay ningún botón, la serpiente moverá su cuerpo por sí sola*/

{

if(food. yes==1)/* Es necesario que aparezcan nuevos alimentos*/

{

food.x=rand()400 60;

food.y;

food.yes=0; /* Ahora hay comida en la pantalla*/

}

if(food.yes==0)/* Si hay comida en la pantalla ahora Si hay comida en ella, la comida se mostrará*/

{

setcolor( VERDE);

rectángulo(comida.x, comida.y, comida.x 10, comida.y-10);

}

for(i =snake.node-1;igt;0;i--)/* Cada enlace de la serpiente avanza, este es el algoritmo clave de la serpiente*

{

serpiente .x[i]=serpiente.x[i-1];

serpiente .y[i]=serpiente.y[i-1];

}

/*1, 2, 3, 4 representan las cuatro direcciones: derecha, izquierda, arriba y abajo, y usa esto para determinar la dirección de movimiento de la cabeza de serpiente*

switch(snake.direction )

{

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; /p>

}

for(i=3; ilt; Snake.node; i ) /*Comience desde el cuarto nodo de la serpiente para determinar si se golpeó a sí misma, porque la cabeza de la serpiente es en dos nodos, y el tercer nodo no se puede girar*

{

if(snake.x[i]==snake.x[0]amp;amp;snake. y[i]==serpiente.y[0])