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.