Buscando un programa serpiente escrito en lenguaje c

#include lt;stdio.hgt;

#include lt;graphics.hgt;

#include lt;stdlib.hgt;

#include lt; dos.hgt; /*Funciones de biblioteca referenciadas*/

#define IZQUIERDA 0x4b00

#define DERECHA 0x4d00

#define ABAJO 0x5000

#define UP 0x4800

#define ESC 0x011b/*Nombre de clave de definición de macro*/

#define N 200

int i , clave;

int nivel; /*nivel de juego*/

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

int velocidad de juego; */

struct Food

{

int x; /*abscisa de alimentos*/

int y;/* La vertical coordenada de comida*/

int yes; /*Variable para determinar si la comida debe aparecer*/

}comida /*Estructura de comida*/

struct; Serpiente

{

int x[N];

int y[N];

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

int dirección; /*La dirección en que se mueve la serpiente*/

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

}snake;/*estructura de la serpiente*/

void Choicelevel(void);/*seleccionar nivel de juego*/

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

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

void DRAW(void) /*Área de juego*/

void GameOver (void); /*Finalizar el juego*/

void GamePlay(void);*El proceso específico de jugar el juego*/

void PrScore(void); /*Emitir la puntuación*/

/*Función principal*/

void main(void)

{

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

Choicelevel() /*Elige el nivel del juego*/

DRAW() /*Área de juego*/

GamePlay(); /*Jugar el juego Proceso específico*/

Cerrar();/*Fin de gráficos*/

}

/*Controlador de gráficos* /

void Init(void)

{

int gd=DETECT,gm;

initgraph(amp;gd,amp; gm,"\\turboc2"); /*Inicializar el sistema gráfico*/

cleardevice() /*Borrar la interfaz gráfica*/

}

/*Selecciona el nivel del juego*/

void Choicelevle(void)

{char name[20];

setcolor(YELLOW);

settextstyle(0, 0, 6);

p>

outtextxy(150, 150, "Serpiente");

setcolor(VERDE

settextstyle(0, 0, 1); >outtextxy(200, 250, "por favor ingrese su nombre en inglés:");

outtextxy(200, 270, "Elección de nivel del 1 al 9."); (300, 320, "nombre: yangzilong"); /*Nombre del productor*/

outtextxy (300, 350, "número: 0902060226"); p>outtextxy(300, 380, "clase: informática 0602"); /*Clase de productor*/

getch();

printf("por favor ingrese su nombre: " );

gets(nombre);

printf("por favor, elija nivel:");

scanf("d",amp; nivel);

gamespeed=100000-400*nivel-300*nivel*nivel;

if(levelgt;9||levellt;1)

{cleardevice (); /*Borrar la interfaz gráfica*/

setcolor(YELLOW); /*Establecer el color de fuente*/

settextstyle(0, 0, 2); */

outtextxy(150, 200, "error de entrada de nivel"); /*Mostrar texto*/

getch();

level=1;

}

}

void DRAW(void)

{cleardevice() /*Borrar pantalla*/

setcolor(2);

setlinestyle(SOLID_LINE, 0, THICK_WIDTH); /*Establecer estilo de línea*/

rectangle(45, 45, 465, 325); /p>

}

/*El proceso específico de jugar*/

void GamePlay(void)

{setcolor(5);

setlinestyle(SOLID_LINE, 0, THICK_WIDTH); /*Establecer estilo de línea*/

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

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

snake.life=0; 1;/ *Dirección a la derecha*/

snake.x[0]=320; Snake.y[0]=240; /*Cabeza de serpiente*/

serpiente. x[1]= 330; Snake.y[1]=240; /*La posición del segundo nodo de la serpiente*/

snake.node=3; /*Número de nodos*/

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

while(1)/*Puedes jugar el juego repetidamente y presionar la tecla ESC para finalizar*/

{

w

hile(!kbhit())/*La serpiente mueve su cuerpo por sí sola sin presionar un botón*/

{

if(food.yes==1)/*necesita aparece comida nueva*/

{

food.x=rand()360 70;

food.y=rand()250 60;

while(food.x10!=0)/*Después de que la comida aparece aleatoriamente, la comida debe estar dentro de toda la cuadrícula para que la serpiente pueda comerla*/

food.x;

while(food.y10!=0)

food.y;

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

}

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

{

setcolor(VERDE );

rectangle(food.x, food.y, food.x 10, food.y-10);

}

for(i= serpiente.node-1;igt;0;i--)/*Cada eslabón de la serpiente avanza*/

{

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

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

}

/*1, 2, 3 y 4 representan las cuatro direcciones: derecha, izquierda, arriba y abajo. Utilice este control para mover la cabeza de la serpiente*/

switch(snake.direction)

.

{

caso 1: serpiente.x[0] =10; romper;

caso 2: serpiente.x[0]-=10; >

caso 3: serpiente.y[0]-=10;

caso 4: serpiente.y[0] =10; p>

for(i= 3; ilt; Snake.node; i )/*Comienza desde el cuarto segmento de la serpiente para determinar si te golpeó, porque la cabeza de la serpiente tiene dos segmentos y es imposible girar. alrededor del tercer segmento*/

{

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

{

GameOver(); /*Falla de visualización*/

snake.life=1 /*Muerte de serpiente*/

romper;

}

}

/*Si la cabeza de la serpiente toca la pared, la cabeza de la serpiente saldrá de la pared opuesta*/

if(snake.x[0]lt; 50 )

{snake.x[0]=450 /*Si la cabeza de serpiente cruza el borde izquierdo; , ingrese desde el borde derecho*/

snake.y[0]=snake.y [0] /*La coordenada vertical permanece sin cambios*/

for(i=snake .node-1;igt;0;i--)

{snake.x[i ]=snake.x[i-1];

snake.y[i] =snake.y[i-1]; /*Los otros segmentos de la serpiente avanzan hacia adelante*/

}

{

setfillstyle(SOLID_FILL, 0 /*Establece el modo y el color de relleno, 0 significa negro*/

bar(50, 55, 455, 315 /*bar es una función que representa el rango de relleno*/

}

}

e

lse

if(snake.x[0]gt; 450)

{snake.x[0]=50; /*Si la cabeza de la serpiente cruza el límite derecho, la serpiente la cabeza comienza desde el límite izquierdo Enter*/

snake.y[0]=snake.y[0] /*La coordenada vertical permanece sin cambios*/

for(i= serpiente.node-1;igt ;0;i--)

{snake.x[i]=snake.x[i-1];

snake.y[i ]=snake.y[i -1]; /*Avanzar las otras secciones de la serpiente hacia adelante*/

}

{

setfillstyle(SOLID_FILL, 0); /*Establecer modo y color de relleno, 0 significa negro*/

bar(50, 55, 455, 315); /*bar es una función que representa el rango de relleno*/

}

}

else

if(snake.y[0]lt; 60)

{serpiente .y[0]=320;/ *Si la cabeza de serpiente cruza el límite superior, ingrese desde el límite inferior*/

snake.x[0]=snake.x[0]; la abscisa permanece sin cambios*/

for(i=snake.node-1;igt;0;i--)

{snake.x[i]=snake.x[i -1];

snake .y[i]=snake.y[i-1]; /*Los otros segmentos de la serpiente avanzan*/

}

{

setfillstyle(SOLID_FILL, 0); /*Establece el modo y el color de relleno, 0 significa negro*/

bar(50, 55, 455, 315); /*bar es una función que representa el rango de llenado*/

}

}

else

if(snake.y [0]gt; 320)

{snake.y[0]=60; /*Si la cabeza de serpiente cruza el límite inferior, ingresa desde el límite superior*/

snake .x[0]=snake.x[0]; /*Abscisa sin cambios*/

for(i=snake.node-1;igt;0;i--)

{snake.x[i]=snake.x[i- 1];

snake.y[i]=snake.y[i-1] /*Los demás segmentos de la serpiente avanzan; */

}

{

setfillstyle(SOLID_FILL, 0); /*Establece el modo de relleno y el color, 0 significa negro*/

bar(50, 55, 455, 315); / *bar es una función que representa el rango de llenado*/

}

}

if(snake.life==1)/*Si la serpiente muere, salta del bucle interno, reinicia*/

romper;

if(snake.x[0]= =food.xamp;amp;snake.y[0]==food.y )/*Después de comer la comida*/

{

setcolor(0);/*Eliminar la comida en la pantalla*/

rectangle(food .x, food.y, food.x 10, food.y-10 /*Dibuja un rectángulo con el tipo y color de línea actual*/);

snake.x[snake.node]=-20 ;snake.y[snake.node]=-20;

/*Primero, coloque la nueva sección fuera de la vista y Tómelo desde el frente la próxima vez que haga un bucle.

La posición de una sección*/

snake.node; /*El cuerpo de la serpiente tiene una sección de largo*/

food.yes=1;/*Es necesario que aparezca nueva comida en la pantalla* /

score =10; /*Por cada trozo de comida consumido, la puntuación se acumulará en 10 puntos*/

if(score100==0)

{level; gamespeed=100000-400*level-300*level*level; /*Cada 10 alimentos ingeridos aumenta el nivel y acelera*/

PrScore(); nueva puntuación*/

setcolor(YELLOW); /*Establecer color de fuente*/

settextstyle(0, 0, 4) /*Establecer tipo de fuente*/

outtextxy(150, 200, "LEVEL UP"); /*mostrar texto*/

if(level==10)

{level=1, gamespeed=100000 -400*nivel-300* nivel*nivel;}

retraso(6000000);

retraso(6000000

retraso(6000000); p>

retraso(6000000);

retraso(6000000);

retraso(6000000);

retraso(6000000);

bar(50, 55, 455, 315); /*bar es una función que representa el rango lleno*/

}

PrScore() /*Emite el nuevo puntuación*/

}

setcolor(4); /*Dibujar una serpiente*/

for(i=0; ilt; serpiente.node; i )

rectángulo(serpiente.x[i], serpiente.y[i], serpiente.x[i] 10,

serpiente.y[i]-10); /p>

delay( gamespeed); /*Controlar la velocidad del juego*/

setcolor(0);

rectangle(snake.x[snake.node-1], serpiente.y[snake.nodo- 1],

snake.x[snake.nodo-1] 10, serpiente.y[snake.nodo-1]-10

} /*finalizar(! kbhit)*/ /*Retira la última sección de la serpiente con negro*/

if(snake.life==1)/*Si la serpiente muere, sal del bucle*/

break;

key=bioskey(0);/*Recibir clave*/

if(key==ESC)/*Presione ESC para salir*/

break;

else

if(key==UPamp;amp;snake.direction!=4)

/*Determinar si moverse en la dirección opuesta */

snake.direction=3

else

if(key==RIGHTamp; amp; Snake.direction!=2 )

snake.direction=1

else

if(key==LEFTamp;amp;

; serpiente.dirección!=1)

serpiente.dirección=2;

else

if(key==DOWNamp;amp;snake.dirección!= 3)

snake.direction=4;

}/*end while(1)*/

}

/*Juego terminado */

void GameOver(void)

{

cleardevice(); /*Borrar pantalla*/

PrScore();

setcolor(RED); /*Establecer color de fuente*/

settextstyle(0, 0, 4); /*Establecer tipo de fuente*/

outtextxy); (200, 200, "JUEGO TERMINADO"); /*Mostrar texto*/

getch();

}

/*Salida de puntuaciones y niveles del juego. */

void PrScore(void)

{

char str1[20] /*Establecer matriz de caracteres*/

setfillstyle; (SOLID_FILL, 0);

bar(50, 15, 390, 35); /*Rellenar el cuadro rectangular*/

setcolor(6); * /

settextstyle(0, 0, 2); /*Establecer la posición de visualización de la matriz*/

sprintf(str1, "score d nivel d", puntuación, nivel); /* Mostrar contenido de la matriz*/

outtextxy(55, 20, str1

setcolor(YELLOW); /*Establecer color de fuente*/

settextstyle); (0 , 0, 2); /*Establecer tipo de fuente*/

outtextxy(250, 400, "EXIT=ESC "); /*Mostrar texto*/

}

void Close(void)

{

closegraph()

}