Asteroids: pantalla inicial y pantalla de juego – final de partida #Programación retro del Commodore 64

Hemos dicho que tenemos que empezar a detectar el final de las partidas, es decir, tenemos que identificar que las vidas del jugador han llegado a cero y actuar en consecuencia (presentar la pantalla de fin).

El lugar idóneo para hacer esto es cuando se decrementan las vidas, es decir, cuando se detecta una colisión nave – asteroide y se anima una explosión. Si recordáis, el final de la explosión había este código (ver final de la rutina "animaExplosionJugador"):

Asteroids - Decrementar vidas anterior

Ahora hay que mejorar es código para, además de decrementar las vidas, detectar si éstas han llegado a cero. Esto lo hacemos en la versión 20 del proyecto:

Asteroids - Decrementar vidas nuevo

Como se puede observar, ahora, además de decrementar las vidas e inicializar la animación para el futuro:

  • Analizamos si las vidas han llegado a cero ("lda jugadorVidas" y "bneFinAnimacion2").
  • En caso negativo, seguimos jugando la partida ("rts").
  • Y en caso afirmativo, comparamos si los puntos ("jugadorPuntos") superan el record ("jugadorMaxPuntos"), para quedarnos en ese caso con el nuevo record, y volvemos a la pantalla inicial / final con "jsr menuInit".

En esta pantalla inicial / final, dado que los puntos no serán cero, pintaremos la puntuación y el record. Y volveremos a esperar a que el usuario pulse el espacio para jugar otra partida o decida apagar el C64.

Asteroids - Pantalla inicial con puntos

En definitiva, ya estamos identificando el final de la partida y, además, estamos gestionando el record de la sesión de partidas. Este record se podría grabar en un fichero y cargarlo en futuras sesiones de partidas.


Código del proyecto: Asteroids20


Editar

Josepzin

No hay comentarios:

Publicar un comentario