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.