Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Ex: SDL] Les 3 Zozor

Disparitions apres ouverture de la fenetre

Sujet résolu
    3 novembre 2006 à 12:55:39

    Bonjour tout le monde !

    J'ai un petit probleme sur l'affichage de Zozor, il disparait apres que la fenetre soit ouverte. J'ai repris le code precedent qui fonctionne, puis je l'ai amélioré pour l'exercice.


    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>

    int main(int argc, char *argv[])
    {
        int continuer = 1;

        SDL_Surface *ecran = NULL, *zozor = NULL;
        SDL_Rect positionZozor[2];
        SDL_Event event;

        SDL_Init(SDL_INIT_VIDEO);
        ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);

        zozor = SDL_LoadBMP("zozor.bmp");
        SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));

        positionZozor[0].x = ecran->w / 2 - zozor->w / 2;
        positionZozor[0].y = ecran->h / 2 - zozor->h / 2;

        positionZozor[1].x = (ecran->w / 2 - zozor->w / 2) + 20;
        positionZozor[1].y = (ecran->h / 2 - zozor->h / 2) + 20;

        positionZozor[2].x = (ecran->w / 2 - zozor->w / 2) + 40;
        positionZozor[2].y = (ecran->h / 2 - zozor->h / 2) + 40;

        SDL_EnableKeyRepeat(10, 10);

        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 SDLK_UP:
                            positionZozor[0].y--;
                            positionZozor[1].y--;
                            positionZozor[2].y--;
                            break;

                        case SDLK_DOWN:
                            positionZozor[0].y++;
                            positionZozor[1].y++;
                            positionZozor[2].y++;
                            break;

                        case SDLK_RIGHT:
                            positionZozor[0].x++;
                            positionZozor[1].x++;
                            positionZozor[2].x++;
                            break;

                        case SDLK_LEFT:
                            positionZozor[0].x--;
                            positionZozor[1].x--;
                            positionZozor[2].x--;
                            break;
                    }
                break;
            }

            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));

            SDL_BlitSurface(zozor, NULL, ecran, positionZozor + 0);
            SDL_BlitSurface(zozor, NULL, ecran, positionZozor + 1);
            SDL_BlitSurface(zozor, NULL, ecran, positionZozor + 2);

            SDL_Flip(ecran);
        }

        SDL_FreeSurface(zozor);
        SDL_Quit();

        return EXIT_SUCCESS;
    }



    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      3 novembre 2006 à 13:26:52

      Salut!
      Mets en initialisation de variable
      SDL_Rect positionZozor[3];


      J'ai essayer ca marche ;)
      • Partager sur Facebook
      • Partager sur Twitter
        3 novembre 2006 à 13:37:59

        Citation : Kelthalas

        Salut!
        Mets en initialisation de variable

        SDL_Rect positionZozor[3];



        J'ai essayer ca marche ;)



        En effet, quelque explications peut-être ?
        • Partager sur Facebook
        • Partager sur Twitter
          3 novembre 2006 à 13:43:06

          Bien sur :p :

          Citation : Cours de M@teo21


          Très important : un tableau commence à l'indice n°0 ! Notre tableau de 4 long a donc les indices 0, 1, 2 et 3. Il n'y a pas d'indice 4 ! C'est une source d'erreurs très courante, souvenez-vous en !


          Voila ^^
          Kelthalas
          • Partager sur Facebook
          • Partager sur Twitter

          [Ex: SDL] Les 3 Zozor

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown