Taller
>> Taller >> Santa Attack by Wakroo >> Cap. 1, Introducción.

Vayamos por partes (dijo Jack el Destripador). Seguiré la estructura que está en el PRG a la hora de ir comentando las cosas.

Una vez que se han declarado las constantes y las globales (en este programa no hay locales) viene el main. En él se inicializa el modo gráfico a 640x480, 16 bits y se cargan los FPG, FNT y WAV que se usan en el juego. Después se llama al proceso intro(), que es el encargado de poner las dos imágenes de presentación. El proceso es muy sencillo: se pone el gráfico 101 (la pantalla del concurso) en el centro, se espera 50 frames, se hace un fundido lento a negro, se cambia la imagen por la 102 (el logo de Emerald Works), se vuelve a encender la pantalla, se espera otros 50 frames, se hace un fundido lento a negro se cambia la resolución a 800x600, se ponen estrellas en el fondo, se llama al proceso juego() y se vuelve a encender la pantalla.
NOTA: En el Fenix 0.82 a 16 bits no funcionan las funciones fade, fade_on y fade_off. Por lo tanto, aunque están puestas en realidad no hace el fundido.

A ver, poco a poco. Fijaos en que primero se ha inicializado la resolución a 640x480 y luego se ha puesto a 800x600. Esto se hizo para ahorrar memoria, porque las dos imágenes del principio ocupaban bastante. La principal razón es que había un límite de tamaño y prefería no pasarme (al final lo clavé: 1 Mb n_nU ).

El resto del proceso se ha preparado para que el programa se comporte de una manera secuencial. Hace una cosa y no sigue hasta que ha terminado ésa. Esto es muy útil para las presentaciones de los juegos, ya que se pueden preparar todas las cosas, se dejan durante un tiempo en pantalla y luego se preparan las siguientes cosas. Con esto se pueden hacer escenas cinemáticas a base de imágenes fijas o pequeñas animaciones.

En este caso no se ha dado la posibilidad de saltarse la intro porque era corta y prefería que la gente viera el maravilloso logo que hice (por cierto, tengo que hacer uno nuevo...). De todas formas, es recomendable para intros largas, además de ser muy fácil de hacer. Se podría haber creado otro proceso o haber usado el main (yo me quedo con esta opción). Se hace un LOOP y dentro se pone la condición para saltarse la intro (pulsar la tecla escape o cualquier tecla, por ejemplo) y su correspondiente FRAME; (para que no se bloquee el programa). Entonces se hace una transición bonita (adoro los fundidos) y, una vez acabada, se hace un let_me_alone(). De esta manera el proceso se queda solo, es decir, se carga todos los procesos que estuvieran pululando por ahí para hacer la intro. Luego se llama al proceso encargado de lanzar el juego o el menú, lo que corresponda. Esta misma técnica se puede usar al final de la intro para cargarse el proceso que está controlando si el usuario se la quiere saltar o no. Recomiendo usar la técnica de salir del bucle con un break; y poner estas instrucciones al final (está explicada más adelante).

Finalmente están las estrellas del fondo. Esa forma de hacerlas está cogida de uno de los juegos de ejemplo del DIV, ahora no recuerdo el nombre (el de los asteroides). Es una manera sencilla de conseguir un fondo de estrellas sencillo pero efectivo y sin aumentar el tamaño del juego, ya que no hace falta un mapa.

Y esto es todo lo que tiene la intro. Pasemos ahora al proceso que controla el juego.