Asteroids: movimiento de los asteroides #Programación retro del Commodore 64

El movimiento de los asteroides también es parecido al de la nave. Los asteroides pueden moverse hacia arriba, hacia abajo, hacia la izquierda, hacia la derecha, y en diagonal. Pero a diferencia de la nave, los asteroides no tienen un motor ni un piloto con un joystick, así que, una vez que se mueven en una dirección, no pueden cambiarla salvo que se destruyan chocando contra la nave o con un disparo.

Ya lo decía Newton en su primera ley del movimiento o "ley de inercia" que, como todos sabemos, es de aplicación directa a los videojuegos: "Todo cuerpo continúa en su estado de reposo o movimiento uniforme en línea recta, no muy lejos de las fuerzas impresas a cambiar su posición".

Bueno, hemos empezado hablando directamente de "movimiento", pero en realidad deberíamos hablar de "actualización". Lo que ocurre es que, al igual que pasaba con el jugador / nave en las primeras entradas, de momento actualizar es lo mismo que mover:

Asteroids - Actualizar asteroides

Más adelante, actualizar los asteroides implicará hacer más cosas, como detectar si han colisionado con disparos (y, por tanto, hacerlos explotar y desactivarlos), o ir activando nuevos asteroides según pasa el tiempo o según el jugador va ganando puntos.

Pero de momento, actualizar es lo mismo que mover, es decir, hacer todo esto (para cada asteroide activo; es un bucle):

Asteroids - Mover asteroides

Es decir, para cada asteroide activo hay que:

  • Calcular su nueva posición en función de su posición actual, su velocidad, y su ángulo.
  • Verificar los límites de la pantalla, es decir, verificar si la nueva posición está dentro o fuera de la pantalla y actuar en consecuencia. De momento, e igual que pasaba con la nave, sólo se verifican los límites en el sentido vertical (Y), ya que en el sentido horizontal (X) las zonas ocultas son despreciables. Téngase en cuenta que todavía seguimos limitando el movimiento de los sprites en el sentido X a ocho bits; más adelante quitaremos esta limitación.
  • Actualizar la posición del sprite.

Una cosa curiosa es que, para calcular la nueva posición del asteroide, no nos hace falta una nueva rutina "calculaNuevaPosicionAsteroides". Nos vale la misma rutina que ya venimos usando para el jugador: "calculaNuevaPosicionJugador". Esto es así porque las normas de la física son las mismas para todos

🙂
. Y, además, esto nos permite simplificar el código.

Lo siguiente que haremos será ir metiendo cada vez más asteroides. Hasta un máximo de siete, claro. No tenemos más sprites.


Código del proyecto: Asteroids09


Editar

Josepzin

No hay comentarios:

Publicar un comentario