Bonjour à tous,
Je suis actuellement confronter à un problème que je ne comprend pas. Mon but étant ici de pouvoir mettre en pause une animation toute simple (une image qui traverse la fenêtre en diagonale).

Voici le code de la boucle principale (où se situe le prob à mon avis) :
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
 while(continuer)
    {
        SDL_PollEvent(&event) ;
        switch(event.type)
        {
            case SDL_QUIT :
                continuer = 0 ;
            break ;
            case SDL_KEYDOWN :
                if(event.key.keysym.sym == SDLK_p) 
                {    
                    switch(enPause) 
                    {
                        case 0 :
                            enPause = 1 ;
                        break ;
                        case 1 :
                            enPause = 0 ;
                        break ;
                    }
                }    
            break ;
        }
 
        if(!enPause)
        {
            if((positionZozor.y + zozor->h) >= 480)
                versHaut = 1 ;
            else if(positionZozor.y <= 0)
                versHaut = 0 ;                  
 
            tempsAct = SDL_GetTicks() ;
            if(tempsAct - tempsPrec > 20)
            {
                tempsPrec = tempsAct ;                
                if(versHaut)
                {
                    positionZozor.x++ ;
                    positionZozor.y-- ;
                }
                else
                {
                    positionZozor.x-- ;
                    positionZozor.y++ ;
                }
            }
            else
                SDL_Delay(20-(tempsAct-tempsPrec)) ;
        }
 
            SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,255,255,255)) ;
            SDL_BlitSurface(zozor,NULL,ecran,&positionZozor) ;
            SDL_Flip(ecran) ;
    }
Le problème est que la pause marche aléatoirement, en gros, le booléen en pause semble changer de valeur avant d'arriver à (!enPause).
En gros j'appuie sur "p", défois le prog ce met en pause et défois pas, pareil pour enlever la pause.

Bon je sais que c'est plutot confus comme explication alors n'hésitez pas à me demander des précisions.

Merci d'avance pour vos réponses