Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Urgente! ! ! Se requiere utilizar programación en lenguaje C para implementar un problema de saltar aros de fuego.

¡Urgente! ! ! Se requiere utilizar programación en lenguaje C para implementar un problema de saltar aros de fuego.

TC2.0 dispone de un programa de muestra de programación gráfica bgidemo.c.

Hay una subrutina que muestra el mapeo de la pantalla, con una nave extraterrestre volando alrededor de la pantalla.

Este programa se puede modificar fácilmente para adaptarlo a tus necesidades.

El programa no es difícil de entender.

Encontré este código. Hablemos de ello a grandes rasgos. LZ necesita encontrar la investigación de código completa por sí mismo, solo publicaré el párrafo relevante aquí.

void PutImageDemo(void)

{

static int r = 20;

static int StartX = 100;

static int StartY = 50;

struct viewporttype vp;

int PauseTime, x, y, ulx, uly, lrx, lry, size, i, width, height, paso;

void *Saucer;

MainWindow("Demostración de GetImage / PutImage");

getviewsettings( &vp );

/ *Dibujar platillo*/ El siguiente es un platillo volador simple dibujado pintando. Esta imagen del platillo volante fue previamente copiada en la memoria para su uso posterior.

setfillstyle( SOLID_FILL, getmaxcolor() );

fillellipse(StartX, StartY, r, (r/3)+2);

ellipse(StartX , StartY-4, 190, 357, r, r/3);

línea(StartX+7, StartY-6, StartX+10, StartY-12);

círculo (InicioX+10, InicioY-12, 2);

línea(InicioX-7, InicioY-6, InicioX-10, InicioY-12);

círculo(InicioX-10 , StartY-12, 2);

/* Leer imagen del platillo */ Aquí comenzamos a copiar la imagen pequeña del platillo volador en un búfer de memoria. Primero calcule el tamaño y el tamaño de memoria requerido.

ulx = InicioX-(r+1);

uly = InicioY-14;

lrx = InicioX+(r+1);

lry = InicioY+(r/3)+3;

ancho = lrx - ulx + 1;

alto = lry - julio + 1;

tamaño = imagesize(ulx, uly, lrx, lry);

Saucer = malloc( tamaño ); // Asignar memoria

getimage(ulx, uly, lrx, lry, Saucer) ); // Entiendo.

putimage(ulx, uly, Saucer, XOR_PUT); // Esto se dibuja en la posición original usando XOR. Utilice XOR para dibujar y, después de dibujar dos veces, la imagen desaparecerá y volverá al fondo original.

Sin embargo, es posible que esto no funcione para LZ, por lo que requiere un dibujo más complicado. Use el contorno negro del personaje o agregue el fondo para obtener un hueco, y luego use el método o para dibujar el personaje. el fondo negro.

Lo siguiente se sortea al azar.

/* Traza algunas "estrellas" */

for ( i=0 ; i<1000; ++i )

putpixel(random(MaxX) , aleatorio(MaxY), aleatorio( MaxColors-1 )+1);

x = MaxX / 2;

y = MaxY / 2;

PauseTime = 70;

/* hasta que se presiona una tecla */

while ( !kbhit() ) {

/* Dibuja el platillo */

putimage(x, y, Saucer, XOR_PUT); /* dibujar imagen */

retardo(PauseTime);

putimage(x, y, Saucer, XOR_PUT) ); /* borrar imagen */

Lo anterior sigue siendo xor dos veces, para mostrar la imagen y borrarla.

/* Mover platillo */

paso = aleatorio( 2*r );

if ((paso/2) % 2 != 0 )

paso = -1 * paso;

x = x + paso;

paso = aleatorio( r );

si (( paso/2) % 2 != 0 )

paso = -1 * paso;

y = y + paso;

if (vp.left + x + ancho - 1 > vp.right)

x = vp.right-vp.left-width + 1;

else

if (x < 0)

x = 0;

if (vp.top + y + altura - 1 > vp.bottom)

y = vp.bottom-vp .top-height + 1;

else

si (y < 0)

y = 0;

}

libre( Platillo );

Pausa();

}