14.1. Vamos a ver un ejemplo de juego básico implementado
en MIDP 2.0. Este juego se encuentra ya implementado en el directorio Juego
de las plantillas de la sesión.
En el juego podemos encontrar los siguientes elementos:
coche.png
.TiledLayer
.
En la imagen fondo.png
tenemos una serie de elementos con los
que construir el fondo de la carretera. Utilizamos el fichero datos
donde tenemos codificado un posible escenario. De este fichero leemos el índice
del elemento que se debe mostrar en cada celda del fondo. Se encuentra codificado
de la siguiente forma:
<ancho:int> <alto:int>
<celda_1_1:byte> <celda_1_2:byte> ... <celda_1_ancho>
<celda_2_1:byte> <celda_2_2:byte> ... <celda_2_ancho>
...
<celda_alto_1:byte> <celda_alto_2:byte> ... <celda_alto_ancho>
Leemos estos datos utilizando un DataInputStream
. Dibujamos
este fondo como capa en la pantalla, y en cada iteración lo vamos
desplazando hacia abajo para causar el efecto de que el coche avanza por
la carretera.
14.2. Ejemplo de juego completo. En las plantillas de la sesión
se incluye un juego completo como ejemplo en el directorio Panj
.
Consultar el código fuente de este juego y probarlo.
14.3. Vamos a implementar un clon del clásico Frogger. En el directorio Cochedrilo
de las plantillas de la sesión se encuentra una base sobre la que se puede implementar el juego. En esta plantilla tenemos:
CommonData
). En ella tenemos toda la información acerca del tamaño de los sprites, las secuencias de frames de las animaciones, sus coordenadas iniciales, etc.MIDletCDrilo
).SplashScreen
).Resources
).GameEngine
).TitleScene
) e interfaz para las escenas del juego (Scene
).GameScene
) vacía. Deberemos implementar la lógica y la presentación del juego en esta clase.Debemos:
a) Crear las estructuras de datos necesarias para cargar la información sobre las fases. Los datos de cada fase son los siguientes:
stages.dat
) de la siguiente forma:
<int> Numero de fases Para cada fase <UTF> Titulo <byte> Número de carriles Para cada carril <byte> Velocidad <short> Separación <byte> Tipo de coche
Deberemos añadir a las clases que encapsulen estos datos métodos para deserializarlos de este fichero.
Introducir código en Resources
para cargar esta información y añadir los datos de niveles como recurso global de nuestro juego.
b) Añadir el sprite de nuestro personaje. Hacer que el sprite se mueva por la pantalla como respuesta a las pulsaciones del cursor.
c) Añadir un fondo a la escena. El fondo se construirá utilizando un objeto TiledLayer
. Utilizaremos la información sobre el número de carriles de la fase actual para generar este fondo.
d) Añadir los coches a la escena. Los coches deben aparecer a la izquierda y avanzar hacia la derecha. En cada carril los coches se generarán de distinta forma. Cada carril tiene los siguientes atributos:
e) Implementar el resto de funcionalidades del juego: