Crea tus Juegos con 8BPCursos

8BP: Macrosecuencias de animación

5
(9)

Hola amigos de 8 Bits de Poder, en esta entrega semanal del curso 8BP veremos como funcionan las macrosecuencias de animación con la librería. Las macrosecuencias de animación son una característica “avanzada” disponible a partir de la versión V25 de la librería 8BP.

rutas avanzadas

Pero espera… ¿Es posible que no sepas nada de 8 Bits de Poder? Puedes leer el primer artículo del curso de programación en Amstrad CPC de 8BP.

Una “macrosecuencia” es una secuencia formada por secuencias. Cada una de las secuencias de animación constituyentes es la animación que hay que efectuar en una dirección concreta.

La dirección viene determinada por los atributos de velocidad del sprite, que están en la tabla de sprites. De este modo, cuando animemos a un sprite con |ANIMALL, automáticamente cambiará su secuencia de animación sin que tengamos que hacer nada (en realidad no hace falta invocar a |ANIMALL porque |PRINTSPALL ya lo hace internamente si se lo indicamos en un parámetro).

Macrosecuencias de animación con 8BP

Las macrosecuencias se numeran comenzando en la 32. Es muy importante colocar las secuencias dentro de la macrosecuencia en el orden correcto, es decir, la primera secuencia debe ser para cuando el personaje está quieto, la siguiente para cuando va a la izquierda (Vx<0, Vy=0), la siguiente para la derecha (Vx>0, Vy=0), etc, siguiendo el siguiente orden (ten cuidado porque es fácil equivocarse):

macrosecuencias-de-animacion
Orden de secuencias de una macrosecuencia

Si la secuencia asignada a la posición quieto es cero, entonces simplemente se anima con la última secuencia asignada. Las macrosecuencias hay que especificarlas en el fichero sequences_tujuego.asm, del que a continuación tienes un ejemplo:

org 33500;
;=====================================================================
; secuencias de animacion 
;=====================================================================
;--------------secuencias de animacion  – ------
_SEQUENCES_LIST
dw NAVE,0,0,0,0,0,0,0;1
dw JOE1,JOE2,0,0,0,0,0,0;2 UP JOE
dw JOE7,JOE8,0,0,0,0,0,0;3 DW JOE
dw JOE3,JOE4,0,0,0,0,0,0;4 R JOE
dw JOE5,JOE6,0,0,0,0,0,0;5 L JOE

_MACRO_SEQUENCES
;--------MACRO SECUENCIAS – --------------------
; son grupos de secuencias, una para cada dirección. el significado es:
; still, left, right, up, up-left, up-right, down, down-left, down-right
; se numeran desde 32 en adelante
db 0,5,4,2,5,4,3,5,4;la secuencia 32 contiene las secuencias del soldado Joe

Con esa definición de secuencias podemos hacer un sencillo juego que permita mover a “joe” por la pantalla sin controlar su secuencia de animación. Le asignamos la secuencia 32 y alterando la velocidad, el comando |ANIMA (invocado desde dentro de |PRINTSPALL) se encarga de cambiarle la secuencia de animación si su velocidad denota un cambio de dirección.

8BP: Macrosecuencias de animación 2

Eso sí, para mover al sprite necesitamos invocar a |AUTOALL, ya que al pulsar los controles no cambiamos sus coordenadas sino su velocidad y |AUTOALL actualizará las coordenadas del sprite de acuerdo a su velocidad.

10 MEMORY 23999     
20 MODE 0:INK 0,12
30 ON BREAK GOSUB 280
40 CALL &6B78
50 DEFINT a-z
111 x=36:y=100
120 |SETUPSP,31,0,&X1111
130 |SETUPSP,31,7,2:|SETUPSP,31,7,32 
140 |LOCATESP,31,y,x
160 |SETLIMITS,0,80,0,200
161 |PRINTSPALL,0,1,0    
190 'comienza ciclo de juego
199 vy=0:vx=0
200 IF INKEY(27)=0 THEN vx=1: GOTO 220
210 IF INKEY(34)=0 THEN vx=-1
220 IF INKEY(69)=0 THEN vy=2: GOTO 240
230 IF INKEY(67)=0 THEN vy=-2
240 |SETUPSP,31,5,vy,vx
250 |AUTOALL:|PRINTSPALL
270 GOTO 199
280 |MUSICOFF:MODE 1: INK 0,0:PEN 1

Fíjate que no he definido la secuencia para cuando el personaje no se mueve. En dicha posición he puesto un cero en la macrosecuencia. Eso significa que, si el personaje comienza quieto, no se sabe que secuencia asignar pues no hay una “última” secuencia usada. Es por ello que asigno la secuencia 2 antes de asignar la 32, así me aseguro de que el personaje ya tiene una secuencia, aunque se encuentre quieto.

130 |SETUPSP, 31, 7, 2:|SETUPSP, 31, 7, 32

La próxima semana veremos como hacer tu primer juego sencillo con 8 Bits de Poder.

Hasta aquí hemos llegado por hoy con el curso de programación en Amstrad CPC de 8 bits de poder Si tienes alguna duda puedes escribir en comentarios y te contestaré lo antes posible.

Todos los recursos, como manuales, ejemplos y juegos compilados de este curso los puedes encontrar en el repositorio Github de 8BP.

Hasta la semana que viene amigos 😄

¿Te ha Resultado útil este artículo?

Ayúdanos a mejorar y danos tu opinión:

Mostrar más

Un comentario

Deja una respuesta

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

Publicaciones relacionadas

Mira también
Cerrar
Botón volver arriba