Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur inconnue sur le jeu du tampon

SDL_WaitEvent(&event)

Sujet résolu
    29 juin 2007 à 21:34:07

    Salut à tous, j'ai essayé de faire le jeu du tampon expliqué dans les tutos du site, mais je me suis rendu compte qu'avec plusieurs images, quand je désirais changer, toutes les images déjà tamponnées auparavant changeaient, ce qui faisait que je n'avais qu'une seule et même image blittée plusieurs fois à l'écran.

    Je me suis donc dit : "Comment remédier à cela ?", j'ai pensé aux classes mais j'me suis demandé s'il n'y avait pas un moyen plus simple et ça m'est tombé sur le nez : un tableau de surfaces.

    J'ai donc écrit mon petit code, guilleret et content d'avoir trouvé une solution, si évidente puisse-t-elle être, je compile, pas d'erreurs, moi content :D
    J'exécute, et là, c'est le drame : rapport d'erreur :colere2:

    Donc je fais des fprintf(stderr, "Erreur"), un peu partout, et je détecte la fonction qui semble déconner, je vous poste donc le code en entier (dès fois que l'erreur ne soit pas celle que j'ai cru voir), la fonction qui pose problème étant le sous-titre de ce sujet :

    main.cpp

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

    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *elements[10], *elementActuel;
        SDL_Rect posElement[10];
        SDL_Event event;
       
        elementActuel = SDL_LoadBMP("zozor.bmp");
         
        int effacementTabElements = 0;
        int k = 0;
        bool continuer = true;
       
        for(int j = 0; j < 10; j++)
        {
         posElement[j].x = -1;
         posElement[j].y = -1;
        }
       
       
        while(continuer)
        {
         SDL_WaitEvent(&event);

         switch(event.type)
         {
          case SDL_QUIT:
               continuer=false;
               break;
          case SDL_MOUSEBUTTONDOWN:
               switch(event.button.button)
               {
                case SDL_BUTTON_LEFT:
                     if(k < 10)
                     {
                      posElement[k].x = event.button.x - 42;
                      posElement[k].y = event.button.y - 47;
                      elements[k] = elementActuel;
                     }
                     else
                     {
                      k = 0;                 
                      posElement[k].x = event.button.x - 42;
                      posElement[k].y = event.button.y - 47;
                      elements[k] = elementActuel;
                     }
                     
                     k++;
                     break;
               }
                     break;
         }
               
               SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
               
               for(int i = 0; i < k; i++)
               {
                SDL_BlitSurface(elements[i],NULL,ecran,&posElement[i]);
                SDL_Flip(ecran);
               }
        }
       
        while(effacementTabElements < 10)
        {
         SDL_FreeSurface(elements[effacementTabElements]);
         effacementTabElements++;
        }
       
        SDL_FreeSurface(elementActuel);
        SDL_Quit();
       
        return EXIT_SUCCESS;
    }
     
    • Partager sur Facebook
    • Partager sur Twitter
      29 juin 2007 à 23:27:03

      En l'état, je sais pas, mais il me vient une idée, c'est pas parce que tu codes en C++ que tu peux faire l'impasse sur l'initialisation de la SDL, sauf si je suis très fatigué (et vu l'heure c'est tout à fait possible), je ne vois pas de SDL_Init dans ton programme...
      • Partager sur Facebook
      • Partager sur Twitter
      Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
        29 juin 2007 à 23:52:56

        Merci int21h, grâce à toi, la décision qui me trotte dans la tête depuis plusieurs jours d'acheter une corde et un tabouret vient d'être validée ^^
        Et en plus j'ai oublié SDL_SetVideoMode...
        Les nuits blanches s'pas cool pour programmer :euh:
        • Partager sur Facebook
        • Partager sur Twitter

        Erreur inconnue sur le jeu du tampon

        × 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