diaporama en sdl

diaporama en sdl - C - Programmation

Marsh Posté le 06-02-2010 à 20:34:09    

salut  
 
 
j'essaie d'affiché a l'écran une suite de 10 images différent "diaporama" en SDL coder en C
mais après le menu une seul image apparais  
 

Code :
  1. #include <stdio.h>
  2. #include <cstdlib>
  3. #include <stdlib.h>
  4. #include <SDL/SDL.h>
  5. #include "main.h"
  6. #define nombreImage 10
  7. void animation(SDL_Surface *ecran);
  8. int main(int argc,char *argv[])
  9. {
  10.     int continu=1;
  11.     SDL_Init(SDL_INIT_VIDEO);
  12.     SDL_Event event;
  13.     SDL_Rect position;
  14.     position.x=0;
  15.     position.y=0;
  16.     SDL_Surface *ecran=NULL,*menu=NULL;
  17.     ecran=SDL_SetVideoMode(LONGEUR_FENETRE,LARGEUR_FENETRE,32,SDL_HWSURFACE);
  18.     menu=SDL_LoadBMP("menu.BMP" );
  19.     while (continu)
  20.     {
  21.         SDL_WaitEvent(&event);
  22.         switch (event.type)
  23.         {
  24.         case SDL_QUIT:
  25.             continu=0;
  26.             break;
  27.         case SDL_KEYDOWN:
  28.             switch (event.key.keysym.sym)
  29.             {
  30.             case SDLK_1:
  31.                 animation(ecran);/*on rentre dans la fonction*/
  32.                 break;
  33.             }
  34.         }
  35.         SDL_FillRect(ecran,NULL,SDL_MapRGB((*ecran).format,255,255,255));
  36.         SDL_BlitSurface(menu,NULL,ecran,&position);
  37.         SDL_Flip(ecran);
  38.     }
  39. }
  40. void animation(SDL_Surface *ecran)
  41. {
  42.     int continu1=1,i=0;
  43.     char matrice[100]={NULL};
  44.     SDL_Surface *compteur[nombreImage]={NULL},*compteurActuelle=NULL,*Fond=NULL;
  45.     SDL_Rect position;
  46.     SDL_Event event;
  47.     position.x=0;
  48.     position.y=0;
  49.     Fond=SDL_LoadBMP("D:\\projet codebolck\\animation\\fond.BMP" );
  50.     for (i=0;i<nombreImage;i++)
  51.     {
  52.         sprintf(matrice,"D:\\projet codebolck\\animation\\image%d.BMP",i);
  53.         compteur[i]=SDL_LoadBMP(matrice);/*on charge les 10 images*/
  54.     }
  55.     i=0;
  56.     while (continu1)
  57.     {
  58.         SDL_WaitEvent(&event);
  59.         switch (event.type)
  60.         {
  61.         case SDL_QUIT:
  62.             continu1=0;
  63.             break;
  64.         case SDL_KEYDOWN:
  65.             switch (event.key.keysym.sym)
  66.             {
  67.         case SDLK_1:
  68.                 i++;/*on fais défilé les images les images */
  69.                 break;
  70.             }
  71.             break;
  72.         }
  73.         compteurActuelle=compteur[i];
  74.         SDL_FillRect(ecran,NULL,SDL_MapRGB((*ecran).format,255,255,255));
  75.         SDL_BlitSurface(Fond,NULL,ecran,&position);
  76.         SDL_BlitSurface(compteurActuelle,NULL,ecran,&position);
  77.         SDL_Flip(ecran);
  78.     }
  79.     SDL_FreeSurface(Fond);
  80.     SDL_FreeSurface(compteurActuelle);
  81.     for (i=0;i<nombreImage;i++)
  82.     {
  83.         SDL_FreeSurface(compteur[i]);
  84.     }
  85. }

 
 
main.h

Code :
  1. #ifndef MAIN_H_INCLUDED
  2. #define MAIN_H_INCLUDED
  3. #define TAILLE_BLOC 50
  4. #define NB_BLOC_LARGEUR 10
  5. #define NB_BLOC_LONGEUR 12
  6. #define LONGEUR_FENETRE NB_BLOC_LONGEUR*TAILLE_BLOC
  7. #define LARGEUR_FENETRE NB_BLOC_LARGEUR*TAILLE_BLOC
  8. #endif


Message édité par relais le 07-02-2010 à 20:57:36
Reply

Marsh Posté le 06-02-2010 à 20:34:09   

Reply

Marsh Posté le 06-02-2010 à 22:01:55    

Tu n'aurais pas oublié d'appuyer sur la touche Échap pour faire défiler tes images ?!

 

Parce que c'est comme ça que le code que tu as sensé écrit semble fonctionner...


Message édité par tpierron le 06-02-2010 à 22:02:40
Reply

Marsh Posté le 07-02-2010 à 10:15:27    

Citation :

sprintf(matrice,"D:\\projet codebolck\\animation\\image%d.BMP",i);


C'est bien codebolck et non pas codeblock?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 07-02-2010 à 11:58:11    

salut  
tpierron  
meme si je tape sur echap,après le menu  j'ai toujours la premier image a l'écran
j'ai modifier le code pour faire défilé les images en tapant 1 sur le clavier ,idem
pour gilou  
faut d'orthographe de ma part  
 
                     

Reply

Marsh Posté le 07-02-2010 à 20:55:51    

erreur corrigé

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed