relais | 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 :
- #include <stdio.h>
- #include <cstdlib>
- #include <stdlib.h>
- #include <SDL/SDL.h>
- #include "main.h"
- #define nombreImage 10
- void animation(SDL_Surface *ecran);
- int main(int argc,char *argv[])
- {
- int continu=1;
- SDL_Init(SDL_INIT_VIDEO);
- SDL_Event event;
- SDL_Rect position;
- position.x=0;
- position.y=0;
- SDL_Surface *ecran=NULL,*menu=NULL;
- ecran=SDL_SetVideoMode(LONGEUR_FENETRE,LARGEUR_FENETRE,32,SDL_HWSURFACE);
- menu=SDL_LoadBMP("menu.BMP" );
- while (continu)
- {
- SDL_WaitEvent(&event);
- switch (event.type)
- {
- case SDL_QUIT:
- continu=0;
- break;
- case SDL_KEYDOWN:
- switch (event.key.keysym.sym)
- {
- case SDLK_1:
- animation(ecran);/*on rentre dans la fonction*/
- break;
- }
- }
- SDL_FillRect(ecran,NULL,SDL_MapRGB((*ecran).format,255,255,255));
- SDL_BlitSurface(menu,NULL,ecran,&position);
- SDL_Flip(ecran);
- }
- }
- void animation(SDL_Surface *ecran)
- {
- int continu1=1,i=0;
- char matrice[100]={NULL};
- SDL_Surface *compteur[nombreImage]={NULL},*compteurActuelle=NULL,*Fond=NULL;
- SDL_Rect position;
- SDL_Event event;
- position.x=0;
- position.y=0;
- Fond=SDL_LoadBMP("D:\\projet codebolck\\animation\\fond.BMP" );
- for (i=0;i<nombreImage;i++)
- {
- sprintf(matrice,"D:\\projet codebolck\\animation\\image%d.BMP",i);
- compteur[i]=SDL_LoadBMP(matrice);/*on charge les 10 images*/
- }
- i=0;
- while (continu1)
- {
- SDL_WaitEvent(&event);
- switch (event.type)
- {
- case SDL_QUIT:
- continu1=0;
- break;
- case SDL_KEYDOWN:
- switch (event.key.keysym.sym)
- {
- case SDLK_1:
- i++;/*on fais défilé les images les images */
- break;
- }
- break;
- }
- compteurActuelle=compteur[i];
- SDL_FillRect(ecran,NULL,SDL_MapRGB((*ecran).format,255,255,255));
- SDL_BlitSurface(Fond,NULL,ecran,&position);
- SDL_BlitSurface(compteurActuelle,NULL,ecran,&position);
- SDL_Flip(ecran);
- }
- SDL_FreeSurface(Fond);
- SDL_FreeSurface(compteurActuelle);
- for (i=0;i<nombreImage;i++)
- {
- SDL_FreeSurface(compteur[i]);
- }
- }
|
main.h
Code :
- #ifndef MAIN_H_INCLUDED
- #define MAIN_H_INCLUDED
- #define TAILLE_BLOC 50
- #define NB_BLOC_LARGEUR 10
- #define NB_BLOC_LONGEUR 12
- #define LONGEUR_FENETRE NB_BLOC_LONGEUR*TAILLE_BLOC
- #define LARGEUR_FENETRE NB_BLOC_LARGEUR*TAILLE_BLOC
- #endif
|
Message édité par relais le 07-02-2010 à 20:57:36
|