Partage
  • Partager sur Facebook
  • Partager sur Twitter

faire rebondir une image

petit problème

Sujet résolu
    18 mai 2006 à 20:34:56

    bonjour,
    j'ai essayé de faire une application avec une image qui rebondit a gauche a droite mais j'a pas pu
    voici mon code
    #include <stdio.h>
    #include <stdlib.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>

    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL,*image = NULL;
        SDL_Rect positionImage;
        SDL_Event event;
        int continuer = 1, i = 150;


        SDL_Init(SDL_INIT_VIDEO);

        ecran = SDL_SetVideoMode(500, 500, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);

        image = IMG_Load("1.bmp");
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
        SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);

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


        positionImage.x = (ecran->w / 2) - (image->w / 2);
        positionImage.y = (ecran->h / 2) - (image->h / 2);

        SDL_EnableKeyRepeat(10,10);

        while(continuer)
        {
            SDL_PollEvent(&event);
            if(positionImage.x != (ecran->w - image->w))
            positionImage.x ++;
            else
            positionImage.x --;
            switch(event.type)
            {
                case SDL_QUIT :
                continuer = 0;
                break;
                case SDL_KEYDOWN:
                switch(event.key.keysym.sym)
                {
                    case SDLK_KP0:
                    image = IMG_Load("0.bmp");
                    break;
                    case SDLK_KP1:
                    image = IMG_Load("1.bmp");
                    break;
                    case SDLK_KP2:
                    image = IMG_Load("2.bmp");
                    break;
                    case SDLK_KP3:
                    image = IMG_Load("3.bmp");
                    break;
                    case SDLK_KP4:
                    image = IMG_Load("4.bmp");
                    break;
                    case SDLK_KP5:
                    image = IMG_Load("5.bmp");
                    break;
                    case SDLK_KP6:
                    image = IMG_Load("6.bmp");
                    break;
                    case SDLK_KP7:
                    image = IMG_Load("7.bmp");
                    break;
                    case SDLK_KP8:
                    image = IMG_Load("8.bmp");
                    break;
                    case SDLK_KP9:
                    image = IMG_Load("9.bmp");
                    break;
                }
                break;
                case SDL_MOUSEBUTTONUP:
                switch(event.button.button)
                {
                    case SDL_BUTTON_LEFT :
                    break;
                }

                break;
                case SDL_MOUSEMOTION:
                break;

            }



        SDL_BlitSurface(image,NULL,ecran,&positionImage);
        SDL_Flip(ecran);
        }


        SDL_FreeSurface(image);
        SDL_Quit();

        return EXIT_SUCCESS;

    }

    quand je compile, l'image se déplace a droite comme prévu, mais equand elle arrive aux bords, elle commence a vibroter (a se déplacer d'un pixel gauche, droite, gauche .....)
    merci pour vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2006 à 22:05:16

      j'imagine qu'il faut que tu fixe une variable "direction"

      tu fais :

      if( direction == DROITE && coordonnee < 640 )
      ...
      else
      direction = GAUCHE ;


      en gros... ;)


      et ne charge pas une image à chaque boucle malheureux ! tu les charge au début, et après tu y fait appel au long de ton programme
      • Partager sur Facebook
      • Partager sur Twitter

      faire rebondir une image

      × 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