Asteroids: movimiento de los sprites por toda la pantalla (paso IV) #Programación retro del Commodore 64

Los asteroides son sprites, igual que la nave. Por tanto, los cambios que hay que hacer en los asteroides para moverse por toda la pantalla son muy similares a los ya realizados para la nave.

Como en casos anteriores, los cambios ya conocidos o que no merezcan mucha explicación, sólo serán enumerados. Nos detendremos sólo en aquellos que merezcan un poco más de detalle.

Los cambios para los asteroides son:

  • Las coordenadas X ahora pasan a tener dos bytes, el byte Lo y el byte Hi. Recordemos que hay siete asteroides y, por tanto, estamos hablando de tablas. Lo que antes era la tabla "asteroidesX" ahora pasa a ser las tablas "asteroidesXLo" y "asteroidesXHi".
  • Al inicializar los asteroides activos, los posicionamos en pantalla con "posicionaSprite". Dado que esta rutina ahora toma dos bytes para la coordenada X, hay que tenerlo en cuenta.
  • Al actualizar la posición de los asteroides, hay que calcular su nueva posición con la rutina "calculaNuevaPosicionJugador" (sí, es correcto). Nuevamente, esta rutina toma ahora dos bytes para la coordenada X. Por tanto, hay que tenerlo en cuenta. También al reposicionar los sprites tras calcular su nueva posición.
  • La verificación de límites cambia. Primero porque ahora verificamos los límites verticales (no es nuevo) y horizontales (novedad). Pero es que además la verificación de límites la sacamos a las nuevas rutinas "verificaLimiteXAsteroides" y "verificaLimiteYAsteroides". Estas nuevas rutinas son totalmente análogas a las ya vistas para la nave.

En definitiva, son los mismos cambios que ya tuvimos que considerar para la nave. Pero además hay otro cambio que no teníamos con la nave: la rutina "actualizaAsteroidesActivos".

Esta rutina se encarga de ir activando nuevos asteroides. Y, para hacerlo, utiliza el Jiffy Clock como fuente de información aleatoria para dar valor a la coordenada X, la coordenada Y, la velocidad, el ángulo, y la expansión de los asteroides. Y como ahora la coordenada X de los asteroides consta de dos bytes, hay que tenerlo en cuenta (observad el "and #%00000001" para quedarnos sólo con el bit 0):

Asteroids - Activar asteroides con X doble

En definitiva, mover los sprites por toda la pantalla implica usar dos bytes (nueve bits) para su coordenada X. Lo más básico es que la rutina que posiciona los sprites ("posicionaSprite" en nuestro caso) acepte esos dos bytes. A partir de ahí se derivan un montón de cambios adicionales en declaraciones de variables, inicializaciones, actualizaciones varias, verificaciones de límites, etc., que, afortunadamente, son muy repetitivos.

El resultado podéis verlo aquí y en la ya famosa versión 18 del proyecto:


Código del proyecto: Asteroids18


Editar

Josepzin

No hay comentarios:

Publicar un comentario