Tutorial 10 - Creación de un juego (II)
Paso 10 de 22
Al comienzo de la función gameOver
, antes de las sentencias en las que eliminábamos los listeners de la nave, podemos eliminar el listener de cada mina, y después eliminar cada mina en sí, con el siguiente código:
for (var i:Number = numMines; i > 0; i--)
{
stage.getChildAt(i).removeEventListener(Event.ENTER_FRAME, enemy);
stage.removeChildAt(i);
}
Analicemos lo que realiza este bucle. El bucle comenzará con un valor de i
igual a numMines
, que en nuestro caso es 10
. Como la variable i
es mayor que 0
, se ejecutarán las sentencias que se encuentran entre las llaves.
Después reduciremos en una unidad el valor de i
(i--
significa i = i – 1
). Por tanto, i
valdrá 10
en la primera ejecución del bucle, 9
en la siguiente vuelta, etc., hasta el último valor que cumple la condición, es decir, hasta que i
valga 1
(cumple i > 0
).
En las sentencias que se encuentran dentro del bucle, en primer lugar eliminamos el listener del elemento que se encuentra contenido dentro del stage
, en el nivel de visualización i
(10
, 9
, 8
, 7
,…, 1
), que en el nuestro es cada mina que hemos creado. De esta forma ya no tratarán de detectar posibles colisiones con la nave. Con la siguiente línea eliminamos la mina a la que acabamos de eliminar su listener.
Ahora nuestro juego será funcional y no tendrá errores, pero vamos a introducir mejoras en los siguientes pasos:
- En primer lugar, nos aseguraremos de que la posición inicial de las minas no esté muy cerca de la nave, para que nos dé tiempo a empezar a jugar.
- Para hacer el juego más complejo, añadiremos un movimiento aleatorio de las minas por el escenario.
- Cambiaremos la imagen del planeta por la imagen de una mina en el fotograma lose.
- Después añadiremos un sonido para cuando ganemos y otro para cuando perdamos.
- Por último, permitiremos al usuario decidir el número de minas que quiere que aparezcan en el juego.