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 par rapport à la multiplication d'image en fonction d'un clique


Sujet :

SDL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 67
    Points : 48
    Points
    48
    Par défaut Problème par rapport à la multiplication d'image en fonction d'un clique
    Bonjour,
    je souhaite faire un programme qui permet à l'utilisateur de mettre une image (zozor.bmp) sur la fenêtre quand il fait un clique gauche. Voilà ce qui se passe : on clique 3 fois, il y a 3 zozor qui apparaissent sur la fenêtre, et lors du 4éme clique, le programme se quitte.

    J'ai pensé à la mémoire qui devait être mal géré dans mon programme? Mais j'avoue n'avoir aucune idée de comment faut faire pour résoudre mon problème.

    Merci pour votre aide.

    le 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    int main (int argc, char *argv[])
    {
        int i = 0, z = 1;
        SDL_Surface *ecran = NULL, *zozor = NULL;
        SDL_Rect positionZozor[i];
     
        SDL_Event event;
        int continuer = 1;
     
        SDL_Init(SDL_INIT_VIDEO);
        ecran = SDL_SetVideoMode(640,480,32,SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_WM_SetCaption("Tampon Zozor",NULL);
     
        zozor = SDL_LoadBMP("zozor.bmp");
        SDL_SetColorKey(zozor,SDL_SRCCOLORKEY,SDL_MapRGB(zozor->format,0,0,255));
     
        while(continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                break;
     
                case SDL_KEYDOWN:
                    switch(event.key.keysym.sym)
                    {
                        case SDLK_ESCAPE:
                            continuer = 0;
                        break;
                    }
     
                case SDL_MOUSEBUTTONUP:
                    if(event.button.button == SDL_BUTTON_LEFT)
                    {
                        i++; //On dit qu'à la case 1 de positionZozor, il y aura les coordonnées du premier Zozor
                        positionZozor[i].x = event.button.x;
                        positionZozor[i].y = event.button.y;
                    }
                break;
            }
     
                SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,255,255,255));
     
                for(z = 1; z <= i; z++) //On affiche tout les zozor avec leurs coordonnées sauvegardés dans la positionZozor
                SDL_BlitSurface(zozor,NULL,ecran,&positionZozor[z]);
     
                SDL_Flip(ecran);
     
     
        }
     
        SDL_FreeSurface(zozor);
     
        return EXIT_SUCCESS;
    }

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 897
    Points : 219 630
    Points
    219 630
    Billets dans le blog
    125
    Par défaut
    Bonjour,

    La déclaration de ton tableau de position , ne devrait même pas compiler
    Cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SDL_Rect positionZozor[i];
    Il faut soit que tu rajoute ( en haut de ton programme )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #define MAX_ZOZOR 100
    Et puis que tu déclare le tableau comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SDL_Rect positionZozor[MAX_ZOZOR];
    Et que tu limite dans le code ( variable i ) à MAX_ZOZOR
    La valeur 100 est purement indicative

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 67
    Points : 48
    Points
    48
    Par défaut
    Merci!! À force d'utiliser du java, je ne faisais plus attention à ce genre d'erreur...

  4. #4
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    La déclaration de ton tableau de position , ne devrait même pas compiler
    Cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SDL_Rect positionZozor[i];
    Salut,

    Depuis un bout de temps, en C (C99?) et en C++ si on ne met pas des options trop restrictives, on peut initialiser des tableaux de taille variable, et le tableau est libéré à la fin de la fonction quand même

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 897
    Points : 219 630
    Points
    219 630
    Billets dans le blog
    125
    Par défaut
    Wahou, première fois que j'entend cela. Je pense continuer à faire mes tableaux comme avant ...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 67
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par coyotte507 Voir le message
    Salut,

    Depuis un bout de temps, en C (C99?) et en C++ si on ne met pas des options trop restrictives, on peut initialiser des tableaux de taille variable, et le tableau est libéré à la fin de la fonction quand même
    Salut,
    ce qui veut dire qu'on peut utiliser une variable pour un tableau? autre que part #define ?

    Peux-tu nous expliquer?

  7. #7
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Citation Envoyé par Unreal Time Voir le message
    Salut,
    ce qui veut dire qu'on peut utiliser une variable pour un tableau? autre que part #define ?

    Peux-tu nous expliquer?
    La flemme

    Variable Length Array (VLA)

    Il y a tout et même plus

    Pour info, si on mets les options les plus restrictives en C++, je ne suis pas sûr qu'on puisse les utiliser (en C on pourra toujours), mais à quoi bon mettre ces options?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Serveur/Client: envoi multiple d'images
    Par jbinder dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 25/01/2014, 03h18
  2. [eZ Publish] Problème par rapport au paramétrage de eZ Publish
    Par skawll dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/02/2011, 14h13
  3. Problème par rapport à un test numérique sur un champ VB
    Par mohamed_75 dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/10/2010, 19h15
  4. Problème alignement image par rapport au texte
    Par finalfx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/05/2006, 08h12
  5. [MySQL] Problème par rapport au tutoriel sur le stockage des images en base
    Par dark_vidor dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/09/2005, 10h37

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