Red de conocimiento informático - Problemas con los teléfonos móviles - Código de programación de juegos de Windows

Código de programación de juegos de Windows

# incluir <bits/stdc++.

h & gt

# include & ltstdlib.h & gt

# include & ltdos.h & gt

#define left 0x4b00

#definir derecha 0x4d00

#definir abajo 0x5000

#definir hasta 0x4800

#definir ESC 0x011b

int i, clave

int puntuación = 0;

int gamespeed = 32000

Estructura alimentaria/*Estructura alimentaria*/

{

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

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

int yes/*Variable para si aparece la comida*/

}Alimento;

Estructura serpiente/*estructura serpiente*/

{

int x[N];

int y[N];

int node; /*Número de nudos de la serpiente*/

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

int life/*La vida de la serpiente, 0 está vivo, 1 está muerto*/

}Serpiente;

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

void Close(invalid);/*Función cerrar el juego*/

void DrawK(invalid);/*Función de dibujo*/

void game over( void); /*Función de error de salida*/

void gameplay (); /*Programa principal de la función de control del juego*/

void PrScore(void); función* /

DELAY(char ch)/*Ajustar velocidad del juego*/

{

if(ch=='3 ')

{

Retraso (velocidad del juego); /*retraso es la función de retraso*/

}

else if(ch=='2 ')

{

Retraso (velocidad del juego);

}

}

Menú()/*Inicio del juego menu*/

{

char ch

printf("Seleccione la velocidad del juego:\ n ");

printf(" 1-rápido 2-Normal 3-Lento\n ");

printf(" \nPor favor presione el número..\n ");

Hacer

{ ch = getch();}

Y (ch! = ' 1 ' &&ch! = ' 2 ' &&ch! ='3');

clr SCR();

Retorno (ch);

}

/*Función principal* /

Administrador no válido (no válido)

{

int ch

ch = Menú();

init();

DrawK();

Juego (cap);

cerrar();

inicialización de vacío (void)

{

int gd=DETECT, GM;

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

borrar dispositivo();

}

anular DrawK(no válido)

{

establecer color(11);

setlinestyle(SOLID_LINE, 0, THICK _ WIDTH);

>for(I = 50;i<=600;i+=10)

{

Rectángulo (I, 40, i+10, 49) /*Dibuja el borde superior *; /

Rectangle(I, 451, i+10, 460); /*Dibujar el borde inferior*/

}

for(I = 40; i<=450;i+=10)

{

Rectangle(50,I,59,I+10);/*Dibujar borde izquierdo*/

Rectángulo(601, I, 610, I+10); /*Dibuja el cuadro derecho*/

}

}

Juego no válido (char ch)

{

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

comida sí = 1; /*1 representa la apariencia de la comida, 0 representa la presencia de comida*/

serpiente. vida = 0;

serpiente. dirección = 1;

serpiente. y[0]= 100;

serpiente . x[1]= 110; y[1]= 100;

nodo = 2;

PrScore();

Y (1) /*Puede repetir el juego*/

{

Y (!Khit ())/*Snake no El botón se mueve solo*/

{

If(food.yes==1) /*Necesita comida*/

{

comida . (comida.x%10!=0)

comida x++;

Y (comida.y%10!=0)

comida . y++; /*Determina si aparece comida en toda la celda*/

comida sí = 0 /*Ahora hay comida*/

}

If (food.yes==0) ​​/*Mostrar comida disponible*/

{

setcolor(green);

Rectangle (comida.x, comida .y,comida.x+10,comida.y-10);

}

for(I = serpiente.nodo-1;i>0;I -)/* Algoritmo de movimiento de la serpiente*/

{

serpiente x[I]= serpiente . [I] = serpiente . y[I-1]; /* Algoritmo de movimiento del cuerpo de la serpiente */

}

Switch(snake.direction) /* Algoritmo de movimiento de la cabeza de la serpiente para controlar Movimiento*/

{

caso 1: serpiente x[0]+= 10;

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

Caso 3: serpiente y[0]-= 10; /p>

}

for(I = 3; I & ltsnake . node; I++) /*Determinar si la cabeza choca con el cuerpo*/

{

if(serpiente. x[I]= = serpiente. x[0]& & ampsnake.y[i]==serpiente.y[0])

{

juego terminado();

serpiente.

vida = 1;

Romper;

}

}

/*Aquí se explica cómo juzgar si se ha topado con una pared* /

if(serpiente. x[0]<55 | | serpiente. x[0]>595 | | serpiente. y[0]<55 | ;455)

{

juego terminado();

vida de serpiente = 1;

}

If(snake.life== 1) /*Salir del ciclo si mueres*/

Romper;

if(snake . x[0]= = comida . x & amp ;& ampSnake.y[0 ]==food.y) /*Determinar si la serpiente ha comido comida*/

{

set color(0);

Rectangle (food. x, comida.y, comida.x+10, comida. y-10); /*Limpia la comida con negro después de comer*/

serpiente ]=-20; node]=-20; /*Ahora oculta la parte agregada*/

snake .++;

comida yes = 1;

Puntuación += 10. ;

PrScore();

}

establecer color(4);/*cada vez Limpie la parte posterior del cuerpo después del ejercicio */

for(I = 0; i<snake.node;i++)

Rectangle(snake.x[i], serpiente.y[i] , serpiente.x[i]+10, serpiente. y[I]-10);

Retraso (velocidad del juego);

Retraso (ch);

establecer color(0);

Rectángulo (snake.x[snake.nodo-1], serpiente.y[snake.nodo-1], serpiente.x[snake.nodo-1]+10, serpiente. y[serpiente. nodo-1]- 10);

}

if(snake.life==1)

Romper;

p>

clave = clave BIOS( 0); /*Botón Aceptar*/

if(key==ESC)

Pausa;

Otros

if(key) == ¡ARRIBA&& serpiente, dirección! =4)/*Determinar si se debe cambiar de dirección*/

snake .direction = 3

Otros

if(key = = DERECHA & amp; & amp Serpiente, dirección =2)

serpiente dirección = 1;

Otros

if(key = = IZQUIERDA & & Serpiente, dirección! = 1)

dirección serpiente = 2;

Otro

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

p>

dirección serpiente = 4;

}

}

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

{< / p>

borrar dispositivo();

setcolor(rojo);

settextstyle(0, 0, 4);

outtextxy(200, 200); , "Se acabó el juego");

getch();

>}

PrScore no válido(no válido)

{

char str[10];

setfillstyle(SOLID_FILL, amarillo);

Barra(50, 15, 220, 35);

establecer color(6);

settextstyle(0, 0, 2);

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

outtextxy(55, 20, str);

}

Cierre no válido; (No válido)

{

getch();

closegraph()

}