Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Résolu] Gestion des événements  (Lu 1532 fois)

0 Membres et 1 Invité sur ce sujet

MoonBreaker

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
[Résolu] Gestion des événements
« le: Mai 21, 2015, 05:32:28 pm »
Bonjour tout le monde,

je suis en train de coder un jeu avec la SFML et j'ai quelques problèmes au niveau de la gestion des événements.

Je suis sur le menu de mon jeu, j'ai donc quelques boutons et en cliquant sur ces boutons je vais sur d'autres "écrans".
Chaque écran a sa propre gestion du clavier et de la souris (par exemple la touche 'A' sur l'écran 1 ne fait pas forcément la même action sur l'écran 2) et mon souci est que je n'arrive pas à "cloisonner" les événements.

Je m'explique :
je suis sur le menu avec la touche "Echap" pour quitter, je clique sur le bouton paramètres, la touche echap sert aussi à quitter cet écran (et donc revenir sur le menu principal). Pour résumer :

menu principal => pramètres

Ici je clique sur echap, je quitte paramètres (ça c'est bon) mais je quitte aussi le menu principal (et donc le jeu) ! Car si je comprends bien ma sf::RenderWindow à une liste d'event et elle n'est pas "flush" donc quand je sort de paramètres, la touche active est encore echap et à l'appel de ma gestion du clavier du menu principal ben je rentre dans la condition de la touche echap.

Si vous avez des conseil pour m'aider à bien gérer les événements et comment flush la pile d'événements.

J'espere avoir été clair !

Merci !!

EDIT :
Si vous voulez j'ai un dépot git du projet  (https://github.com/MoonBreaker/Ninjario)
Vous pouvez voir la gestion des bouton, actions dans src/Menu.cpp et src/MenuParametres.cpp dans les fonctions keyboardEvent

Je suis novice dans la création de jeu, je fais celui la pour m'entrainer justement donc c'est peut etre pas super bien structuré !
« Modifié: Mai 21, 2015, 07:17:07 pm par MoonBreaker »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Gestion des événements
« Réponse #1 le: Mai 21, 2015, 06:56:04 pm »
Quand tu veux observer une action ponctuelle "la touche x a été appuyée" ou "la touche x a été relâchée", plutôt que "la touche x est enfoncée", utilise les évènements KeyPressed et KeyReleased.

Le sf::Keyboard::isKeyPressed c'est bien pour les actions continues comme un personnage qui se déplace, mais pour une action ponctuelle c'est mieux d'utiliser les évènements.
Evidemment je généralise grossièrement c'est à relativiser avec ce que tu veux faire, mais appuyer sur échap pour ouvrir un menu c'est typiquement un évènement.

MoonBreaker

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re : Gestion des événements
« Réponse #2 le: Mai 21, 2015, 07:16:34 pm »
Oh merci G. !!! Je suis vraiment bête de ne pas y avoir pensé !!