Tutorial 10 - Creació d'un joc (II)

Pas 10 de 22

Al començament de la funció gameOver, abans de les sentències en les quals eliminàvem els listeners de la nau, podem eliminar el listener de cada mina, i després eliminar cada mina, amb el codi següent:

for (var i:Number = numMines; i > 0; i--) 
{
    stage.getChildAt(i).removeEventListener(Event.ENTER_FRAME, enemy);
    stage.removeChildAt(i);
}

Analitzem el que fa aquest bucle. El bucle començarà amb un valor d'i igual a numMines, que en el nostre cas és 10. Com que la variable i és més gran que 0, s'executaran les sentències que es troben entre les claus.

Després reduirem en una unitat el valor d'i (i-- significa i = i – 1). Per tant, i valdrà 10 en la primera execució del bucle, 9 en la volta següent, etc., fins a l'últim valor que compleix la condició, és a dir, fins que i valgui 1 (compleix i > 0).

En les sentències que hi ha dins del bucle, en primer lloc eliminem el listener de l’element que hi ha dins de l'stage, en el nivell de visualització i (10, 9, 8, 7,…, 1), que en el nostre és cada mina que hem creat. D'aquesta manera ja no tractaran de detectar possibles col·lisions amb la nau. Amb la línia següent eliminem la mina a la qual acabem d'eliminar el seu listener.

Ara el nostre joc serà funcional i no tindrà errors, però introduirem millores en els passos següents:

  • En primer lloc, ens assegurarem que la posición inicial de les mines no sigui gaire a prop de la nau, perquè ens doni temps a començar a jugar.
  • Per fer el joc més complex, afegirem un moviment aleatori de les mines per l'escenari.
  • Canviarem la imatge del planeta per la imatge d'una mina en el fotograma lose.
  • Després afegirem un so per a quan guanyem i un altre per a quan perdem.
  • Finalment, permetrem a l'usuari decidir el nombre de mines que vol que apareguin en el joc.