Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème sur d'exercices des evenements

Sujet résolu
    19 avril 2006 à 22:45:54

    Bonsoir,

    J'ai un petit soucis avec mon code. J'ai fini de lire le chapitre sur les evènements, et j'essaie de faire les exercices que Mateo propose a la fin.
    Mon code tente de faire que quand je clique avec le boutton gauche de la souris, l'écran devient blanc (alors que initialement il était noir !)
    Le problème c'est que quand je compile il me met comme erreur:

    Citation : Erreur

    Warning : No newline at the end of file



    Voici mon code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>

    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *imageDeZozor = NULL;
        int continuer = 1, cliqueDeSouris = 0;
        SDL_Event event;
        SDL_Rect positionZozor;

        //Chargement de la SDL
        SDL_Init(SDL_INIT_VIDEO);
        //Ouverture d'une fenêtre
        ecran = SDL_SetVideoMode(640,480,32,SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_SW_SetCaption("Exercices sur les evenements",NULL);

        imageDeZozor = IMG_Load("zozor.bmp");
        while(continuer)
        {
            SDL_WaitEvent(&event);
            switch (event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
                case SDLK_ESCAPE:
                    continuer = 0;
                    break;
                case SDL_MOUSEBUTTONDOWN:
                if(event.button.button = SDL_BUTTON_LEFT)
                {
                    cliqueDeSouris = 1;
                }


            }
        }
        if(cliqueDeSouris)
        {
            SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,250,250,250));
        }
        else
        {
            SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
        }
        SDL_Flip(ecran);

        SDL_FreeSurface(imageDeZozor);
        SDL_Quit();
        return EXIT_SUCCESS;
    }


    Voila bon il m'a déja mis cette erreur auparavent, mais a chaque fois c'est parce que j'avais oublié une majuscule a une fonction SDL (comme SDL_MapRGB, je l'avais écrit: SDL_mapRGB)
    Mais la je ne trouve pas mon erreur.
    pouvez vous m'aider svp ?

    A+ :)

    • Partager sur Facebook
    • Partager sur Twitter
      19 avril 2006 à 22:57:19

      Laisse une ligne blanche à la fin de ton code
      • Partager sur Facebook
      • Partager sur Twitter
        19 avril 2006 à 23:00:38

        oui je pense qu'iul a raison Araya car si on traduit sa te met Warning : No newline at the end of file ce qui veut dire pas ne nouvelle ligne a la fin du fichier!
        et j'ai pas etudier les evenements !
        j'ai lu dans le forum que les compilateurs aprecies quand on laisse plusieurs ligne blanche donc vide a la fin du fichier !
        :)
        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2006 à 9:48:01

          Merci. J'ai relu le chpitre sur le preprocessor hier, et en le relisant j'ai vu que Mateo nous avait expliqué que cette erreur arrivait si on ne sautait pas de ligne ^^

          Sinon mon code ne fait rien :(

          Quand je compile il me met sa:

          Citation : Erreur

          Project : Console application
          Compiler : GNU GCC Compiler (called directly)
          Directory : C:\Documents and Settings\pc\Mes documents\C++\Exercices Evenements\
          --------------------------------------------------------------------------------
          Switching to target: default
          Linking console executable: C:\Documents and Settings\pc\Mes documents\C++\Exercices Evenements\evenements.exe
          .objs\main.o:main.c:(.text+0x2a): undefined reference to `SDL_Init'
          .objs\main.o:main.c:(.text+0x4e): undefined reference to `SDL_SetVideoMode'
          .objs\main.o:main.c:(.text+0x65): undefined reference to `SDL_SW_SetCaption'
          .objs\main.o:main.c:(.text+0x71): undefined reference to `IMG_Load'
          .objs\main.o:main.c:(.text+0x85): undefined reference to `SDL_WaitEvent'
          .objs\main.o:main.c:(.text+0xf3): undefined reference to `SDL_MapRGB'
          .objs\main.o:main.c:(.text+0x10a): undefined reference to `SDL_FillRect'
          .objs\main.o:main.c:(.text+0x132): undefined reference to `SDL_MapRGB'
          .objs\main.o:main.c:(.text+0x149): undefined reference to `SDL_FillRect'
          .objs\main.o:main.c:(.text+0x154): undefined reference to `SDL_Flip'
          .objs\main.o:main.c:(.text+0x15f): undefined reference to `SDL_FreeSurface'
          .objs\main.o:main.c:(.text+0x164): undefined reference to `SDL_Quit'
          C:\Program Files\CodeBlocks\lib/libmingw32.a(main.o):main.c:(.text+0x106): undefined reference to `WinMain@16'
          collect2: ld returned 1 exit status
          Process terminated with status 1 (0 minutes, 0 seconds)



          Pourtant j'ai bien inséré la preprocessor de la SDL et de la SDL_Image, et j'ai bien mis dand mon dossier le fichier Sdl.dll

          Can you help me please ? :p

          A+ :)
          • Partager sur Facebook
          • Partager sur Twitter
            20 avril 2006 à 9:55:11

            Si par préprocessor tu entends #include, alors continue de lire le tuto tu verras qu'il faut aussi LINKER les .lib/.a de la SDL.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              20 avril 2006 à 9:55:46

              Tu as linké -lmingw32 -lSDL_image -lSDLmain -lSDL ??
              • Partager sur Facebook
              • Partager sur Twitter
                20 avril 2006 à 10:04:11

                What ?

                Il y a juste a faire ces includes la non ?

                Par "linker" vous voulez dire si j'ai installé la SDL ?

                A+

                EDIT: Je comprend pas, hier tout mes fichiers marchaient bien, et la maintenant plus aucune fenêtre s'ouvre, même avec le code de Mateo !
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  20 avril 2006 à 10:06:07

                  Nonon c'est dans les options du projet, après ça dépend de ton IDE, à un endroit tu dois rajouter -lmingw32 -lSDL_image -lSDLmain -lSDL : ça linke les .a ou .lib correspondant
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 avril 2006 à 10:12:35

                    Exacte, j'avais déja fais cette manipulation, mais apparament le code c'est enlevé :(

                    Bon j'ai tout rectifier et sa fonctionne.

                    Un dernière chose et je ne vous embête plus.
                    Je voudrais que mon code ouvre un fenêtre qui soit noir (jusque là sa va^^), et ensuite, que quand je fait un clique gauche, l'ecran devienne blanc, mais mon code ne marche pas !

                    Pouvez vous m'aider a le modifier pour qu'il marche ?

                    A+ :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      20 avril 2006 à 10:47:43

                      if(event.button.button = SDL_BUTTON_LEFT)

                      Hem
                      if(event.button.button == SDL_BUTTON_LEFT)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 avril 2006 à 12:48:21

                        Merci, mais malgré sa, sa ne fonctionne toujours pas :(

                        A+
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          20 avril 2006 à 13:17:36

                          Ben je vois pas moi, qu'est-ce qui ne marche pas? Ya des warnings, des erreurs? (au fait le blanc c'est 255 255 255 pas 250 250 250)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 avril 2006 à 13:26:18

                            Justement tout fonctionne.

                            Il m'ouvre bien ma fenêtre, quand je clique sur la croix c'est Ok, mais quand je clique sur le bouton gauche de la souris, au lieu que l'écran devienne blanc, il reste noir :(

                            A+
                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 avril 2006 à 14:09:17

                              Bonjour,
                              Le problème vient de ce bout de code :

                              if(cliqueDeSouris)
                                  {
                                      SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,250,250,250));
                                  }
                                  else
                                  {
                                      SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
                                  }
                                  SDL_Flip(ecran);


                              Ce bout de code n'est pas dans la boucle principale, ce qui siginifie qu'il s'éxecute à la fin et le programme ferme si vite que tu n'as pas le temps de voir le changement.
                              Il suffit l'inclure dans la boucle.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                20 avril 2006 à 14:15:14

                                Yes exactement :)

                                Je vous remercie tous pour votre aide ;)

                                A+
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Problème sur d'exercices des evenements

                                × 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