Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mon perso s'affiche pas :(

zéro de chez zéro

    18 août 2006 à 18:40:23

    Bon le soucis est que je voulais démarrer mon tout premier jeu (enfin juste un niveau pour reviser un peu la SLD) et on peut dire que ca part trés mal vu que je n'arrive même pas a afficher mon personnage o_O

    Je vous fournis mon code, il est pas trés complet pour l'instant ...
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>

    int main(int argc, char *argv[])
    {
        //enum
        enum{GAUCHE,DROITE};

        //déclaration des variables
        SDL_Surface *ecran = NULL;
        int continuer = 1;
        SDL_Event event;
        SDL_Surface *perso[2] = {NULL};
        SDL_Surface *persoProfil = {NULL};
        SDL_Rect positionJoueur;

        //création de la fenetre avec la lib SDL
        SDL_Init(SDL_INIT_VIDEO);
        ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
        SDL_WM_SetCaption("Test", NULL);

        //création du perso
        perso[GAUCHE] = IMG_Load("sprites/heros1.gif");
        perso[DROITE] = IMG_Load("sprites/heros2.jpg");

        persoProfil= perso[GAUCHE];

        //position de départ
        positionJoueur.x = 50;
        positionJoueur.y = 50;


        //boucle du jeu
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;

            }

            SDL_BlitSurface(persoProfil, NULL, ecran, &positionJoueur);

            // Effacement de l'écran

            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
            SDL_Flip(ecran);
        }

        SDL_Quit();

        return EXIT_SUCCESS;
    }




    Désolé de caller aussite vite, et merci pour l'aide
    A noter que je met tout dans le main.c pour l'instant, car je comptais juste faire un niveau qui apparament directement quand on lance ... je pourrais tout de meme faire un autre fichier mais j'ai pas jugé ca utile :-°
    • Partager sur Facebook
    • Partager sur Twitter
      18 août 2006 à 18:49:02

      j'ai pas lu tout le code mais
      je croi qu'il faut dabord efacer l'ecran , et ensuit bliter le perso:


              // Effacement de l'écran
              SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));

             SDL_BlitSurface(persoProfil, NULL, ecran, &positionJoueur);




      • Partager sur Facebook
      • Partager sur Twitter
        18 août 2006 à 19:05:59

        Salut
        Oui ca peut paraitre logique :D j'ai fait le changement mais il apparait toujours pas ...

        edit : j'avais pas vu le post de Trist@n21...

        Ca marche niquel merci ;)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          18 août 2006 à 19:08:00

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

          int main(int argc, char *argv[])
          {
              //enum
              enum{GAUCHE,DROITE};

              //déclaration des variables
              SDL_Surface *ecran = NULL;
              int continuer = 1;
              SDL_Event event;
              SDL_Surface *perso[2] = {NULL};
              SDL_Surface *persoProfil = {NULL};
              SDL_Rect positionJoueur;

              //création de la fenetre avec la lib SDL
              SDL_Init(SDL_INIT_VIDEO);
              ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
              SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
              SDL_WM_SetCaption("Test", NULL);

              //création du perso
              perso[GAUCHE] = IMG_Load("sprites/heros1.gif");
              perso[DROITE] = IMG_Load("sprites/heros2.jpg");

              persoProfil= perso[GAUCHE];

              //position de départ
              positionJoueur.x = 50;
              positionJoueur.y = 50;


              //boucle du jeu
              while (continuer)
              {
                  SDL_WaitEvent(&event);
                  switch(event.type)
                  {
                      case SDL_QUIT:
                          continuer = 0;
                          break;

                  }

                  SDL_BlitSurface(persoProfil, NULL, ecran, &positionJoueur);

                  // Effacement de l'écran

                  SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                  SDL_Flip(ecran);
              }

              SDL_Quit();

              return EXIT_SUCCESS;
          }


          Devient

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

          int main(int argc, char *argv[])
          {
              //enum
              enum{GAUCHE,DROITE};

              //déclaration des variables
              SDL_Surface *ecran = NULL;
              int continuer = 1;
              SDL_Event event;
              SDL_Surface *perso[2] = {NULL};
              SDL_Surface *persoProfil = {NULL};
              SDL_Rect positionJoueur;

              //création de la fenetre avec la lib SDL
              SDL_Init(SDL_INIT_VIDEO);
              ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
              SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
              SDL_WM_SetCaption("Test", NULL);

              //création du perso
              perso[GAUCHE] = IMG_Load("sprites/heros1.gif");
              perso[DROITE] = IMG_Load("sprites/heros2.jpg");

              persoProfil= perso[GAUCHE];

              //position de départ
              positionJoueur.x = 50;
              positionJoueur.y = 50;

              SDL_BlitSurface(persoProfil, NULL, ecran, &positionJoueur);
              SDL_Flip(ecran);

              //boucle du jeu
              while (continuer)
              {
                  SDL_WaitEvent(&event);
                  switch(event.type)
                  {
                      case SDL_QUIT:
                          continuer = 0;
                          break;

                  }

              }

              SDL_Quit();

              return EXIT_SUCCESS;
          }
          • Partager sur Facebook
          • Partager sur Twitter

          Mon perso s'affiche pas :(

          × 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