Código fuente de WRText
# incluir ltgraphics.h gt
# incluir ltstdlib.h gt
# incluir lttime.h gt p>
# include ltdos.h gt
#Definir el número máximo de uniones 200
#Definir izquierda 0x4b00
#Definir derecha 0x4d00
#Definir 0x5000 abajo
#Definir hasta 0x4800
#Definir ESC 0x011b
#Definir MV_RIGHT 1
#Definición MV_LEFT 2
#Define MV_UP 3
#Define MV_DOWN 4
void init graph(void); /*Función de inicialización del controlador de gráficos*/
void DrawFence(invalid);/*Dibuja la escena del juego*/
void GameOver(int score);/*Finalizar el juego*/
void gameplay(void) ;/ *Proceso detallado del juego*/
void pr score(int score);/*Resultado de salida*/
Estructura alimentaria/*Definición de estructura alimentaria*/ p >
{
int x; /*coordenada en abscisa de los alimentos*/
int y;/*coordenada vertical de los alimentos*/
int addFood/ *Determinar si aparecerá la variable de comida*/
};
Estructura serpiente/*Definición de estructura de serpiente*/
{
int x[MAX_JOINTS];/*Guardar las coordenadas de la columna de la primera parte de la serpiente en la pantalla*/
int y[MAX_JOINTS];/*Guardar la línea de la primera parte de la serpiente en la pantalla Coordenadas*/
Uniones internas /*Número de nudos de la serpiente*/
dirección int; /*Dirección de movimiento de la serpiente*/ p>
int life/* La vida de la serpiente, 0 significa viva, 1 significa muerta*/
};
/*Función principal*/
Principal()
{
int graph();/*Controlador de gráficos*/
draw valla();/*Escena del juego*/
Propiedad del juego();/*El proceso específico de jugar el juego*/
closegraph();/*Fin del gráfico*/
}
/*Función de inicialización del controlador gráfico */
void InitGraph(void)
{
int gd = DETECT, GM ; p>
init gráfico( amp; gd , ampgm, "";
cleardevice();
setbkcolor(azul);
cleardevice()
setcolor( blanco);
settextstyle(DEFAULT_FONT, HORIZ_DIR, 3
outtextxy(170, 150, "Serpiente"); >
outtextxy(219, 254, "Listo");
setcolor(azul);
borrar dispositivo();
}
/*Juego En la pantalla de inicio, las coordenadas de la esquina superior izquierda son (50, 40) y las coordenadas de la esquina inferior derecha son (610, 460 */
>
Valla de dibujo no válida (no válida)
{
int I;
setbkcolor(verde claro);
establecer color (11);
setlinrstyle(SOLID_LINE, 0, THICK _ WIDTH);
/*Dibujar una valla*/
for(I = 50; i lt=600; i =10)
{
Rectángulo (I, 40, i 10, 49); /*Mayor que*/
Rectángulo ( I, 451, i 10, 460); /*menor que*/
}
for(I = 40; i lt=450; i =10)
{
Rectángulo (50, I, 59, I 10); /*Izquierda*/
Rectángulo (601, I, 610, I 10); */
}
}
/*Controla la serpiente codiciosa para comer comida*/
Juego no válido (nulo) p>
{
int i,key
int gamespeed = 22000/*Controlar la velocidad del juego*/
int puntuación = 0;/*Grabar Puntuación del juego*/
Estructura de comida; /*Estructura de comida variable*/
estructura Serpiente serpiente; /* Estructura de serpiente variable*/
comida. = 1; /*1 significa que es necesario que aparezca nueva comida, 0 significa que la comida ya existe*/
snake life = 0 /*Establece el estado de vida de la serpiente en vivo*/
< p; >snake.direction = MV_right; /*Coloca la cabeza de la serpiente a la derecha*/snake . x[0]= 100 y[0]= 100; cabeza de serpiente */
serpiente. x[1]= 110; serpiente y[1]= 100;
serpiente = 2; 2*/
Prscore(score);
/*Repite el juego hasta presionar la tecla Esc*/
srand(time(NULL));
mientras(1)
{
mientras(!kbhit())
{ if(food.addfood==1)
{
comida . x = rand() 400 60
comida . *Aparece comida Finalmente, debe estar en toda la grilla para que la serpiente coma*/
Y (comida.x10! =0)
{
comida x;
}
Y (comida.y10!=0)
{
comida . y;
}
comida = = 0; p>
}
If(food.addFood==0) /*Si hay comida en la pantalla,*/
{
setcolor (verde);
Rectangle(comida.x, comida.y, comida.x 10, comida . x-10); I = serpiente .
p>{
serpiente . x[I]= serpiente . x[I-1];
serpiente . /p>
}
/*1, 2, 3, 4 significa izquierda, derecha, arriba, abajo determina el movimiento de la cabeza de la serpiente*/
Interruptor (serpiente dirección)
{
caso MV _ DERECHA: serpiente x[0] = 10;
caso MV _ IZQUIERDA: serpiente x[0]. ]- = 10; romper;
caso MV _ ARRIBA: serpiente y[0] = 10; 10; Romper;
}
/*Juzga si te has golpeado con la cuarta sección de la serpiente, porque la cabeza de la serpiente tiene dos secciones y es imposible darse la vuelta. en la tercera sección*/
for(I = 3; iltsnake.jointi)
{
if(snake . x[I]= = serpiente . x[0] amp ; ampsnake.y[i]==snake.y[0])
{
GameOver(puntuación); /*Error de visualización*/
vida de serpiente = 1; /*La serpiente muere*/
Romper;
}
}
/* Determina si la serpiente golpea la pared* /
if(snake . x[0] lt; 55 | | serpiente . x[0] gt; 595 | | serpiente . y[0] lt; 55 | ;455)
{
GameOver(score); /*Este juego ha terminado*/
vida de serpiente = 1 /*La serpiente muere*/.
Romper;
}
/*Después de los dos juicios anteriores, si la serpiente muere, salta del bucle interior y comienza de nuevo*/ p>
if(serpiente . vida = = 1)descanso;
if(serpiente . x[0]= = comida . x amp; ampSnake.y[0]==comida.y) /*Después de comer arroz*/
{
/*Borrar la comida en la imagen*/
establecer color(o);
Rectangle(food .x, food.y, food.x 10, food .y-10);
/*Primero coloque el nuevo segmento fuera de la vista y luego tome la posición del anterior. segmento en el siguiente bucle*/
snake .articulación; /*El cuerpo de la serpiente tiene una sección larga*/
comida agregar comida = 1; screen*/
Puntuación = 10;
Prscore(score);/*Salir nueva puntuación*/
}
/* Dibuja una serpiente*/
set color(4);
for(I = 0; iltsnake.jointi)
(
rectángulo(serpiente.x [i], serpiente.y[i],
serpiente.x[i] 10, serpiente.y[I]-10);
}
Retraso (velocidad del juego); /*Retraso para controlar la velocidad de la serpiente*/
/*Eliminar la última parte de la serpiente*/
conjunto
color(0);
Rectángulo (snake.x[snake.joint-1], serpiente.y[joint-1],
snake.x[snake.joint-1 ] 10, serpiente . y[snake . joint-1] 10);
}/* fin de while (!kbhit)*/
if (serpiente . vida = = 1 ) break; /*Si la serpiente muere, sal del bucle*/
key = BIOS key() /*Presiona la tecla de recepción*/
/*Determina si la tecla se mueve en la dirección opuesta, presione Esc para salir*/
if(key == Esc)break
else if(key == UP & ampSnake. Direction! =4)
snake.direction = MV _ ARRIBA
else if(key == DERECHA& serpiente, dirección!=MV_LEFT)
snake.direction = MV_right;
p>else if(key == IZQUIERDA amp; amp serpiente, dirección!=MV_RIGHT)
snake.direction = MV _ IZQUIERDA
else if(key == DOWN amp; amp serpiente, dirección! =MV_UP)
snake.direction = = MV _ DOWN
}/* while end(1)*/ p>
} /*Finalizar juego*/
Fin de juego no válido (puntuación de inteligencia)
{
cleardevice();
Prscore (puntuación);
setcolor(rojo);
settextxy(0, 0, 4);
outtextxy(200, 200, "juego over");
p>
Get()
}
/*Resultado de salida*/
Prscore no válido( int puntuación)
{
char str[10];
setfillstyle(solid_FILL,YELLON);
Bar(50,15,220 ,35);
establecer color(6);
settextstyle(0, 0, 2);
sprintf(str, "score: d", puntuación);
outtextxy(55, 20, str);
}