Bonsoir.
Je souhaite gérer des évènements lorsque l'utilisateur appuie sur certaines touches. Par exemple la pause. Or, lorsque je tape sur la lettre p, la pause se fait, mais lorsque je rappuie sur p (géré dans la fonction pause()), l'exécution reprend pour un tour, puis se remet en pause.
J'ai un problème similaire avec les évènements d'accélération et décélaration de la vitesse de l'application. J'ai dû passer à coté de quelque chose.
Voici le code :
Merci d'avance.
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 == true) { SDL_PollEvent(&event); //récupération d"un évènement éventuel switch(event.type) { case SDL_QUIT: //si on a cliqué sur quitter continuer = false; //on sort de la boucle while break; case SDL_KEYUP: //si on a tapé sur une touche switch (event.key.keysym.sym) { case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */ continuer = false; break; case SDLK_a: vitesse -=100; break; case SDLK_d: vitesse +=100; break; case SDLK_p: //appui sur la touche p provoque la pause cerr << "appui sur p" << endl; pause(); cerr << "sortie de pause" << endl; break; } break; }Enfin, voici le contenu de stderr.txt (les entrées et sorties dans pause() fonctionnent bien:
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 void pause() { cerr << "Entree en pause" << endl; bool continuer = true; SDL_Event event; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT : continuer = false; case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_p: continuer = false; //on sort de la boucle cerr << "appui sur p dans la pause" << endl; break; } } } }
appui sur p
Entree en pause
appui sur p dans la pause
sortie de pause
appui sur p
Entree en pause
appui sur p dans la pause
sortie de pause
appui sur p
Entree en pause
appui sur p dans la pause
sortie de pause
appui sur p
Entree en pause
sortie de pause
Partager