Código fuente de programación en lenguaje C relativamente complejo.
# include ltstdio.h gt
# include ltconio.h gt
# include ltstdlib .h gt
# incluir ltwindows.h gt
# incluir lttime.h gt
#¿Definir zlx 10? // Las coordenadas incrementales (X) evitan que el marco del juego se mueva hacia un lado.
#define zly 3 //Las coordenadas incrementales (y) evitan que el marco del juego se mueva hacia los lados.
¿#Definir W 26? //El ancho del cuadro del juego
#Definición H 24? //La altura del cuadro del juego
int jiem[22][22]={0}, wj = 10;? //Matriz de interfaz, posición local (el valor inicial es 10)
velocidad int = 4, densidad = 30, puntuación = 0, muerte = 0 // velocidad del enemigo, densidad del enemigo, rendimiento del jugador, frecuencia de muerte; .
int m=0,n=0;? // m, n son variables que controlan el avión enemigo.
¿void gtxy (int x, int y)? //Función para controlar la posición del cursor
{Posición de coordenadas;
Posición. X=x? Ubicación. ¿Y = y?
SetConsoleCursorPosition(GetStdHandle(STD _ OUTPUT _ HANDLE), pos);
}
¿No es válido? color(int?a)? //Función para establecer el color (A debe ser 1-15)
{ SetConsoleTextAttribute(GetStdHandle(STD _ OUTPUT _ HANDLE), a }
void yinc(int x=); 1,int y=0)? //La función de ocultar el cursor
{Console_cursor_information? gb={x, y}; //Establece y en 0 para ocultar.
SetConsoleCursorInfo(GetStdHandle(STD _ OUTPUT _ HANDLE), ampGB
}
void csh()? //Función de inicialización
{ int I;
Color (7);
gtxy(zlx, zly); gtxy(zlx W-2,zly);printf("╗");? // Las esquinas superior izquierda y derecha del cuadro
gtxy(zlx, zly H-1); ("╝ "); // Baja las dos esquinas del marco
for(I = 2; i ltw-2; i = 2) {gtxy(zlx i, zly);? printf("═");}?//Imprimir el marco horizontal superior
for(I = 2; i ltw-2; i = 2) {gtxy(zlx i, zly H-1); ("═");} ?//Imprimir el marco horizontal
for(I = 1;i lth-1;i) { gtxy(zlx,zly I);? printf("║");}//Imprime el marco vertical izquierdo
for(I = 1;i lth-1;i) {gtxy(zlx W-2,zly I);printf(" ║ "); }?//Imprimir el marco vertical derecho
Color (14); gtxy (19, 2); Printf ("Destruir aviones enemigos"); Color (10);
gtxy(37, 5); printf ("configuración: Esc ");
gtxy(37, 7); Printf ("Emisión: ↑"); (37, 9); printf("Control: ←→");
gtxy(37, 11); 37, 13); Printf("Muerte: d ", muerte);
yinc(1, 0);
}
void qcjm()? //Borrar función de interfaz
{int i, j;
for(I = 0; i lth-2; i)
for(j = 0 ;j ltw-4; j ){gtxy(zlx 2 j, zly 1 I);}
}
void feiji()? //Función de movimiento de la aeronave
{int i, j;
for(I = 21; i gt=0; i-)? // De abajo hacia arriba es para evitar que los aviones enemigos salgan directamente del conjunto.
for(j = 0; j lt22; j )
{ if(I = = 21 amp; ampjiem[i][j]==3)? jiem[I][j]= 0;? //Asigne 0 a la línea inferior para evitar cruzar la línea.
? si(jiem[i][j]==3)? jiem[i][j]=0,jiem[I 1][j]= 3;
}
if(jiem[20][wj]= = 3 amperios; ampjiem[21][wj]= = 1)muerte;
}
pastilla morada vacía()? //Función de movimiento de bala
{ int i,j;
for(I = 0;ilt22;i)
for(j = 0; j lt22 ; j )
{ if(I = = 0 amp; ampjiem[I][j]= = 2)jiem[I][j]= 0;
if (jiem [i][j]==2) {? if(jiem[I-1][j]= = 3)puntuación = 100, printf(" \ 7 ");?
jiem[i][j]=0,jiem[I-1][j]= 2;}
}
}
¿Desactivar impresión (?)?//Función de interfaz de salida
{int i, j;
qcjm();
for(I = 0 ;ilt22;i )
for(j = 0;j lt22;j )
{ gtxy(12 j, 4 I);
if( jiem [I][j]= = 3){ Color(13); printf("□");}
if(jiem[I][j]= = 2){ Color(10) ; printf(" . ");}
if(jiem[I][j]= = 1){ Color(10);printf("■");}
}
gtxy(37,11);Color(10);Printf("Puntuación: d", puntuación);
gtxy(37,13);Printf("Muerte: d ", muerte);
}
configuración nula()? //Función de configuración del juego
{ qcjm();
gtxy(12, 4); Printf("Selecciona la velocidad del enemigo: "); 12, 5); printf("? 1. Rápido 2. Medio 3. Lento >;>);
Cambiar(getche())
? {caso '1': velocidad = 2;
Caso "2": velocidad = 4
Caso "3": velocidad = 5; :gtxy(12, 6); printf("? ¡No! Valor predeterminado");
? }
gtxy(12, 7); );
gtxy(12,8);printf("? 1. Grande 2. Mediano 3.
pequeño >; >);
Switch(getche())
{Caso "1": Densidad = 20
Caso 2: Densidad = 30;? Romper;
Caso "3": Densidad = 40; Romper;
? Predeterminado: gtxy(12,9); printf("? ¡No! Valor predeterminado"); }
for(int I = 0;i lt22;i)
for(int j = 0;j lt22;j)jiem[I][j]= 0;
jiem[21][wj = 10]= 1;jiem[0][5]= 3;
gtxy(12,10);printf("? Presione cualquier tecla para guardar... ");
getch();
qcjm();
}
¿Ejecución en seco()? //Función de ejecución del juego
{ jiem[21][wj]= 1;? //El valor de 1 representa nuestra máquina (2 es la viñeta).
jiem[0][5]= 3; //Un valor de 3 indica aviones enemigos.
SetConsoleTitle("Destruir aviones enemigos");? //Establece el título de la ventana
while(1)
{?if (kbhit())? //Presione una tecla para controlar que mi máquina se mueva hacia la izquierda y hacia la derecha, inicie o configure.
? {int clave
? if((clave = getch())== 224)clave = getch();
? ¿Interruptor (llave)?
? {Caso 75: if(wj gt; 0) jiem[21][wj]=0, jiem[21][-wj]= 1;
? Caso 77: Si (wj lt20)?jiem[21][wj]=0, jiem[21][wj]= 1;? Romper;
? Caso 72: jiem[20][wj]= 2;
? Caso 27: Set();
}
}
¿Si (n densidad==0)? //Controla la velocidad de los aviones enemigos.
{ n = 0; srand((sin firmar) tiempo(nulo)); jiem[0][rand() 20 1]= 3;
}
if( m velocidad = = 0){ feiji(); m = 0;} ?// Controlar la velocidad de movimiento de los aviones enemigos (en relación con las balas)
Zidan();? //Movimiento de la bala
print();? //Interfaz de salida
Sleep(120);? //Retraso 120 milisegundos
}
}
int main()
{ csh();
? ejecutar();
? Devuelve 0;
}