Bonjour !

J'ai un petit soucis avec mon jeu pour le déplacement de mon personnage. J'arrive à le faire bouger en diagonale lorsque 2 touches sont pressées mais le problème, c'est que le personnage s'arrête lorsque je relâche la deuxième touche. En gros voila ce qu'il se passe :

- J'appuis sur "flèche haut", le personnage va vers le haut.
- J'appuis sur "flèche droite" sans relâcher "flèche haut" -> le personnage se déplace en diagonale (en haut à droite)
- Je relâche "flèche droite" sans relâcher "flèche haut" - > le personnage s’arrête alors que flèche haut est toujours pressées.

Voici le code :

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
while (continuer)
{
        SDL_WaitEvent(&event);
        Uint8 *keystates = SDL_GetKeyState( NULL );
 
        if (keystates[ SDLK_UP ])
        {
            positionPerso.y--;
        }
 
        if (keystates[ SDLK_DOWN ])
        {
            positionPerso.y++;
        }
 
        if (keystates[ SDLK_RIGHT ])
        {
            positionPerso.x++;
        }
 
        if (keystates[ SDLK_LEFT ])
        {
            positionPerso.x--;
        }
 
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format,255 , 255, 255));
SDL_BlitSurface(Perso, NULL, ecran, &positionPerso);
SDL_Flip(ecran);
 
}
Je pense avoir identifié ce qui cloche, mais le problème c'est que je suis en train de m'arracher les cheveux pour savoir comment le contourner !

En gros, lorsque que je relâche la deuxième touche, il se rappelle pas pas que la première touche est toujours pressés. Et donc, ça bloque sur le WaitEvent.

Avez vous des idées pour m'aider à résoudre ce problèmes ?

Merci d'avance pour vos futures réponses !

Kerast