Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente del juego VC

Código fuente del juego VC

#Definición N 200

# incluir ltgraphics.h gt

# incluir ltstdlib.h gt

# incluir ltdos.h gt

#definir izquierda 0x4b00

#definir derecha 0x4d00

#definir abajo 0x5000

#definir hasta 0x4800

#definir ESC 0x011b

int i, key

int score = 0 /*score*/

int gamespeed = 50000/*Ajusta la velocidad del juego tú mismo*/

Alimento estructurado

{

int x; /*coordenada en abscisa del alimento*/

int y;/*coordenada en abscisa del alimento*/

int yes/*Determinar si aparecerá la variable de los alimentos*/

}Alimentos /*La estructura de los alimentos*/

Estructura de la serpiente

{

int x[N];

int y[N];

int nodo /*Número de nudos de serpiente*/

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

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

}Serpiente;

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

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

void game over(void); /*Fin del juego*/

void gameplay (void); proceso de juego*/

void PrScore(void);/*Resultado de salida*/

/*Función principal*/

Administrador no válido (void )

{

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

DrawK() /*Pantalla de inicio*/

Jugabilidad();/ *Proceso detallado del juego*/

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

}

/*Gráficos controlador*/

inicialización nula (void)

{

int gd=DETECT, GM;

init gráfico( amp; gd , ampgm, " c: \ \ TC ");

clear device();

}

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

void DrawK (inválido)

{

/*setbkcolor ( verde claro) */

set color(11);

setlinestyle(SOLID_LINE, 0, THICK _ WIDTH); /*Establecer estilo de línea*/

for(I = 50; Ilt=600 ;I =10)/*Dibujar una valla*/

{

Rectángulo (I, 40, i 10, 49); *Mayor que*/

Rectangle(I, 451, i 10, 460); /*abajo*/

}

for(I = 40; i lt = 450; i = 10)

{

Rectángulo (50, I, 59, I 10); 601, yo, 610

, I 10); /*right*/

}

}

/*El proceso específico de jugar*/

Juego no válido(void)

{

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

comida sí = 1 /*1 significa nuevo. La comida necesita aparecer, 0 significa que la comida ya existe*/

snake life = 0; /*alive*/

snake direction = 1 /*direction to the right. */

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

serpiente ]= 100;

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

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

Y (1 )/*Puedes reproducir el juego repetidamente y presiona ESC para finalizar*/

{

Y (!Khit ())/*La serpiente se mueve sola sin presionar un botón*/

{

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

{

comida . ;

comida . y = rand() 350 60;

Y (food.x10!=0)/*Después de que la comida aparezca aleatoriamente, la comida debe estar solo en toda la cuadrícula. las serpientes pueden comer */

comida x ;

Y (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);

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

}

for(I = serpiente . nodo-1;I gt0;I-)/*Cada eslabón de la serpiente avanza, que es la clave de la serpiente algoritmo*/

{

serpiente . x[I]= serpiente .

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

}

/*1, 2, 3, 4 significa derecha, izquierda, arriba y abajo. Este juicio puede mover la cabeza de la serpiente*/.

Cambio (dirección de la serpiente)

{

caso 1: serpiente x[0] = 10;

Caso 2. : serpiente . = 10; break;

}

for(I = 3; I ltsnake . node; I )/* Juzga si te has golpeado desde el cuarto cuarto del serpiente, debido a que la cabeza de la serpiente tiene dos secciones, es imposible girar la tercera sección*/

{

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

{

juego terminado() /*fallo de visualización*/

serpiente . vida = 1;

Romper;

}

p>

}

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

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

{

juego terminado();/*Este juego terminó */

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

}

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

Descanso;

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

{

set color(0); /*Eliminar comida de la imagen*/

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

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

/*Primero coloque el nuevo segmento fuera de la vista y tome la posición del segmento anterior en el siguiente bucle*/

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

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

Puntuación = 10;

PrScore();/*Generar nueva puntuación*/

}

establecer color(4);/*Dibujar una serpiente*/

for(I = 0; iltsnake.node;i)

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

snake . y[I]-10);

Delay (gamespeed);

set color(0); /*Eliminar la última sección de la serpiente con negro*/

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

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

} /*end while(!kbhit)*/

If(snake.life==1)/*Si el la serpiente muere, sale del bucle*/

Break;

key = BIOS key(0); /*Recibir botón*/

If(key) ==ESC)/ *Presiona ESC para salir*/

Pausa;

Otros

if(key == ARRIBA amp; amp serpiente, dirección! =4)

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

dirección serpiente = 3;

Otros

. if( clave = = DERECHA amp; amp serpiente, dirección! =2)

dirección de la serpiente = 1;

Otro

if(clave = = IZQUIERDA. amp; amp serpiente, dirección! =1)

serpiente dirección = 2;

Otro

if(clave == ABAJO amp; amp serpiente, dirección !=

3)

dirección de la serpiente = 4;

}/*end while(1)*/

}

/*Juego terminado */

Juego terminado no válido (no válido)

{

borrar dispositivo();

PrScore();

setcolor(rojo);

settextstyle(0, 0, 4);

outtextxy(200, 200, "Juego terminado"); getch();

}

/*Resultados de salida*/

PrScore no válido (no válido)

{

char str[10];

setfillstyle(SOLID_FILL, amarillo);

Bar(50, 15, 220, 35);

establecer color( 6);

settextstyle(0, 0, 2);

sprintf(str, "score: d", puntuación);

outtextxy(55, 20, str);

}

/*Fin del gráfico*/

Cierre no válido (no válido)

{

getch();

closegraph();

}

Este es el código de Snake, con explicaciones detalladas y se puede ejecutar correctamente.