Bonjour,
Dans le cadre d'un jeu en 2D, je souhaite faire une animation d'attaque à l'épée décomposée en 3 mouvements par direction (gauche, droite, haut et bas).
J'ai donc mon tableau d'images en mémoire nommé images[4][3] par exemple.
J'ai séparé l'affichage du "moteur de jeu" qui fait les calculs donc j'ai une boucle évènementielle de ce type :
Avant de séparer cela, mon animation s'effectuait de la sorte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 // init d'un timer qui produit un fps de 60 install_int_ex(ticker, BPS_TO_TIMER(60)); // boucle de jeu while (!key[KEY_ESC]) { while(ticks > 0) { int old_ticks = ticks; // traitements des actions (déplacements, animations...) doLogics(zoneJeu, menu, all, zelda, mondeCourant, inventaire); ticks--; if(old_ticks <= ticks) { break; } } // affichage du resultat DrawResult(); }
Seulement maintenant ca ne marche plus vu que l'affichage est dissocié du reste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int direction = LEFT; // par exemple pour un attaque sur la gauche for (i=0; i<4; i++) { afficherAnimationEnMemoire(images[direction][i]) refreshScreen(page); rest(80); // attends pour voir le détail de l'animation }
Et je n'arrive pas à trouver le bon moyen pour faire des animations fluides... Peu être avec un autre timer ? (mais je suis pas trop timer... trop de timers tue le timer ! )
Merci à vous !
Partager