Partage
  • Partager sur Facebook
  • Partager sur Twitter

SDL problèmes à toutes les lignes

je ne comprends plus rien !

    17 avril 2006 à 11:48:09

    Salut,
    A chaque fois que j'essaye de faire un code en utilisant SDL il y a des erreurs de compilation à chaque ligne... Je peux bien comprendre que j'ai fais quelques erreurs de syntaxe mais quand même là c'est partout !
    En plus d'être assez décourragent, ce problème m'oblige à n'apprendre qu'en théorie et ne jamais m'entraîner, alors, s'il vous plaît, essayez de me débuguer le code pour que je comprenne mes erreurs... (Si je fais un copier-coller du code du cours, ça fonctionne très bien en plus donc ça ne vient pas de mon Visual ou d'une mauvaise installation ou je ne sais trop quoi)

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

    int main (int argv, char* arcg[])
    {
            SDL_Surface* echan = NULL;

            SDL_Init(SDL_INIT_VIDEO);
            ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_FULLSCREEM);
           
            int continuer = 1;
            int i = 0;
            while(continuer)
            {
                    SDL_WaitEvent(&event);
                    switch(event.key.keysym.sym)
                    {
                            case SDLK_UP:
                                    if (i<=255 | i>=0)
                                    {
                                            i++;
                                            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, i, i, i));
                                            SDL_Flip(ecran);
                                    }
                                    break;
                            case SDLK_DOWN:
                                    if (i<=225 | i>= 0)
                                    {
                                            i--;
                                            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, i, i, i));
                                            SDL_Flip(ecran);
                                    }
                                    break;
                            case SDLK_ESCAPE:
                                    continuer = 0;
                                    break;
                    }
            }

            SDL_Quit();

            return EXIT_SUCCESS;
    }


    Il y a des erreurs partout. Les plus bizares sont :
    error C2065: 'ecran' : identificateur non déclaré
    ou encore :
    error C2143: erreur de syntaxe : absence de ';' avant 'type'

    J'espère que vous trouverez...
    • Partager sur Facebook
    • Partager sur Twitter
      17 avril 2006 à 11:52:34

      Déja essaye d'écrire :

      SDL_Surface* ecran = NULL;


      à la place de:

      SDL_Surface* echan = NULL;

      ;)

      Pour les condition du type:
      if (i<=255 | i>=0)

      Le "ou" s'écrit avec deux barres:
      if (i<=255 || i>=0)


      Voila voila :-°
      • Partager sur Facebook
      • Partager sur Twitter
        17 avril 2006 à 11:55:00

        Ah ouais merci (c'est le genre d'erreur qu'on ne retrouve pas soi-même ^^ mais) mais il reste beaucoup d'erreurs :'(
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          17 avril 2006 à 11:55:29

          #include <SDL/SDL.h>

          (si tu as mis le fichier SDL.h dans le répertoire SDL comme c'est dis dans le cours)

          oublie pas le SDL_FreeSurface à la fin

          sinon dis nous l'erreur que te donne ton compilateur
          • Partager sur Facebook
          • Partager sur Twitter
            17 avril 2006 à 12:01:42

            Alors pour le <SDL/SDL.h> c'est normal en fait j'avais commencé à regarder SDL un peu avent que le cours soit écrit donc je n'ai pas fais exactement pareil, les erreurs ne viennent pas de là.
            Si je me rappelle bien SDL_Quit free la surface ecran tout seul non ?
            Les erreurs sont :
            error C2065: 'SDL_FULLSCREEM' : identificateur non déclaré
            error C2143: erreur de syntaxe : absence de ';' avant 'type'
            error C2143: erreur de syntaxe : absence de ';' avant 'type'
            error C2065: 'continuer' : identificateur non déclaré
            error C2065: 'event' : identificateur non déclaré
            warning C4133: 'fonction' : types incompatibles - de 'int *__w64 ' à 'SDL_Event *' (enfin ça c'est juste un warning)
            error C2224: la partie gauche de '.key' doit avoir un type struct/union
            error C2065: 'i' : identificateur non déclaré
            warning C4554: '|' : vérifiez la priorité des opérateurs comme cause possible d'erreur ; utilisez des parenthèses pour rendre plus claires les priorités
            warning C4554: '|' : vérifiez la priorité des opérateurs comme cause possible d'erreur ; utilisez des parenthèses pour rendre plus claires les priorités
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              17 avril 2006 à 12:35:46

              Déjà c'est FULLSCREEN, une erreur de faite...
              Après faut déclarer SDL_Event event;, sinon tu peux pas t'en servir après
              Après change le | en ||
              Pour le reste je vois pas
              • Partager sur Facebook
              • Partager sur Twitter
                17 avril 2006 à 12:45:13

                Merci pour le FULLSCREEN, le 'ou' s'écrit ||, mais en fait c'était un 'et' je je voulais c'est && ?
                Par contre je ne comprend pas ce que tu veux dire par
                "Après faut déclarer SDL_Event event;, sinon tu peux pas t'en servir après "
                Tu pourrais expliquer un peu stp ?
                Mais les plus embêtantes erreurs sont les trucs de ';' avent 'type' quand il n'y a pas de 'type' dans le code ^^ et le pire c'est que ça me le fait tout le temps.
                • Partager sur Facebook
                • Partager sur Twitter
                  17 avril 2006 à 12:52:56

                  En gros ce qu'il voulait te dire, c'est qu'il faut déclarer les variables que tu utilises. :-°
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
                    17 avril 2006 à 12:55:05

                    Lol mais c'est pas une variable à moi ça c'est une sous-variable faite par SDL non ? Comment je dois la déclarer ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 avril 2006 à 12:58:48

                      Un conseil, va relire le cours de mateo, tout est dedans. La relecture du chapitre sur la gestion des evenements ca serait pas du luxe pour toi je crois...
                      Pour déclarer la variable event, comme indiqué plus haut, c'est SDL_Event event; alle bonne chance a toi ! :euh:
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
                        17 avril 2006 à 12:59:52

                        Citation : noobducode

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

                        #include <SDL/sdl.h>

                        Ceci fonctionne :
                        Secret (cliquez pour afficher)

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

                        int main (int argv, char* arcg[])
                        {
                           if (SDL_Init(SDL_INIT_VIDEO) == 0)
                           {
                              SDL_Surface* ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_FULLSCREEN);
                              if (ecran != NULL)
                              {
                                 int continuer = 1;
                                 int i = 0;
                                 do
                                 {
                                    SDL_Event event;
                                    SDL_WaitEvent(&event);
                                    switch (event.key.keysym.sym)
                                    {
                                    case SDLK_UP:
                                       if (i <= 255 | i >= 0)
                                       {
                                          i++;
                                          SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, i, i, i));
                                          SDL_Flip(ecran);
                                       }
                                       break;
                                    case SDLK_DOWN:
                                       if (i <= 225 | i >= 0)
                                       {
                                          i--;
                                          SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, i, i, i));
                                          SDL_Flip(ecran);
                                       }
                                       break;
                                    case SDLK_ESCAPE:
                                       continuer = 0;
                                       break;
                                       default:;
                                    }
                                 }
                                 while (continuer != 0);
                              }
                           }
                           SDL_Quit();

                           return EXIT_SUCCESS;
                        }
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Music only !
                          17 avril 2006 à 13:03:13

                          Pour SDL/SDL.h :
                          CF 5°message
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 avril 2006 à 13:14:11

                            Citation : noobducode

                            Pour SDL/SDL.h :
                            CF 5°message


                            Certes, mais il ne faut pas bricoler comme ça... Il faut respecter scrupuleusement les consignes d'installation des bibliothèques et fichier d'entêtes.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Music only !
                              17 avril 2006 à 13:18:57

                              Ah !!! Mais oui que je suis ... comme une .... ! Vraiment merci à tous je teste le code !

                              EDIT : Alors pour l'installation de la DSL, je n'avais pas voulu mélanger une librairie étrangère aux librairies de base donc j'avais fais un lien vers le dossier.

                              Bon j'ai déplacé des lignes et ça a résolu presque tous les problèmes (je pense que c'est un bug de Visual)
                              Il reste
                              error C2143: erreur de syntaxe : absence de ';' avant 'type'
                              Avec ca code :
                              #include <stdio.h>
                              #include <stdlib.h>
                              #include <SDL.h>

                              int main(int argc, char *argv[])
                              {
                                      SDL_Surface* ecran = NULL;
                                      int continuer = 1 int i = 0;

                                      SDL_Init(SDL_INIT_VIDEO);
                                      ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_FULLSCREEN);
                                     
                                      while(continuer)
                                      {
                                              SDL_Event event;
                                              SDL_WaitEvent(&event);
                                              switch(event.key.keysym.sym)
                                              {
                                                      case SDLK_UP:
                                                              if (i<=255 && i>=0)
                                                              {
                                                                      i++;
                                                                      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, i, i, i));
                                                                      SDL_Flip(ecran);
                                                              }
                                                              break;
                                                      case SDLK_DOWN:
                                                              if (i<=225 && i>= 0)
                                                              {
                                                                      i--;
                                                                      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, i, i, i));
                                                                      SDL_Flip(ecran);
                                                              }
                                                              break;
                                                      case SDLK_ESCAPE:
                                                              continuer = 0;
                                                              break;
                                              }
                                      }

                                      SDL_Quit();

                                      return EXIT_SUCCESS;
                              }

                              Quelqu'un veut bien le tester avec un autre compilateur que Visual peut être que ça marchera ...
                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 avril 2006 à 14:30:26

                                Citation : noobducode

                                int continuer = 1 int i = 0;

                                Franchement t'es vraiment fatigué...

                                Bon sinon moi ça compile avec Dev-C++(en remplaçant SDL.h par SDL/sdl.h biensur!!
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 avril 2006 à 14:47:27

                                  Citation : noobducode


                                  error C2143: erreur de syntaxe : absence de ';' avant 'type'
                                  Avec ce code :


                                          int continuer = 1 int i = 0;



                                  On peut difficilement être plus clair...
                                          int continuer = 1; int i = 0;

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Music only !

                                  SDL problèmes à toutes les lignes

                                  × 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