Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction d'initialisation de la SDL

Sujet résolu
    29 mai 2006 à 19:17:06

    Bonjour,

    Pour alléger mon fichier main.c dans le programme que je développe, j'ai décider de créé une fonction qui initialise la SDL.

    void c_init( SDL_Surface* screen )
    {
        SDL_Init( SDL_INIT_VIDEO );
        screen = SDL_SetVideoMode(0, 0, 32, SDL_HWSURFACE | SDL_FULLSCREEN | SDL_DOUBLEBUF );
    }


    Cependant le fait que je mette SDL_SetVideoMode dans cette fonction fais que mon programme s'arrete dès qu'il arrive a cette instruction.
    Car lorsque que je sort SDL_SetVideoMode de cette fonction, le programme marche normalement.

    Je ne comprend pas pourquoi mon programme réagit ainsi.

    Merci de m'aider a réparer mon programme
    • Partager sur Facebook
    • Partager sur Twitter
      29 mai 2006 à 19:19:59


      Différence entre : modifier ce qui est pointé ET modifier vers quoi ça pointe.


      Probleme deja vu et revu.
      On ne peut changer l'adresse pointée par un pointeur quand ce pointeur est passé en parametre. Il faut : faire retourner une adresse et l'affecter OU passer l'adresse du pointeur et le modifier.


      SDL_Surface* c_init(void);
      void c_init(SDL_Surface ** screen);
      • Partager sur Facebook
      • Partager sur Twitter
        29 mai 2006 à 19:28:07

        Kayl a raison.
        Jette un coup d'oeil sur ma fonciton Initialiser :
        int initialisation(SDL_Surface **ecran, SDL_Surface **image, SDL_Surface **brique,
        SDL_Surface **raquette,SDL_Rect *positionImage, SDL_Rect *positionBrique,SDL_Rect *positionRaquette)
        {

            SDL_Init(SDL_INIT_VIDEO);

            (*ecran) = SDL_SetVideoMode(400 ,400 ,32, SDL_HWSURFACE | SDL_DOUBLEBUF);


            (*image) = IMG_Load("balle.gif");
            SDL_SetColorKey((*image), SDL_SRCCOLORKEY, SDL_MapRGB((*image)->format, 255, 255, 255));

            (*brique) = IMG_Load("brique.png");

            (*raquette) = IMG_Load("raquette.jpg");
            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));

            (*positionRaquette).x = 1;
            (*positionRaquette).y = 350;

            (*positionBrique).x = 134;
            (*positionBrique).y = 0;

            (*positionImage).x = 0;
            (*positionImage).y = 200;

        }
        • Partager sur Facebook
        • Partager sur Twitter
          29 mai 2006 à 19:32:06

          Merci

          Mais pourquoi ta fonction est de type int alors qu'elle ne retourne rien ?
          • Partager sur Facebook
          • Partager sur Twitter
            29 mai 2006 à 19:41:08

            Elle retourneee.
            Les valeurs des pointeurs qu'ont affecte directement.
            • Partager sur Facebook
            • Partager sur Twitter
              29 mai 2006 à 19:52:10

              Citation : oussama1305

              Elle retourneee.
              Les valeurs des pointeurs qu'ont affecte directement.



              Euh nan justement elle ne retroune rien.
              Car le int signifie que dans ta fonction il y aurait un "return" qui retournerai une variable de type int.
              Ce qui voudrai aussi dire que si l'on fais ceci:

              variable = initialisation();

              variable contiendrai un int ;)
              • Partager sur Facebook
              • Partager sur Twitter
                29 mai 2006 à 20:05:03

                oussama1305 aurait compilé correctement il aurait eu un message d'avertissement comme quoi rien n'était retourné.
                Si tu n'utilises rien oussama1305 , passe le type de ta fonction en void, ou utilise le retour int pour indiquer des erreurs (-1 en cas d'erreur, 0 sinon).
                • Partager sur Facebook
                • Partager sur Twitter
                  29 mai 2006 à 20:20:11

                  Et ... j'ai quelques difficultées :( .
                  Pouvez-vous m'aider ?
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Fonction d'initialisation de la SDL

                  × 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