viernes, 23 de enero de 2015

OpenFL y Sprites (Arkanoid Parte 5)


La versión de nuestro Arkanoid funciona de manera satisfactoria (dentro de ciertos límites ya que es un ejemplo de programación, no un producto terminado), pero quisiera agregar algunos efectos antes de dar por concluido el tutorial.

En primer lugar, me gustaría agregarle dos efectos de sonido: uno al impactar la bola con la plataforma y el otro cuando impacta contra los ladrillos. 






Como ya hemos visto en el reproductor mp3, esto es muy sencillo de hacer, la única diferencia es que aquí los sonidos van a ir incorporados al programa..incrustados digamos. obviamente cuantos más sonidos agreguemos, (o de mejor calidad..más larga duración, etc..) mayor tamaño irá ocupando el archivo del programa.


En mi caso, opté por crear la carpeta “audio” dentro de los “assets” del programa y allí alojar dos pequeños archivos:

Esto puede hacerse directamente desde FlashDevelop, o con algun explorador de archivos, etc.

Luego hay que establecer la nueva ruta y parámetros en el archivo project.xml para que el compilador pueda localizarlos. 

Puede omitirse y establecerse la ruta desde el código, pero creo que es una buena práctica hacerlo de esta forma ya que aquí estamos trabajando con pocos archivos, pero en un proyecto más complejo, ello puede traer dolores de cabeza o pérdidas de tiempo.




Una vez establecidos estos parámetros, debemos importar las librerias de audio y crear los objetos.
Ya hemos visto esa parte en el reproductor mp3 así que no entraré en detalles salvo por la forma de como declarar los objetos:




Como verán es muy sencillo. Luego, con el método .play() los reproducimos.

Luego agregamos algo de texto informativo.



Tenemos: La cantidad de vidas (3 por partida), El puntaje (cada impacto suma 1 punto), Un mensaje de Pausa/Continuar y al final un mensaje de finalización del juego (Game Over).

Agregar texto con openfl es similar a agregar o crear cualqauier objeto.

Primero, como siempre, se declaran las librerías que vayamos a usar:
 

Seguimos creandos las variables como campos de texto (TextField).

A partir de este punto, solo queda darle formato, posicion y obviamente establecer el mensaje que va a contener.
Luego podemos manipularlos como cualquier objeto creado con haxe.




Para este caso, utilizo el mismo formato (color, fuente, tamaño, etc) al mostrar el Puntaje, las vidas y el mensaje de Pausa/Continuar. Lo unico que cambia es la posición de los mismos.





Para terminar, agregamos otro evento que es el encargado de pausar y continuar el juego.
Como estamos utilizando el mouse, me pareció apropiado que el click derecho se encargue de esta tarea.

stage.addEventListener(MouseEvent.CLICK, Pausado);

Intercepta los clicks del botón derecho del mouse y llama a la rutina correspondiente:
 
 
Hasta aquí hemos visto diferentes conceptos de como trabajar con openfl. Como crear sprites y moverlos en la pantalla, detectar colisiones, textos, sonidos.

El código completo se encuentra aquí.

El juego dista mucho de estar como a mí me gustaría, pero es un ejemplo muy sencillo. Visualmente se puede mejorar y mucho con el uso de imágenes, efectos especiales, etc.


Casi todo lo que hemos hecho se puede hacer de forma mucho más simple con el uso de frameworks específicos para crear juegos. Para mantener la simpleza en su comprensión, he recurrido a técnicas que por lo general no suelen utilizarse (como la manipulación de pausa/continuar), pero por ello no deja de ser funcional.
Espero que se haya comprendido y si surgen dudas pueden contactarme.