Remake (parcial) de Fruity Frank... 06 - Transparencia y tiempo "fiable"

(Volver al índice)

Vamos a hacer dos pequeñas mejoras:

Para el primero de esos puntos, la transparencia, tenemos una orden en SDL ("ocultada" dentro de las funciones en español que tenemos listas para usar) que permite indicar qué color será considerado transparente, a partir de sus componentes RGB (rojo, verde, azul, indicados entre 0 y 255). Por ejemplo, si queremos que los puntos negros de la imagen sean considerados como transparentes, usaremos el color (0,0,0), o si queremos que lo sea el rojo puro, emplearemos (255,0,0).

En el caso de Fruity Frank, nuestro personaje tiene el pelo rojo y ropa azul, así que podemos usar el verde puro (0,255,0) para indicar los puntos transparentes. Editamos nuestra imagen desde cualquier editor gráfico (incluso el propio "Paint" de Windows serviría) y pintamos en color verde intenso el contorno de nuestro personaje, que antes era negro. Después le indicamos a nuestro juego que no dibuje ese verde, con:

    personaje=SDLA_cargarImagen("personaje1.bmp");
    SDLA_colorTransparente(personaje, 0,255,0);

De igual modo, nuestro primer enemigo tiene zonas rojas, blancas, negras... así que el verde volvería a ser una buena elección para hacer su contorno transparente.

Por otra parte, para que la velocidad sea "casi igual" en cualquier ordenador, añadiremos una pausa entre un "fotograma" del juego y el siguiente. Si queremos que la visualización del juego tenga la velocidad habitual, 25 fotogramas por segundo, y suponemos que el tiempo que se pierde en redibujar la pantalla y en el análisis de la lógica de juego es despreciable, deberíamos hacer una pausa de 40 milisegundos tras cada redibujado de pantalla (1 segundo = 1000 milisegundos; 1000 ms / 25 fps = 40 ms entre un "fotograma" y otro):

    // Pausa de 40 ms, para velocidad de 25 fps (1000/40 = 25)
    SDLA_pausa(40);

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

(Volver al índice)