Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] Fonction de diapo

    28 février 2006 à 20:59:30

    Voila je voulais faire une fonction de diaporama
    et j'ai tout codé le code marche mais quand je met en fonction sa marche pas

    main.c:
    #include <stdlib.h>
    #include <SDL/SDL.h>
    #include <SDL.h>
    #include "diapo.h"

    int main(int argc, char *argv[])
    {
        SDL_Surface *screen, *image;
            SDL_Rect dst;
        SDL_Event event;
         image = SDL_LoadBMP("tux.bmp");   
        char done = 0;
        diapo(*screen, *image, dst, event);
               
        while(!done)
        {
            while(SDL_PollEvent(&event))
            {
                switch(event.type)
                {
                    case SDL_QUIT:
                    done = 1;
                    break;
                }
            }
        }
        return 0;
    }


    diapo.h :
    // diapo.c
    #include <stdlib.h>
    #include <SDL/SDL.h>
    #include <SDL.h>


    void diapo (SDL_Surface *screen, *image,SDL_Rect dst,SDL_Event event)
    {
        if(SDL_Init(SDL_INIT_VIDEO) == -1)
        {
            printf("Can't init SDL:  %s\n", SDL_GetError());
            exit(1);
        }
        atexit(SDL_Quit);
        screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 255));
        if(screen == NULL)
        {
            printf("Can't set video mode: %s\n", SDL_GetError());
            exit(1);
        }

        if(image == NULL)
        {
            printf("Can't load image of tux: %s\n", SDL_GetError());
            exit(1);
        }
            dst.x = 200;
            dst.y = 200;
            dst.w = image->w;
            dst.h = image->h;
        SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format, 255, 0, 255));
        SDL_BlitSurface(image, NULL, screen, &dst);
        SDL_FreeSurface(image);
        SDL_Flip(screen);
        sleep(3000);
    }
    • Partager sur Facebook
    • Partager sur Twitter
    Engineer in Training please wait fr social life ---- Vist www.charybde.be
      28 février 2006 à 21:01:34

      C'est simple, tu fait SDL_LoadBMP avant de l'avoir initialiser...
      Il faut toujours initialiser SDL dans le main, ça évite ces ereures ;)
      • Partager sur Facebook
      • Partager sur Twitter
        28 février 2006 à 21:03:17

        Je ne comprend pas tu veut que k'initialise
        que je mette
        SDL_LoadBMP = 0;
        ?
        • Partager sur Facebook
        • Partager sur Twitter
        Engineer in Training please wait fr social life ---- Vist www.charybde.be
          28 février 2006 à 21:09:08

              if(SDL_Init(SDL_INIT_VIDEO) == -1)
              {
                  printf("Can't init SDL:  %s\n", SDL_GetError());
                  exit(1);
              }
              atexit(SDL_Quit);

          Ce code est l'initialisation de la SDL. Il doit être efectuer avent tout apelle d'une fonction de la SDL. Sinon, comme tu peut le constater, sa plante.
          On retrouve ceci avec de nombreuses lib SDL comme sdl_image, sdl_net...
          • Partager sur Facebook
          • Partager sur Twitter
            1 mars 2006 à 8:26:25

            Citation : EnMieu

                if(SDL_Init(SDL_INIT_VIDEO) == -1)
                {
                    printf("Can't init SDL:  %s\n", SDL_GetError());
                    exit(1);
                }
                atexit(SDL_Quit);


            Ce code est l'initialisation de la SDL. Il doit être efectuer avent tout apelle d'une fonction de la SDL. Sinon, comme tu peut le constater, sa plante.
            On retrouve ceci avec de nombreuses lib SDL comme sdl_image, sdl_net...



            J'aurais plutot fait :

                if(SDL_Init(SDL_INIT_VIDEO) == -1)
                {
                    fprintf(stderr, "Can't init SDL:  %s\n", SDL_GetError());
                    exit(1);
                }
                atexit(SDL_Quit);
            • Partager sur Facebook
            • Partager sur Twitter

            [SDL] Fonction de diapo

            × 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