03 noviembre 2008

Remake (parcial) de Fruity Frank... 12 - Una pantalla de presentacion

Nuestro juego, a pesar de estar apenas empezando a ser un borrador de lo que tendrá que ser finalmente, ocupa ya cerca de 230 líneas de código. Si esto sigue creciendo de esta manera, dentro de poco empezará a ser difícil de manejar. Va siendo el momento de empezar a hacerlo más modular.

Como primer acercamiento a esa modularidad, vamos a crear una pantalla de presentación para el juego, y esta pantalla estará en una nueva función, independiente de "main". La pantalla de presentación mostrará un animación sencilla (por ejemplo, un texto rebotando en la pantalla) hasta que pulsemos una cierta tecla (como la barra espaciadora). En ese momento será cuando realmente comience la partida.

De este modo, ahora el "main" comenzará así:


int main (int argc, char** argv)
{

// Antes de nada, pantalla de presentacion
presentacion();
...


Y esta función "presentacion" podrá ser de tipo "void" (no va a devolver ningún valor), y deberá comenzar por inicializar la pantalla y declarar sus propias variables locales (entre ellas puede estar incluso el tamaño de la pantalla, que ya estaban declaradas dentro de "main" y que se repetirán aquí a no ser que las hagamos "variables globales").

void presentacion()
{
// Limites de la pantalla
int xIniPantalla = 12, xFinPantalla = 638;
int yIniPantalla = 82, yFinPantalla = 448;

// Intentamos inicializar SDL
SDLA_inicializar(640,480,24);
...


Ahora, la llamada a "SDLA_inicializar" ya no deberá aparecer en "main", o habrá pasos que estaremos dando dos veces, y obtendremos mensajes de error.

En cuanto al contenido de esa pantalla de presentación, puede ser cualquier cosa que se repita hasta que pulsemos una tecla. Por ejemplo, el "cartel" representativo del juego rebotando en los extremos de la pantalla. Conviene que la tecla que se pulse para salir no sea ESC, que es la que utilizamos en el juego, o puede ocurrir que salgamos de la pantalla de presentación... pero también del juego, sin llegar a jugar...


Como siempre, todos los fuentes están en: code.google.com/p/fruityfrank