29 octubre 2008

Remake (parcial) de Fruity Frank... 10 - Un personaje que cambia de forma

Nuestro personaje siempre mira hacia la derecha, nos movamos hacia donde nos movamos. Como primer acercamiento a un movimiento "más real", vamos a hacer que mire hacia el lado en que se mueve.

Existen varias formas de hacerlo. Casi todas pasan por añadir un paso adicional cada vez que el usuario pulse una tecla. Si esa tecla es la de la izquierda, memorizaremos de alguna forma que ahora se deberá dibujar el personaje que se desplaza hacia la izquierda. Se podría hacer actualizando el valor de una variable "dirección", o bien simplemente cambiando el identificador de la imagen que mostraremos. Ésta es la alternativa que usaré yo: tener 3 imágenes del personaje leídas de fichero (derecha, izquierda y arriba/abajo), junto con una cuarta imagen que no se lee de fichero, sino que toma su valor a partir de las otras, y que es la que realmente se muestra en pantalla:

   SDLA_Imagen* personajeD;
SDLA_Imagen* personajeI;
SDLA_Imagen* personajeA;
SDLA_Imagen* personaje;


Como ya he comentado, tres de esas imágenes se leen de fichero:

   personajeD=SDLA_cargarImagen("personajed1.bmp");
personajeI=SDLA_cargarImagen("personajei1.bmp");
personajeA=SDLA_cargarImagen("personajea1.bmp");



Y la cuarta cambia de valor según la dirección en que deba moverse el personaje:

        if ( SDLA_teclaPulsada (TECLA_IZQ) )
{
if ((xPersonaje > 0)
&& (mapa1[yPersonaje][xPersonaje-1] != 'M'))
{
xPersonaje --;
personaje = personajeI;
}
}



Haríamos lo mismo para las demás direcciones, y dibujaríamos siempre la imagen llamada "personaje", que en cada caso reflejará nuestro personaje mirando hacia el lado que nos interesa. Con eso bastaría para tener un personaje "cambiante" básico.

Como siempre, puedes ver todo el proyecto en: code.google.com/p/fruityfrank