Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment gérer l'effacement ?

Pour event.motion

Sujet résolu
    19 juin 2006 à 12:39:08

    Salut ;)

    J'en suis à la fin du premier tuto de la gestion des évènements SDL et j'ai voulu faire un p'tit truc. En fait, zozor suit la souris, l'écran s'efface etc... pas de problème, mais ce que je voulais faire en plus, c'est lorsque je créé l'évènement SDL_MOUSEBUTTONDOWN, zozor soit blitté aux coordonnées de la souris. Malheureusement, à chaque nouvel évènement, l'écran subit un effacement avec SDL_FillRect et mon Blit disparaît :(

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

    int main (int argc, char *argv[])
    {
        SDL_Surface *screen = NULL, *zozor = NULL;
        SDL_Event event;
        SDL_Rect position;
        int continuer = 1;
       
        SDL_Init(SDL_INIT_VIDEO);
       
        screen = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
        zozor = SDL_LoadBMP("zozor.bmp");
       
        SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
       
        SDL_Flip(screen);
       
        while(continuer)
        {
               SDL_WaitEvent(&event);
               switch(event.type)
               {
                      case SDL_QUIT:
                           continuer = 0;
                           break;
                      case SDL_MOUSEMOTION:
                           position.x = event.motion.x - zozor->w/2;
                           position.y = event.motion.y - zozor->h/2;                                                                                         
                           break;
                      case SDL_MOUSEBUTTONDOWN:
                           switch(event.button.button)
                           {
                               case SDL_BUTTON_LEFT:
                                    position.x = event.button.x - zozor->w/2;
                                    position.y = event.button.y - zozor->h/2;
                                    break;
                               case SDL_BUTTON_RIGHT:
                                    continuer = 0;
                                    break;
                                    }
                                    break;
                                     
                                      }
                                     
            SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 45, 76, 178));
            SDL_BlitSurface(zozor, NULL, screen, &position);
            SDL_Flip(screen);
                                     
                                      }
                                           
            SDL_Quit();
           
            return EXIT_SUCCESS;
    }

    • Partager sur Facebook
    • Partager sur Twitter
      19 juin 2006 à 16:24:01

      il faut utiliser un tableau de SDL_Rect ou tu retien les positions de tes zozors et tu fait une boucle pour l'afficher à chacune des positions retenues ainsi
      • Partager sur Facebook
      • Partager sur Twitter
        19 juin 2006 à 16:35:51

        Merci je vais essayer ça ;)
        • Partager sur Facebook
        • Partager sur Twitter

        Comment gérer l'effacement ?

        × 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