Juego de programación funcional

Falling Bird

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

# include & ltconio.h & gt

p>

# include & lttime.h & gt

# include & ltWindows.h & gt

int Calificación = 1, Puntuación = 0, Max_blank = 9, Distancia = 18;

Estructura pájaro { int x; int y };? //Definir un tipo de datos Birds (con 3 miembros)

Birds * Bird = (Birds *)malloc(sizeof(Birds)). ? //Defina la variable puntero tipo Bird of Birds y asigne un valor inicial.

struct Bg{int x, y; int l_blankBg *priBg *siguiente;};? //Definir un tipo de datos Bg (con 5 miembros)

Bg * Bg 1 =(Bg *)malloc(sizeof(Bg));? //Defina la variable de puntero de tipo Bg Bg1 y asigne un valor inicial.

posición vacía (int x, int y)? //Función de posicionamiento del cursor (salida en la posición especificada)

{COORD pos = {x - 1, y-1};

HANDLE Out = GetStdHandle(STD _ OUTPUT _ HANDLE ) ;

SetConsoleCursorPosition(Out, pos);

}

void Csh()? //Inicializar interfaz

{

printf("════════════════════════════ ══════════\n");

printf("■■■Flappy Bird \ n lenguaje C\ n ");

printf("■ ■■\ n ");

printf("■■■\ n ");

printf("■■■■Tonto:AA poss original \ n ");

Printf(" ■■ ■Fecha del violín: 2065 438+04.2 \ n ");

printf("■■■\ n "); ("■■■■Adaptado de: Understanding Cicada 2021.7 \ n ");

Printf(" ■■ ■■Operación: Presione la tecla de flecha hacia arriba para dejar que el pájaro despegue\ n "); /p>

printf("■■\ n ");

printf("■■\ n ");

printf("■■■\ n ") ;

p>

printf("■■■\ n ");

printf("■■■\ n ");

printf("■ ══════════ ═══════ ═════════════════════\n");

printf("? Presione el botón para continuar.. .");

getch();

system("cls");

}

¿void PrFK()? //Cuadro de salida (área de rango del juego)

{ int I;

Posición (1, 1); printf ("╔");? Posición (79, 1); printf ("╗");

Posición (1, 24); Posición(79,24);printf("╝");

for(I = 3;i<= 78;i += 2){Posición(i,1);printf("═ ") ; posición(I, 24); printf("═");}

for(I = 2;i<=23;i++)

{posición(1, I); printf ("║"); if (i & lt11) printf ("0%d", I-1); else printf ("%d", I-1); I); printf ("║");

}

Posición (4, 25); Printf ("El pájaro aparecerá pronto, presione el botón listo para despegar. .");

getch();

Posición (4, 25); printf("?);

}

void CreatBg()? //Crea coordenadas de obstáculos (fácil de imprimir)

{ Bg * Bg2 =(Bg *)malloc(sizeof(Bg));

BG 1- >x = 90°; BG 1->y = 8;? //Determina las coordenadas básicas de un par de obstáculos (el valor está fuera del cuadro del juego en este momento)

bg2->x = bg 1->x + distancia bg2->y = 9? //Coordenadas básicas xey del siguiente obstáculo

BG 1->;l_blank = Max_blank-Grade;? //La distancia en blanco entre las partes superior e inferior del obstáculo l_blank

bg2->; l_blank = Max_blank-Grade;

BG 1->; pri = Bg2

bg2->siguiente = BG 1 bg2->pri = BG 1

}

void InsertBg(Bg * p)? //Cambie aleatoriamente la coordenada Y del obstáculo para hacer que el canal en blanco cambie hacia arriba y hacia abajo.

{ int temp

Bg * Bgs =(Bg *)malloc(sizeof(Bg));

bgs-& gt; gt;prioridad->x + distancia;

bgs->l_blank = Max_blank-Grade;

srand((int)time(0) );? //Iniciar el generador de números aleatorios

temp = rand();? // Genera un número aleatorio y asígnalo a temp.

if(temperatura % 2 == 0)

{ if((temp % 4+p-& gt; prioridad-& gt; y+Max _ en blanco-Grado) < ;21)

bgs->y = p->Prioridad->y+temp % 4;

En caso contrario Bgs->y = p->Prioridad- >y;

}

Otro

{ if((p->Prioridad-& gt;ytemp%4)>2)Bgs-> ;y=p->Prioridad->ytemp%4)

En caso contrario Bgs->y=p- >prioridad->y;

}

bgs->pri = p->pribgs->next = p;

p->prioridad->next=Bgsp->pri=Bgs

}

¿Anular CreatBird()? //Establece las coordenadas del pájaro (inicialmente imprime la posición del pájaro)

{ Bird->x = 41;Bird->y = 10;}

int CheckYN (Bg*q)? // Determina si el juego ha terminado (0 significa terminado, 1 significa no terminado)

{ Bg * p = q int I = 0

And (++I &; lt = 5)

{ if(Bird->y>23) devuelve 0;

Si (Bird->x = = p->x&& &bird->y< =p->y) devuelve 0;

if ((pájaro-> x = = p->x + 1 ||pájaro->x = = p-> 0;

Si (pájaro-> ;

si ((pájaro->x = = p->x ||pájaro->x == p->x + 1 | |pájaro->x = = p-> p>

p = p-& gt;

}

Devolver 1; >}

¿Anular Check_Bg (Bg *q)? //Comprueba si las coordenadas del obstáculo inicial están dentro del área de juego.

{ Bg * p = q; int i = 0, temp

And (++I & lt; = 5)

{ if(p- >x>-4)p = p->Siguiente;

Otro

{ srand((int)time(0));? temp = rand();

if(temperatura % 2 == 0)

{ if((temp % 4+p-& gt;y+Max _ calificación en blanco) <21)p->y = p->y+temp % 4;

else p->y = p->y;p->x = p->Prioridad ->x+distancia;

p->l_blank = Max_blank-Grade;

}

Otro

{ if(( p->ytemperatura%4)>2)p->;y = p->ytemperatura%4;

si no p->y = p->y;p->x = p->prioridad->x + distancia;

p->l_blank = Max_blank-Grade;

}

}

}

}

¿Anular Prt_Bg(Bg * q)? //Imprime los obstáculos (salida según sus coordenadas X e Y)

{ Bg * p = q; int i = 0, k, j

And (++ I & lt;= 5)

{ if(p-& gt;x & gt0 & amp&p->;x & lt= 78)

{ for(k = 2; k<p->y;k++){ Posición(p->x + 1,k);printf("■");printf("■");printf(" ");}

Posición( p->x, p->y);

printf("■");printf("■");printf("■");printf(" " );

Posición (p->x, p->y+p->l_blank);

printf("■");printf( "■"); printf("■") ; printf(" ");

k = k+p-& gt; l _ en blanco+1

for(k ;k & lt= 23;k++){ (p->;x + 1,k);printf("■");printf("■");printf(" ");}

}

p = p-> siguiente;

if (p->;x == 0)

{ for(j = 2 ;j<p->y;j++){ Posición(p- >x+1,j);printf("");printf("");}

Posición(p-> ; + 1, p->y+Max _ calificación-en blanco);

printf(" "); printf(" "); printf(" ");

j = j +Max _ grado-en blanco+1;

for(j;j & lt= 22;j++){ Posición(p->;x + 1,j);printf(" ");pr

intf(" ");}

}

}

}

void PrtBird()? //Imprime el pájaro

{Position(bird->x, bird->y-1); printf(" ");

Position(bird- >; p>}

¿void Loop_Bg(Bg *q)? //Mueve la coordenada X del obstáculo hacia la izquierda y registra el resultado.

{ Bg * p = q;int I = 0;

Y (++I<=5)

{ p->;x = p ->x-1;p = p->siguiente;

if (pájaro->x = = p->x)

{ Puntuación+= 1; /p>

Si (puntuación % 4 = = 0 &&level<4)nivel++;

}

}

}

int principal()

{ int I = 0; int t;

mientras (1)

{

csh(); (); crear BG();

insertar BG(BG 1); insertar BG(BG 1);

creat pájaro(); p>

mientras (1)

{if (!CheckYN(BG 1))break;

check _ Bg(Bg 1); PRT _ Bg(Bg 1) ;

PRT pájaro(); bucle _ Bg(Bg 1);

pájaro-> (GetAsyncKeyState(VK_UP))? //Presione la tecla de flecha hacia arriba.

{position(pájaro->x, pájaro->y-1 printf(" ");

pájaro->y=pájaro-& gt;y); -4;

}

Dormir(200);? //Retraso del programa 200 ms (el valor determina la velocidad del juego)

I = 0

}

Posición (6, 25

);

Printf("¡¿Se acabó el juego? Ingrese: 0. ¿Salir? 1. Jugar de nuevo");

scanf("%d ", & ampt); ( t = = 0)descanso;

sistema("cls"); puntuación = 0;

}

devuelve 0;

}