Juego de programación funcional
# 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++;
}
} p>
}
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;
}