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

SDL Discussion :

Problème M.A.J image


Sujet :

SDL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 7
    Points
    7
    Par défaut Problème M.A.J image
    Bonjour à tous,

    Alors voilà j'ai réussi après de multiples recherches sur google, comment blitter une image sur une autre. Pourquoi ? pour afficher un tank qui fait des aller/retour sur la map à un endroit invisible en début de jeu. Il faut donc scoller la map pour le voir.

    Le souci est que l'image du tank n'a pas l'air de se mettre à jour, c'est à dire qu'il affiche toute les image tu tank coller les une à coté des autres suite à son déplacement continuel. (Ce qui fait une trainer derrière lui). J'aimerai bien entendu que ça ne fasse plus ça. Je pense que c'est un problème de M.AJ d'image mais je n'arrive pas après de multiples tentative résoudre ce problème.

    Mon code :

    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
     /* blitting du tank */
    SDL_BlitSurface(tank, NULL, imageDeFond, &positionTank);
    SDL_Flip(ecran);
     
     
    /* code pour lui faire faire des aller retour sur la map*/
    if(positionTank.x < 400 && testPosition == 0)
                {
                positionTank.x+= 1;
                avantTank +=1;
                }
     
                if(positionTank.x == 400)
                {
                    testPosition = 1;
                }
     
                if(testPosition == 1)
                {
                tank = IMG_Load("tank2.png");
                positionTank.x-= 1;
                avantTank -=1;
                }
     
                if(positionTank.x == 100)
                {
                    tank = IMG_Load("tank1.png");
                    testPosition = 0;
                }
    Aidez moi svp.

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Le souci est que l'image du tank n'a pas l'air de se mettre à jour, c'est à dire qu'il affiche toute les image tu tank coller les une à coté des autres suite à son déplacement continuel. (Ce qui fait une trainer derrière lui). J'aimerai bien entendu que ça ne fasse plus ça. Je pense que c'est un problème de M.AJ d'image mais je n'arrive pas après de multiples tentative résoudre ce problème.
    Oui c'est normal , une image c'est un tableau , quand tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_BlitSurface(tank, NULL, imageDeFond, &positionTank);
    tu blit tank sur imageDeFond du coup imageDeFond possède son image + celui du tank (dans la prochaine frame il aura son image(avec le tank + le blit encore du tank) ect.
    Si tu veux pas ce genre effet blit sur ecran.

    Par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     tank = IMG_Load("tank1.png");
    tu le fais dans une boucle ?
    Parce que non seulement je vois pas la libération image , mais on plus c'est très lourd de charger a chaque frame.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2012
    Messages : 46
    Points : 31
    Points
    31
    Par défaut
    Salut, je te conseille de faire un tableau de surface ayant pour taille le nombre d'animations de ton tank. Il vaut mieux que tu les charges toutes en mémoire au début du code.

    Ensuite fait toi une variable qui te permettra de parcourir ce tableau de surfaces. Lorsque tu doit changer d'image tu change la valeur de cette variable et donc pas besoin de charger à chaque fois la nouvelle image.

    Ensuite tu dois bliter ta surface comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_BlitSurface(tank[variable], NULL, imageDeFond, &positionTank);
    Pour avoir le bon résultat

    P-S : Est-ce que l'on peut avoir le code en entier? Cela nous serais plus utile.

Discussions similaires

  1. Réponses: 13
    Dernier message: 23/12/2004, 18h01
  2. Problème de réaffichage d'image
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/12/2004, 09h41
  3. [débutant] problème de lecture d'image
    Par shura dans le forum OpenGL
    Réponses: 16
    Dernier message: 03/07/2004, 18h05
  4. Problème de nb d'images par seconde
    Par Francky033 dans le forum DirectX
    Réponses: 7
    Dernier message: 17/04/2004, 10h37
  5. Problème de mémoire Affichage images
    Par Repti dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2004, 20h06

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