Red de conocimiento informático - Consumibles informáticos - Buscando puntuaciones altas en programación en lenguaje C, programa Caterpillar

Buscando puntuaciones altas en programación en lenguaje C, programa Caterpillar

Lo que quieres es el programa de programación Snake

#define N 200

#include gráficos.hgt;

#include; lt;stdlib.hgt;

#include 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; /*score*/

int gamespeed=50000; /*ajustar la velocidad del juego*/

struct Food

{

int x; /*Coordenada en abscisa de la comida*/

int y;/*Coordenada vertical de la comida*/

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

}comida;/*Estructura alimentaria*/

struct Snake

{

int x[N]; p> int y[N];

int node; /*Número de nodos de serpiente*/

int dirección; /*Dirección del movimiento de la serpiente*/

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

}serpiente;

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

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

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

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

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

void PrScore(void);

/*Función principal*/

void main(void)

{

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

DrawK(); /*Pantalla de inicio*/

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

Cerrar(); gráficos*/

}

/*Controlador de gráficos*/

void Init(void)

{

int gd = DETECT, gm;

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

cleardevice(); p>}

/*Pantalla de inicio, la pared con las coordenadas de la esquina superior izquierda (50, 40) y las coordenadas de la esquina inferior derecha (610, 460)*/

void DrawK (nulo)

{

/*setbkcolor(LIGHTGREEN);*/

setcolor(11);

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

for(i=50; ilt; =600; i

=10)/*Dibujar una valla*/

{

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

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

}

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

{

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

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

}

}

/*El proceso específico de jugar 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 la comida ya existe*/

serpiente.life=0; /*alive*/

serpiente.direction=1 /*dirección a la derecha*/

serpiente.x[0 ]=100; serpiente.y[0]=100; /*cabeza de serpiente*/

serpiente.x[1]=110;

Snake.node=2; /*Número de secciones*/

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

while(1)/* Puedes jugar el juego repetidamente, presiona la tecla ESC Fin*/

{

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

{

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

{

alimento .x=rand()400 60;

food.y=rand()350 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 comer*/

food.x

while(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

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

}

for(i=snake.node-1;igt;0;i--) /*Cada eslabón de la serpiente avanza, que es la clave del algoritmo de las serpientes codiciosas*/

{

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

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

}

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

sw.

itch(snake.direction)

{

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

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

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

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

}

for(i=3;ilt;snake.node;i)/*Comience desde la cuarta sección de la serpiente para determinar si se golpeó a sí misma, porque la cabeza de la serpiente tiene dos secciones, es imposible dar la vuelta en el tercer cuarto*/

{

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

{

GameOver() /*Falló la visualización*/

serpiente. vida=1;

p>

descanso

}

}

if(snake.x[0]lt; 55| |snake.x[0]gt ;595||snake.y[0]lt;55||

Snake.y[0]gt;455)/*Si la serpiente chocó contra la pared*/

{

GameOver(); /*Este juego ha terminado*/

serpiente.life=1 /*La serpiente muere*/

}

if(snake.life==1)/*Después de los dos juicios anteriores, si la serpiente muere, salta del bucle interno y comienza de nuevo*/

descanso;

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

{

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

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

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

/*Saca la nueva sección de mire primero y tómelo la próxima vez a través del bucle La posición de la sección anterior*/

serpiente.node; /*El cuerpo de la serpiente es una sección más larga*/

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

puntuación =10

PrScore() /*Salir nueva puntuación*/

<; p> }

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

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

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

serpiente.y[i]-10

retraso); (gamespeed);

setcolor(0) ;/*Elimina la última parte de la serpiente con negro.

Sección*/

rectángulo(snake.x[snake.node-1], serpiente.y[snake.node-1],

serpiente.x[snake.node-1 ] 10, serpiente.y[snake.node-1]-10);

} /*end while(!kbhit)*/

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

break;

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

if(key= =ESC)/*Presione la tecla 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; Snake.direction!=1)

Snake.direction=2;

else

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

serpiente.dirección=4

}/*end while(1)*/

}

/*Juego terminado* /

void GameOver(void)

{

cleardevice()

PrScore();

setcolor(RED);

settextstyle(0, 0, 4

outtextxy(200, 200, "JUEGO TERMINADO"); >

getch() ;

}

/*Puntuación de salida*/

void PrScore(void)

{

char str[10];

setfillstyle(SOLID_FILL, AMARILLO

bar(50, 15, 220, 35); > setcolor(6);

settextstyle(0, 0, 2);

sprintf(str, "puntuación: d", puntuación

outtextxy); (55, 20, str) ;

}

/*Fin del gráfico*/

void Close(void)

{

getch();

closegraph();

}