Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C SDL] pointeur et sdl_surface

Sujet résolu
Anonyme
    20 avril 2006 à 19:50:22

    Salut,

    Je voudrais envoyer à une fonction un pointeur sur une variable de type SDL_Surface mais j'ai un p'tit problème:


    // on initialise la variable
    SDL_Surface *test = NULL

    //on envoit la variable a la fonction
    mafunction(&test);



    voici la fonction:


    void mafunction(SDL_Surface *test)
    {
        test = Load_Img("image.bmp");
    }


    Le probleme est qu'en temps normale on est obligé de mettre

    SDL_Surface *test


    dans la fonction pour allouer la mémoire donc comment faire pour montré que test est un pointeur et qu'une foi sortie de la fonction elle contienne l'image "image.bmp" ? car la une foi la fonction terminé ma variable test vaut NULL


    Merci d'avance

    @++
    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2006 à 19:53:13

      SDL_Surface *test = NULL;

      Plutot non? Ne les oublie pas...
      • Partager sur Facebook
      • Partager sur Twitter
        20 avril 2006 à 20:28:52

        Si le prototype est

        void mafunction(SDL_Surface* test);


        Il faut que tu passe le pointeur à la fonction de cette manière:

        mafunction(test);


        Après tu peux utiliser "test" dans ta fonction de manière habituelle ;)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          20 avril 2006 à 21:51:20

          ok merci.

          mais j'ai un petit problème, j'ai fait un jeu ou les sprites sont assigné au variable par une fonction et les sprites ne s'affichent pas:

          Appelle de la fonction:

          if ( !chargement_sprites_editeur(perso) )
                  exit(EXIT_FAILURE);


          fonction:

          int chargement_sprites_editeur(SDL_Surface* perso)
          {
              perso = IMG_Load("images/perso/aryl_bas.gif");
          return 1
          }


          et donc quand je lance le jeu, on vois pas le perso.

          PS: j'ai retiré le plus de code possible pour eviter de trop surchargé. mais j'ai testé juste avec ce que j'ai donné et sa ne s'affiche pas non plus.

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            22 avril 2006 à 14:28:07

            Euh... faut peut-être le blitter...
            • Partager sur Facebook
            • Partager sur Twitter
              22 avril 2006 à 14:30:34

              Passer un pointer a une fonction permet de modifier ce vers quoi il pointe. Mais la valeur du pointeur (l'entier qui contient l'adresse) est une copie.

              Utiliser plutot un retour dans ce cas ou faire un pointeur vers le pointeur.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                22 avril 2006 à 14:33:20

                il estt blitter à la fin de la fonction principal.
                Si je remplace l'appelle de la fonction directement par:

                perso = IMG_Load("images/perso/aryl_bas.gif");


                sa fonctionne corectement donc le problème vient de la fonction ou de son appelle :)

                Edit:

                Kayl => ce que je veut faire c'est un pointeur vers le pointeur comme tu la dit, mais je vois pas comment faire

                Merci.
                • Partager sur Facebook
                • Partager sur Twitter
                  22 avril 2006 à 14:38:35

                  void chargement_sprites_editeur(SDL_Surface** ppsurface)
                  {
                      *ppsurface = IMG_Load("images/perso/aryl_bas.gif");
                  }

                  SDL_Surface * perso;
                  chargement_sprites_editeur(&perso);


                  Si ça marche, chapeau. J'ai pas testé car j'aurais personnellement choisi la première technique.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    22 avril 2006 à 14:46:56

                    Super sa marche !

                    j'ai pas utilisé la première technique car je vais modifier la fonction pour quelle puisse afficher plusieurs sprites.

                    Merci !!! :D
                    • Partager sur Facebook
                    • Partager sur Twitter

                    [C SDL] pointeur et sdl_surface

                    × 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