Un código de juego pequeño escrito con "vc" o "c", ¿cuál es el código fuente?
#includelt;graphics.hgt;
#includelt;stdlib.hgt;
#includelt;dos.hgt;
# definir IZQUIERDA 0x4b00
#definir DERECHA 0x4d00
#definir ABAJO 0x5000
#definir ARRIBA 0x4800
#definir ESC 0x011b
int i, clave;
int score=0;
int gamespeed=32000
struct Food /*Estructura de alimentos*/
p>
{
int x; /*La abscisa de la comida*/
int y /*La ordenada de la comida*/
int yes; /*Variable para determinar si aparece la comida*/
}comida;
struct Snack /*Estructura de la merienda*/
{ p>
int x[N];
int y[N];
int nodo; /*Número de nodos de serpiente*/
int dirección; /*La dirección de la serpiente*/
int vida; /*La vida de la serpiente, 0 viva, 1 muerta*/
}serpiente;
void Init(void); /*Controlador de gráficos*/
void Close(void); /*Cerrar función del juego*/
void DrawK(void); */
void GameOver(void); /*Función de fallo de salida*/
void GamePlay() /*Programa principal de la función de control del juego*/
void PrScore (void); /*Función de salida de puntuación*/
DELAY(char ch)/*Ajustar la velocidad del juego*/
{
if (ch== '3')
{
delay(gamespeed); /*delay es la función de retraso*/
delay(gamespeed);
}
else if(ch=='2')
{
retraso(velocidad del juego);
}
}
Menú()/*Menú de inicio del juego*/
{
char ch;
printf(" Por favor, elige la velocidad del juego:\n");
printf("1-Rápido 2-Normal 3-Lento\n");
printf("\ nPor favor presione los números .\n");
do
{ch=getch();}
while(ch!='1'amp. ;amp;ch! ='2'amp;amp;ch!='3');
clrscr();
return(ch);
}
/*Función principal*/
void main(void)
{
int ch;
ch=Menú();
Init();
DrawK();
GamePlay(ch
Cerrar(); ;
}
void Init(void)
{
int gd=DETECT, gm;
initgraph(amp;gd,amp;gm,"c:\\tc");
cleardevice();
}
void DrawK(void)
{
setcolor(11);
setlinestyle(SOLID_LINE, 0, THICK_WIDTH);
for(i=50; ilt); ;=600; i =10)
{
rectangle(i, 40, i 10, 49) /*Dibuja el borde superior*/
rectángulo(i, 451, i 10, 460); /*Dibujar el borde inferior*/
}
for(i=40; ilt; =450; i =10)
{
rectangle(50, i, 59, i 10); /*Dibujar el borde izquierdo*/
rectangle(601, i, 610, i 10); /*Dibuja el borde derecho*/
}
}
void GamePlay(char ch)
{
randomize(); /*Generador de números aleatorios*/
food.yes=1; /*1 significa que aparecerá comida, 0 significa que existirá comida*/
snake.life=0;
snake.direction=1;
snake.x[0]=100; serpiente.y[0]=100;
snake.x[1]=110; serpiente.y[1]=100;
snake.node=2;
PrScore();
while(1) /*El juego se puede repetir*/
{
while(!kbhit()) /*La serpiente se mueve sola sin presionar un botón*/
{
if(food.yes==1) /*Necesito comida*/
{
food.x=rand ( )400 60;
food.y=rand()350 60; /*Usa la función rand para generar coordenadas de alimentos aleatoriamente*/
while(food.x10!=0) p>
food.x;
while(food.y10!=0)
food.y /*Juzga si la comida aparece en toda la cuadrícula*/ p>
food.yes=0; /*Hay comida ahora*/
}
if(food.yes==0) /*Hay ahora se muestra la comida*/
{
setcolor(GREEN);
rectangle(food.x, food.y, food.x 10, food. y- 10);
}
for(i=snake.node-1;igt;0;i--) /*Algoritmo de movimiento de la serpiente*/
{
serpiente.x[i]=serpiente.x[i-1];
serpiente.y[
i]=snake.y[i-1]; /*Algoritmo de movimiento del cuerpo de Snake*/
}
switch(snake.direction) /*Algoritmo de movimiento de la cabeza de Snake para controlar el movimiento */
{
caso 1: serpiente.x[0] =10; romper;
caso 2: serpiente.x[0]-=10 ; romper;
caso 3: serpiente.y[0]-=10;
caso 4: serpiente.y[0 ] =10;
}
for(i=3; ilt; Snake.node; i ) /*Determinar si la cabeza choca con el cuerpo*/
{
if(snake.x[i]==snake.x[0]amp;amp;snake.y[i]==snake.y[0])
{
GameOver();
snake.life=1;
romper;
}
}
/*Lo siguiente es para determinar si golpea la pared*/
if(snake.x[0]lt; 55||snake.x[0]gt; 595||snake.y[ 0]lt; 55||snake.y[0]gt; 455)
{
GameOver();
snake.life=1;
}
if(snake.life==1) /*Salir del ciclo si muere*/
romper;
p>if(snake.x[0]==food.xamp;amp;snake.y[0]==food.y) /*Determinar si la serpiente ha comido comida*/
{
setcolor(0);
rectangle(food.x, food.y, food.x 10, food.y-10 /*Usa negro después de comer, limpia la comida*); /
snake.x[snake.node]=-20; Snake.y[snake.node]=-20; /*Ahora ponga la sección agregada fuera de la vista */
serpiente.nodo;
comida.yes=1;
puntuación =10
PrScore() ;
} p>
setcolor(4); /*Borrar el cuerpo detrás de cada movimiento*/
for(i=0; ilt; Snake.node; i )
rectangle( serpiente.x[i], serpiente.y[i], serpiente.x[i] 10, serpiente.y[i]-10);
retraso(velocidad del juego);
DELAY(ch);
setcolor(0);
rectangle(snake.x[snake.node- 1], serpiente.y[snake.node-1], serpiente .x[snake.node-1] 10, serpiente.y[snake.node-1]-10);
} p>
if(snake.life==1)
romper;
key=bioskey(0); /*Aceptar clave*/
if(key==ESC)
romper ;
el
se
if(key==UPamp;amp;snake.direction!=4)/*determinar si se debe cambiar de dirección*/
snake.direction=3;
else
if(key==RIGHTamp;amp;snake.direction!=2)
snake.direction=1;
else p >
if(key==LEFT&snake.direction!=1)
snake.direction=2;
else
si ( clave==ABAJO&snake.direction!=3)
snake.direction=4;
}
}
void GameOver(void)
{
cleardevice();
setcolor(ROJO);
settextstyle(0, 0, 4 );
outtextxy(200, 200, "JUEGO TERMINADO");
getch();
}
void PrScore. ( vacío)
{
char str[10];
setfillstyle(SOLID_FILL, AMARILLO);
bar(50, 15 , 220, 35);
setcolor(6);
settextstyle(0, 0, 2);
sprintf(str, "scord: d" , puntuación);
outtextxy(55, 20, str);
}
void Close(void)
{ p >
getch();
closegraph();
}
Serpiente