Partage
  • Partager sur Facebook
  • Partager sur Twitter

Diviser un programme en fonctions

aide

    23 mai 2006 à 20:56:47

    Merci -ed-, grâce a ta première solution, mon code marche a merveille :
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <SDL/SDL_ttf.h>

    int initialisation(SDL_Surface **ecran);

    int main(int argc, char *argv[])
    {
        SDL_Surface *zozor = NULL, *ecran = NULL;
        SDL_Rect positionZozor;
        SDL_Event event;
        int continuer = 1;
        int tempsPrecedent = 0, tempsActuel = 0;

        initialisation(&ecran);
        zozor = SDL_LoadBMP("zozor.bmp");
        SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 255, 0, 0));

        positionZozor.x = ecran->w / 2 - zozor->w / 2;
        positionZozor.y = ecran->h / 2 - zozor->h / 2;

        SDL_EnableKeyRepeat(10, 10);

        while (continuer)
        {
            SDL_PollEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
            }
            tempsActuel = SDL_GetTicks();
            if (tempsActuel - tempsPrecedent > 30) /* Si 30 ms se sont écoulées */
            {
                positionZozor.x++; /* On bouge Zozor */
                tempsPrecedent = tempsActuel; /* Le temps "actuel" devient le temps "precedent" pour nos futurs calculs */
            }
            else /* Si ça fait moins de 30ms depuis le dernier tour de boucle, on endort le programme le temps qu'il faut */
            {
                SDL_Delay(30 - (tempsActuel - tempsPrecedent));
            }

            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
            SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
            SDL_Flip(ecran);
        }

        SDL_FreeSurface(zozor);
        SDL_Quit();

        return EXIT_SUCCESS;
    }
    int initialisation(SDL_Surface **ecran)
    {

        SDL_Init(SDL_INIT_VIDEO);

        *ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_WM_SetCaption("Gestion du temps en SDL", NULL);

    }


    j'ai une autre erreur, quand j'ajoute cette ligne a initialisation() en faisant tous les changements nécéssaires:
      SDL_SetColorKey(*zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 255, 0, 0));

    ca donne:
    Error : Request for member 'format' is something not a structure or union
    alors ? :(
    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2006 à 22:28:01

      Citation : oussama1305


      j'ai une autre erreur, quand j'ajoute cette ligne a initialisation() en faisant tous les changements nécéssaires:

        SDL_SetColorKey(*zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 255, 0, 0));


      ca donne:

      Error : Request for member 'format' is something not a structure or union

      alors ? :(


      On ne va pas jouer aux devinettes. Poste le code exact et complet de la fonction.

      Mais je suppose que tu veux ça : (*zozor)->format.

      C'est pour éviter ce genre d'écriture gore que je recommande l'usage d'un contexte. Autre possibilité plus propre, la variable locale :

      void initialisation(SDL_Surface **pp_ecran)
      {
         SDL_Init(SDL_INIT_VIDEO);
         {
            SDL_Surface *p_ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
            if (p_ecran != NULL)
            {
               SDL_WM_SetCaption("Gestion du temps en SDL", NULL);
               SDL_SetColorKey(p_ecran, SDL_SRCCOLORKEY, SDL_MapRGB(p_ecran->format, 255, 0, 0));
            }

            /* retour du pointeur a l'appelant */
            if (pp_ecran != NULL)
            {
               *pp_ecran = p_ecran;
            }
         }
      }
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        23 mai 2006 à 22:31:00

        Non mais le * ne sert à rien.
        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2006 à 22:37:32

          Citation : aurek

          Non mais le * ne sert à rien.


          o_Oo_O Rapport avec format ?
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !

          Diviser un programme en fonctions

          × 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