salut

je voudrais faire défiler 10 images à la suite avec la SDL mais après le menu l'ecran reste blanc puis disparais aux lieu de retourné aux menu

main.C
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#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=0,i=0;
    int tempsPrecedent = 0, tempsActuel = 0;
    char matrice[15]={NULL};
    SDL_Surface *compteur[nombreImage]={NULL},*compteurActuelle=NULL;
    SDL_Rect position;
    position.x=0;
    position.y=0;
 
    for (i=0;i<nombreImage;i++)/*une boucle pour affecter les images aux surface */
    {
        sprintf(matrice,"image%d.BMP",i);
        compteur[i]=SDL_LoadBMP(matrice);
 
    }
   i=0;
 
    while (continu1<nombreImage)/*on sort de la boucle while lorsque la variable continu1 est suppérieur aux nombre d'image*/
    {
        tempsActuel = SDL_GetTicks();
        if (tempsActuel - tempsPrecedent > 3000)/*tout les 3 second on increment une image */
        {
            continu1++;
            compteurActuelle=compteur[i];
            SDL_FillRect(ecran,NULL,SDL_MapRGB((*ecran).format,255,255,255));
            SDL_BlitSurface(compteurActuelle,NULL,ecran,&position);
            i++;
            tempsPrecedent = tempsActuel;
            SDL_Flip(ecran);
 
        }
        for (i= 0 ; i< nombreImage ; i++)/*on libère la mémoire*/
 
        {
            SDL_FreeSurface(compteur[i]);
        }
    }
}
main.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
#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