Revenir au plan du site

Connaitre facilement l'état de l'animation courante

J'vais partir un peu grossièrement sur un octet qui indique l'animation courante, positionné à droite, à gauche, ou "changeant". Si on est dans un changement (les 5 étapes pour qu'il se retourne) alors on ne tient pas compte des entrées claviers.

Par ailleurs, si on veut aller à droite et qu'on y est déjà, on ne lance pas l'animation de retournement. Ça fait faire quelques comparaisons un peu partout, ce n'est pas optimal mais on y va progressivement.

Lorsqu'on lance l'animation de retournement, on renseigne aussi une fonction à exécuter en rapport avec le mouvement.

exa : ld a,(Conrad.animationType) : cp CHANGEMENT : jp z,Conrad.execute : exa
bit 2,a : jp z,Conrad.gauche
bit 3,a : jp z,Conrad.droite
jp Conrad.execute ; continuer l'animation en cours si aucune touche

;*********
Conrad
;*********
.gauche ld a,(.animationType) : cp GAUCHE : jp z,.execute ; rien si déjà à gauche
ld hl,conradDroiteGauche : ld (.animation),hl
ld a,5 : ld (.droiteVersGauche+1),a : ld hl,.droiteVersGauche : ld (.execute+1),hl : ld a,CHANGEMENT : ld (.animationType),a
jp .execute
.droite ld a,(.animationType) : cp DROITE : jp z,.execute ; rien si déjà à droite
ld hl,conradGaucheDroite : ld (.animation),hl
ld a,5 : ld (.gaucheVersDroite+1),a : ld hl,.gaucheVersDroite : ld (.execute+1),hl : ld a,CHANGEMENT : ld (.animationType),a
jp .execute
.dummy ret
.gaucheVersDroite ld a,5 : dec a : ld (.gaucheVersDroite+1),a : ret nz : ld a,DROITE : ld (.animationType),a : ld hl,.dummy : ld (.execute+1),hl : ret
.droiteVersGauche ld a,5 : dec a : ld (.droiteVersGauche+1),a : ret nz : ld a,GAUCHE : ld (.animationType),a : ld hl,.dummy : ld (.execute+1),hl : ret

.execute call .dummy ; rien par défaut
ld a,#40 : ld hl,.animation : call animate_execute_step : jp mainLoop

.animation defw conradDroite ; animation par défaut à droite
.animationType defb DROITE ; par défaut à droite

GAUCHE equ 0
DROITE equ 1
CHANGEMENT equ 2



Digérez moi ça, que cette méthode peut fonctionner rapidement pour un test mais on s'emmêlerait vite les pinceaux avec plus de mouvements.

Rendez-vous dans [ l'article suivant ] pour une méthode plus efficace, mais plus répétitive.