Partage
  • Partager sur Facebook
  • Partager sur Twitter

sdl quitte

encore moi!!

Sujet résolu
    7 octobre 2007 à 11:21:27

    re-re-re-re et re salut
    encore avec la SDL :( a la la :-°
    bon on part euh voilà m@teo 21 à dit se code ci dessous pour faire "mon dégrader en SDL mais sa ne marche pas:
    1. #include <stdlib.h>  
    2. #include <SDL/SDL.h>
    3. int main(int argc, char *argv[])
    4. {
    5.     SDL_Surface *ecran = NULL, *lignes[256] = {NULL};
    6.     SDL_Rect position;
    7.     int i = 0;
    8.     SDL_Init(SDL_INIT_VIDEO);
    9.     ecran = SDL_SetVideoMode(640, 256, 32, SDL_HWSURFACE); // Hauteur de 256 pixels
    10.     for (i = 0 ; i <= 255 ; i++)
    11.         lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 1, 32, 0, 0, 0, 0); // Allocation des 256 surfaces
    12.     SDL_WM_SetCaption("Mon dégradé en SDL !", NULL);
    13.     SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
    14.     for (i = 0 ; i <= 255 ; i++)
    15.     {
    16.         position.x = 0; // Les lignes sont à gauche (abscisse de 0)
    17.         position.y = i; // La position verticale dépend du numéro de la ligne actuelle
    18.         SDL_FillRect(lignes[i], NULL, SDL_MapRGB(ecran->format, i, i, i)); // Remplissage
    19.         SDL_BlitSurface(lignes[i], NULL, ecran, &position); // Collage
    20.     }
    21.     SDL_Flip(ecran);
    22.     pause();
    23.     for (i = 0 ; i <= 255 ; i++) // N'oubliez pas de libérer chacune des 256 surfaces !
    24.         SDL_FreeSurface(lignes[i]);
    25.     SDL_Quit();
    26.     return EXIT_SUCCESS;
    27. }
    mais si je fait ça sa marche mais pendant trois seconde! et moi je voudrais que sa le fasse jus quand on quitte:

    1. #include <stdlib.h>  
    2. #include <SDL/SDL.h>
    3. int main(int argc, char *argv[])
    4. {
    5.     SDL_Surface *ecran = NULL, *lignes[256] = {NULL};
    6.     SDL_Rect position;
    7.     int i = 0;
    8.     SDL_Init(SDL_INIT_VIDEO);
    9.     ecran = SDL_SetVideoMode(640, 256, 32, SDL_HWSURFACE); // Hauteur de 256 pixels
    10.     for (i = 0 ; i <= 255 ; i++)
    11.         lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 1, 32, 0, 0, 0, 0); // Allocation des 256 surfaces
    12.     SDL_WM_SetCaption("Mon dégradé en SDL !", NULL);
    13.     SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
    14.     for (i = 0 ; i <= 255 ; i++)
    15.     {
    16.         position.x = 0; // Les lignes sont à gauche (abscisse de 0)
    17.         position.y = i; // La position verticale dépend du numéro de la ligne actuelle
    18.         SDL_FillRect(lignes[i], NULL, SDL_MapRGB(ecran->format, i, i, i)); // Remplissage
    19.         SDL_BlitSurface(lignes[i], NULL, ecran, &position); // Collage
    20.     }
    21.     SDL_Flip(ecran);
    22.     for (i = 0 ; i <= 255 ; i++) // N'oubliez pas de libérer chacune des 256 surfaces !
    23.         SDL_FreeSurface(lignes[i]);
    24.     SDL_Delay( 3000 );
    25.     return EXIT_SUCCESS;
    26. }

    • Partager sur Facebook
    • Partager sur Twitter
      7 octobre 2007 à 11:57:09

      dans le premier code tu utilise la fonction
      1. pause();
      mais tu ne la donne pas ?!?
      je penses que dans ta fonction
      1. pause();
      tu utilises
      1. SDL_WaitEvent(&event)
      et que tu fais un
      1. switch(event.type)

      dans le deuxième code tu utilse
      1. SDL_Delay(3000);
      donc en effet ça met ton programme en pause pendant 3s.
      • Partager sur Facebook
      • Partager sur Twitter
      Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
        7 octobre 2007 à 12:00:10

        oui mais il y a que commme ça que sa marche
        • Partager sur Facebook
        • Partager sur Twitter
          7 octobre 2007 à 12:03:27

          donne ta fonction pause();
          • Partager sur Facebook
          • Partager sur Twitter
          Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
            7 octobre 2007 à 12:41:05

            ATTENT euh oui je dois mettre quoi entre les parantèse de pause();

            ?? merci
            • Partager sur Facebook
            • Partager sur Twitter
              7 octobre 2007 à 13:02:48

              Pour utiliser la fonction pause tu doit la déclarée avant ton main avec :

              1. void pause();

              et la définir après ton main comme ceci :

              1. void pause()
              2. {
              3.     int continuer = 1;
              4.     SDL_Event event;
              5.     while (continuer)
              6.     {
              7.         SDL_WaitEvent(&event);
              8.         switch(event.type)
              9.         {
              10.             case SDL_QUIT:
              11.                 continuer = 0;
              12.         }
              13.     }
              14. }
              • Partager sur Facebook
              • Partager sur Twitter
                8 octobre 2007 à 17:25:34

                OOOooo merci Apprenti programmeur ça marche



                merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci ! ! ! !
                • Partager sur Facebook
                • Partager sur Twitter
                  8 octobre 2007 à 19:54:58

                  De rien ^^ ,
                  Toujours ravi d'aider un zero en détresse :p
                  @+
                  • Partager sur Facebook
                  • Partager sur Twitter

                  sdl quitte

                  × 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