IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Allegro Discussion :

[Allegro] Problème affichage sprite à l'exécution


Sujet :

Allegro

  1. #1
    Invité
    Invité(e)
    Par défaut [Allegro] Problème affichage sprite à l'exécution
    Bonsoir,

    J'ai un problème avec le code suivant:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    void afficheBase(BITMAP** buffer, BITMAP** sol, BITMAP** barre, BITMAP* perso_base[2], double positionsPersos[2][2], BITMAP* iconesPersos){
        int i;
     
        clear_bitmap(*buffer);
        show_mouse(screen);
        draw_sprite(*buffer, *sol, 0, 0);
        draw_sprite(*buffer, perso_base[0], (int)positionsPersos[0][0] - (perso_base[0])->w/2, (int)positionsPersos[0][1] - (perso_base[0])->h/2);
        draw_sprite(*buffer, perso_base[1], (int)positionsPersos[1][0] - (perso_base[1])->w/2, (int)positionsPersos[1][1] - (perso_base[1])->h/2);
        draw_sprite(*buffer, *barre, 0, SCREEN_H - (*barre)->h);
        draw_sprite(*buffer, iconesPersos, 200, 200);
     
        for (i=1; i<10; i++){
            line(*buffer, SCREEN_W/10*i, 0, SCREEN_W/10*i, SCREEN_H-(*barre)->h, makecol(0,0,0));
            line(*buffer, 0, (SCREEN_H-(*barre)->h)/10*i, SCREEN_W, (SCREEN_H-(*barre)->h)/10*i, makecol(0,0,0));
        }
    }
     
    void avancerDroite(BITMAP** buffer, BITMAP* perso_base[2], BITMAP** barre, BITMAP ** sol, BITMAP* imagesPersos[2][4][8], double positionsPersos[2][2], int* enCours, clock_t* debut, clock_t* fin, int img_compt_perso[2][4], int choixPerso, BITMAP* iconesPersos){
        int i;
     
        if(peutAller(barre, 0, positionsPersos, choixPerso)){
     
        while(*enCours && (positionsPersos[choixPerso][0])!=SCREEN_W/10/2+SCREEN_W/10*9){
                                afficheBase(buffer, sol, barre, perso_base, positionsPersos, iconesPersos);
     
                                draw_sprite(*buffer, imagesPersos[choixPerso][0][img_compt_perso[choixPerso][0]], (int)(positionsPersos[choixPerso][0]) - (imagesPersos[choixPerso][0][img_compt_perso[choixPerso][0]])->w/2, (int)(positionsPersos[choixPerso][1]) - (imagesPersos[choixPerso][0][img_compt_perso[choixPerso][0]])->h/2 );
                                blit(*buffer, screen, 0, 0, 0, 0, (*buffer)->w, (*buffer)->h);
                                *fin = clock();
                                if((double)(*fin - *debut) / CLOCKS_PER_SEC > 0.05){
                                    img_compt_perso[choixPerso][0] = (++img_compt_perso[choixPerso][0])%8;
                                    perso_base[choixPerso] = imagesPersos[choixPerso][0][img_compt_perso[choixPerso][0]];
                                    *debut = clock();
                                }
                                (positionsPersos[choixPerso][0])++;
                                rest(10);
     
                                for(i=0; i<10; i++){
                                    if((positionsPersos[choixPerso][0]) == (SCREEN_W/10/2 + i*SCREEN_W/10)) *enCours = 0;
                                }
                            }
                            *enCours = 1;
                            clear_keybuf();
        }
    }
    C'est l'appel de dans qui pose problème et plus particulièrement la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    draw_sprite(*buffer, iconesPersos, 200, 200);
    car sans celle-ci ça marche.
    Je trouve ce problème très bizarre car cette ligne ne fait que rajouter un affichage, tout comme la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    draw_sprite(*buffer, *barre, 0, SCREEN_H - (*barre)->h);
    le fait et qui elle ne fait pas bugger le programme.

    Merci d'avance pour votre aide !

  2. #2
    Membre confirmé Avatar de TNT89
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Points : 615
    Points
    615
    Par défaut
    Citation Envoyé par p-477 Voir le message
    J'ai un problème avec le code suivant:

    [...]

    qui pose problème et plus particulièrement la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    draw_sprite(*buffer, iconesPersos, 200, 200);
    car sans celle-ci ça marche.
    Et quel est le problème? Le programme plante?
    Un petit test sur NULL alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(  iconesPersos!=NULL )
           draw_sprite(*buffer, iconesPersos, 200, 200);
    else
           printf("Erreur : iconesPersos est NULL");
    Et en mettant bien l'initialisation de iconesPersos à NULL lors de la création de la variable...

    Cdt,

Discussions similaires

  1. [WB18] [COMPOSANT] Problème affichage et exécution de boutons
    Par Simeonn dans le forum WebDev
    Réponses: 0
    Dernier message: 12/07/2013, 14h26
  2. Problème affichage sprite à l'exécution
    Par Invité dans le forum Allegro
    Réponses: 0
    Dernier message: 14/05/2011, 19h03
  3. [Plugin][VE] Problème affichage
    Par sebb84 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/07/2004, 14h50
  4. [DOS] Problème affichage de DOS dans un Memo
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 25/06/2004, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo