Forum de la communauté SFML

Aide => Système => Discussion démarrée par: syapk le Juillet 15, 2020, 03:35:09 am

Titre: [RESOLU] faire une "pause" avec la même touche clavier.
Posté par: syapk 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();
     }
Titre: Re: faire une "pause" avec la même touche clavier.
Posté par: G. 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

Titre: Re: faire une "pause" avec la même touche clavier.
Posté par: syapk 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;
             }
        }
 
Titre: Re: faire une "pause" avec la même touche clavier.
Posté par: G. 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
Titre: Re: [RESOLU] faire une "pause" avec la même touche clavier.
Posté par: Laurent 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é.
Titre: Re: [RESOLU] faire une "pause" avec la même touche clavier.
Posté par: syapk 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 .