CODINGPremiers programmes avec la gamme Amstrad Plus et GX-4000

Animation d'un personnage (Gérer plusieurs animations) 2/6

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.

★ ANNÉE: 2025
★ AUTEUR: Roudoudou

Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 133 millisecondes et consultée 5 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.