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

Auteur Sujet: [RESOLU] faire une "pause" avec la même touche clavier.  (Lu 4157 fois)

0 Membres et 1 Invité sur ce sujet

syapk

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
    • E-mail
[RESOLU] faire une "pause" avec la même touche clavier.
« le: Juillet 15, 2020, 03:35:09 am »
Bonjour
merci pour cette superbe bibliothèque Laurent & co !

voici mon pb:
Dans la boucle principale je rentre dans pollevent puis "if" wait event, afin d'effectuer la pause.
tout fonctionne bien avec la touche "p" pour pause puis touche "m" pour depause.
mais bien sur je voudrais avoir la meme touche "p" pour pause/depause, mais ca ne pause pas...
merci pour votre aide
ps: une histoire de buffer..?!..

    while (app.isOpen())
    {
        while (app.pollEvent(event))
        {
            if (event.key.code == sf::Keyboard:: P)
            {
                while(app.waitEvent(event))
                  //if(event.key.code == sf::Keyboard:: P)break;
                    if(event.key.code == sf::Keyboard:: M)break;
            }
        }
     app.display();
     }
« Modifié: Juillet 16, 2020, 12:09:35 am par syapk »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re: faire une "pause" avec la même touche clavier.
« Réponse #1 le: Juillet 15, 2020, 02:47:48 pm »
Il faut vraiment vérifier le type de l'évènement avant d'en utiliser ses données.
https://www.sfml-dev.org/tutorials/2.5/window-events-fr.php#les-cevcinements-keypressed-et-keyreleased


syapk

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
    • E-mail
Re: faire une "pause" avec la même touche clavier.
« Réponse #2 le: Juillet 16, 2020, 12:04:50 am »
Je comprends pas ta reponse "G." car le programme compile sans erreur donc pas d'erreur a ce niveau la.

en tout cas résolu car il suffisait de verifier non pas 1 mais 2 condition dans le if, la touche P && keyPressed.

  while (app.pollEvent(event))
        {

            if (event.key.code == sf::Keyboard:: P &&
                    event.type == sf::Event::KeyPressed)
            {

                while(app.waitEvent(event))
                    if(event.key.code == sf::Keyboard:: P &&
                            event.type == sf::Event::KeyPressed)
                        break;
             }
        }
 
« Modifié: Juillet 16, 2020, 12:08:25 am par syapk »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re: faire une "pause" avec la même touche clavier.
« Réponse #3 le: Juillet 16, 2020, 03:00:22 am »
event.type == sf::Event::KeyPressed
Ben ouais c'est ce que j'ai dit :p
Citer
vérifier le type de l'évènement
« Modifié: Juillet 16, 2020, 05:03:08 am par G. »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: [RESOLU] faire une "pause" avec la même touche clavier.
« Réponse #4 le: Juillet 16, 2020, 06:30:51 am »
Et c'est mieux de le vérifier avant d'accéder aux données de l'évènement (ie. inverse l'ordre de tes conditions dans les if), sinon tu as en théorie un comportement indéterminé, car tu accèdes potentiellement à un membre d'union qui n'est pas initialisé.
Laurent Gomila - SFML developer

syapk

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
    • E-mail
Re: [RESOLU] faire une "pause" avec la même touche clavier.
« Réponse #5 le: Juillet 16, 2020, 10:13:29 am »
ok enfin compris ce que tu daigné de me faire comprendre :o

merci  ;D



j'ai commencé la programmation il ya 7mois: C::B, C,C++, la compilation, linker, GLSL,SFML,Boost,etc.. alors tout se mélange mais ca s'éclaircis de plus en plus grace a vous .