Crea tus Juegos con 8BPCursos

Movimiento de sprites «en bloque» con lógicas masivas

5
(7)

Hola amigos de 8 Bits de Poder, en nuestra entrega semanal de 8BP vamos a ver como podemos utilizar las lógicas masivas para mover sprites en bloque, además de como podemos utilizar dichas técnicas en juegos al estilo PACMAN.

¿Te animas a programar una maquina de 1984? con este curso de @8bitsdepoder puedes aprender como hacerlo.

Movimiento de sprites en bloque

Si lo que quieres es simplemente mover a la vez un escuadrón en una dirección, cualquiera de las dos funciones siguientes de la librería 8BP te servirán:

  • Si usas |AUTOALL tienes que ponerle velocidad automática a los sprites en la dirección que quieras (en Vx, en Vy  o en ambas) y por supuesto activar el bit 4 del byte de estado. El comando AUTOALL tiene un parámetro opcional para invocar internamente a |ROUTEALL antes de mover a los sprites
  • Si usas |MOVERALL tienes que activar el bit 5 del byte de estado a los sprites que vayas a mover. Este comando requiere como parámetros cuanto movimiento relativo en Y y en X deseas.
movimiento
Freddy Hardest un playboy muy «espacial»

De esta forma con una sola instrucción estás moviendo muchos sprites a la vez. En caso de que cada uno de tus sprites se deba mover de forma independiente y con una lógica independiente como ourre en juegos tipo “pacman”, habrá que ser mas astutos, como te contaré a continuación.

Técnica de lógicas masivas en juego tipo PACMAN

Si tienes muchos enemigos y deben tomar decisiones en cada bifurcación de un laberinto, no es una buena estrategia simplemente turnar la ejecución de lógicas de enemigos en cada ciclo. Lo que conviene es ejecutar la logica cuando dicha logica deba tomar una decisión.

En juegos tipo pacman esto ocurre cuando un fantasma llega a una bifurcación en la que puede tomar una nueva dirección de movimiento en función de su inteligencia. Esto se puede llevar a cabo con un sencillo “truco”. Es simplemente colocar a los enemigos en posiciones bien escogidas al empezar el juego.

Puedes ver como programar un juego al estilo PACMAN en nuestro articulo relacionado.

Supongamos que tienes 4 enemigos y que las bifurcaciones del laberinto ocurren en múltiplos de 4. Si el primer enemigo está en una posición múltiplo de 4 le tocará ejecutar su lógica. Al segundo enemigo le toca ejecutar su lógica de decisión en el ciclo siguiente. Si no se encuentra en una posición de bifurcación del laberinto no podrá cambiar su rumbo

Para que “encaje” su posición con un múltiplo de 4 y así poder decidir qué camino tomar en la bifurcación, simplemente empezamos el juego con este segundo enemigo colocado en un múltiplo de 4 menos uno. Considerando coordenadas que comienzan en cero, los múltiplos de 4 son:

Primer enemigo: posición 0 o 4 o 8 o 12 o 16 o 20 o 24 o XX (en eje x o y, da igual)

Segundo enemigo: posición 1 o 5 o 9 …

Tercer enemigo : posición 2 o 3 o 10 …

Y así sucesivamente. Colocas a tus enemigos siguiendo esta regla:

Posición = múltiplo de 4 – n, siendo n el numero de sprite

Y cada vez que le toque a un enemigo ejecutar su lógica, podrá encontrarse en una bifurcación. si un fantasma debe tomar una decisión en el instante “i”, posteriormente lo hará en t=i+4 y la siguiente será en t=i+4+4, etc.

Vamos a ver un ejemplo grafico, en el que he destacado con un rectángulo que enemigo va a tomar una decisión por encontrarse en bifurcación. Como puedes comprobar solo se ejecuta una lógica de bifurcación en cada ciclo de juego.

Movimiento de sprites "en bloque" con lógicas masivas 2
Movimiento de sprites "en bloque" con lógicas masivas 3
Movimiento de sprites "en bloque" con lógicas masivas 4
Movimiento de sprites "en bloque" con lógicas masivas 5

Cuando le toque ejecutar su lógica deberá comprobar que no se encuentra en una posición en mitad de un pasillo sin bifurcaciones. Debe comprobarlo y para ello puede usar el comando COLAY.

Para la siguiente entrega de 8BP hablaremos de diversos factores, como reducir el numero de instrucciones en el ciclo de juego y como gestionar el teclado con el mínimo de instrucciones posibles. ¡Hasta la próxima amigos!

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Mostrar más

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicaciones relacionadas

Botón volver arriba