Asteroids: los asteroides – un híbrido entre la nave y los disparos

Según dicen, la experiencia es un grado. Y en el caso de los asteroides parece que va a ser así.

Los asteroides, por un lado, se parecen a la nave. Y se parecen a la nave porque son sprites. Por tanto, se van a configurar, posicionar, mover, etc., como la nave.

Pero, por otro lado, los asteroides se parecen a los disparos. Y se parecen a los disparos porque puede haber varios (hasta siete) y, por tanto, en un momento dado los habrá activos e inactivos, y habrá que llevar el control.

Por tanto, al final tenemos un híbrido entre la nave y los disparos. Lo bueno es que ya sabemos cómo manejar la nave, y también sabemos cómo manejar los disparos. Por tanto, sólo se trata de hacer una mezcla.

Esta mezcla ya se observa en las estructuras de datos que aparecen en el nuevo fichero “Asteroides.asm”, y que no debemos confundir con el fichero “Asteroids.asm”, sin la “e”, que es el fichero principal del juego.

Estas variables son parecidas a las de la nave (número de sprite, coordenada X, coordenada Y, velocidad, ángulo, etc.) pero, por otro lado, son tablas de siete posiciones, porque podemos tener hasta siete asteroides activos:

Asteroids - Variables asteroides

Las primeras tablas no necesitan explicación, porque son totalmente análogas, pero en formato tabla, a las variables de la nave: “jugadorSprite”, “jugadorX”, “jugadorY”, “jugadorVelocidad” y “jugadorAngulo”.

La tabla “asteroidesActivos” sirve para controlar qué asteroides están activos en un momento dado. Se utiliza el mismo convenio que con los disparos: $00 = inactivo, $01 = activo.

Por último, la tabla “asteroidesExpansion” sí es nueva. Como dijimos en la entrada anterior, vamos a tener asteroides grandes (expandidos) y pequeños (sin expandir), y el tamaño de cada uno lo vamos a controlar con esta tabla. El valor $01 indica que el asteroide está expandido, tanto horizontal como verticalmente, y el valor $00 indica que no lo está.

Obsérvese como, en la versión 09 del proyecto, partimos de una situación inicial en la que sólo los asteroides uno y dos están activos. Además, el asteroide uno está expandido y el dos no lo está:

Asteroids - Dos asteroides activos

El lector puede jugar con estas tablas para cambiar el número de asteroides activos, su posición inicial, su ángulo, su expansión, etc. En versiones posteriores gestionaremos todos estos cambios en los asteroides de manera automática mediante el programa, respondiendo a los eventos del juego (colisiones, etc.), e intentando que tengan una base aleatoria.

Por lo demás, los asteroides, igual que el jugador / nave, la pantalla o los disparos, tienen:

  • Una rutina de inicialización (“inicializaAsteroides”).
  • Y otra rutina de actualización (“actualizaAsteroides”).

Estas rutinas aparecen declaradas en el nuevo fichero “Asteroides.asm” (con “e”), y se invocan desde el programa principal, es decir, desde el fichero “Asteroids.asm” (sin “e”):

Asteroids - Llamada rutinas asteroides

El contenido de estas rutinas se verá en detalle en las entradas que siguen, pero, por analogía con lo ya visto con la nave y los disparos, ya podemos imaginarnos en qué pueden consistir.


Código del proyecto: Asteroids09

Deja un comentario