Remake (parcial) de Fruity Frank... 05 - Un primer enemigo

(Volver al índice)

Vamos a añadir un primer enemigo, cuyo movimiento esté prefijado y sea sencillo. Todavía no comprobaremos si nuestro personaje y el "enemigo" colisionan.

La idea básica es sencilla: tendremos una nueva imagen, que dibujaremos en sus propias coordenadas x e y, y al final de cada pasada calcularemos cual será su nueva posición.

La imagen la extraeremos de una de las capturas del juego, igual que hicimos con la de nuestro personaje. Para cargarla y dibujarla será muy parecido a lo que ya hemos hecho:

    int xEnemigo1=250, yEnemigo1=250;
    SDLA_Imagen* enemigo1;
    enemigo1=SDLA_cargarImagen("enemigo1i1.bmp");
    ...
    SDLA_dibujarImagenOculta(enemigo1, xEnemigo1, yEnemigo1);

Moverlo no es mucho más difícil: basta con cambiar su coordenada X o su coordenada Y (o ambas) en cada pasada del bucle "do..while". Por ejemplo, como primer acercamiento podríamos hacer que se moviera hacia la derecha con "xEnemigo1 += 3;"

Lo razonable es que no siempre se mueva hacia la derecha (o al menos que lo haga sólo hasta llegar al margen de la pantalla, en vez de seguir avanzando incluso entonces). Un movimiento un poco más real sería que fuera hacia un lado de la pantalla y, cuando llegara a él, "rebotara" para volver hacia el lado contrario. Hay varias formas de conseguir este efecto. Por ejemplo:

        xEnemigo1 += incrEnemigo;

        if (xEnemigo1 < xIniPantalla) 
        {
          xEnemigo1 = xIniPantalla;
          incrEnemigo = -incrEnemigo;
        }
        
        if (xEnemigo1 > xFinPantalla-anchoEnemigo1) 
        {
          xEnemigo1 = xFinPantalla-anchoEnemigo1;
          incrEnemigo = -incrEnemigo;
        }

Si eso está dentro del do..while del "bucle de juego", acabamos de conseguir que nuestro enemigo se mueva en cada "fotograma" del juego, tanto si movemos nuestro personaje como si no lo hacemos.

Como siempre, todo el proyecto está en: code.google.com/p/fruityfrank

(Volver al índice)