Allegro

cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 4 mars 2004 à 19:43
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 - 6 mars 2004 à 13:16
salut a ts ,

je cherche comment afficher une explosion avec allegro (afficher a peu pres 20 images a la suite ) mais le pb c'est qu'il fo afficher les bitmap sur le 1er buffer car sinon on voit juste la derniere image de l'explosion . mais le pb c'est que mon jeu est en double buffuring et tt ce que j'affiche est sur le 2eme buffer donc qd j'affiche l'explosion sa rame .

si qq1 peu m'aider .

merci d'avance
@+

6 réponses

cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
6 mars 2004 à 11:40
Donne un bout de code
il n'est peut etre pas nécessaire de rafraichir tout l'écran...
Optimiser, c'est bien, déboguer c'est mieux
0
cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010
6 mars 2004 à 12:34
voila le code que jutilise pr afficher lexplosion

for(int i=0;i<19;i++)
{
draw_sprite(screen,exp1[i],100,100);
blit(screen,buffer,0,0,0,0,640,480);
blit(buffer,screen,0,0,0,0,640,480);
rest(5);
}
0
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
6 mars 2004 à 12:45
qu'est ce que le rest(5) vient faire là, tu m'étonnes que ça rame
par ailleurs le draw_sprite est fait sur le screen et non dans buffer
donc tu n'as pas de double buffering (les deux blit() ne servent à rien !!!)
Optimiser, c'est bien, déboguer c'est mieux
0
cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010
6 mars 2004 à 13:04
en fait jai trouver une autre solution mais il faut que le prog fasse plusieurs tour pr afficher l'explosion

draw_sprite(buffer,exp1[i],100,100);
j++;
if (j==10) {i++; j=0;}
if (i==19) i=0;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
6 mars 2004 à 13:15
ça devrait marcher :

for(int i=0;i<19;i++)
{
draw_sprite(buffer,exp1[i],100,100);
blit(screen,buffer,0,0,0,0,640,480);
blit(buffer,screen,0,0,0,0,640,480);
}
on peut faire mieux en ne rafraichissant que sur (100,100,100+exp[1]->w,100+exp[1]->h)
Optimiser, c'est bien, déboguer c'est mieux
0
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
6 mars 2004 à 13:16
Autre chose, pas de boucle for(i) mais un i incrémenté via un timer : ça te permettra de choisir le temps entre 2 anims
Optimiser, c'est bien, déboguer c'est mieux
0
Rejoignez-nous