-
Bonjour
Je suis en train de créer un jeu avec la SFMl je veut que le joueur rentre un code a un moment. seulement, voilà, quand j'utilise la fonction :
while (fill)
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
{
//mon code
}
}
le programme considère que la touchea est appyée plein de fois ( ce qui est logique car le logiciel test a chaque tics). donc comment faire en sorte que le programme attende que la touche soit relâchée ? Merci
-
https://www.sfml-dev.org/tutorials/2.4/window-events-fr.php#les-cevcinements-keypressed-et-keyreleased
-
j'ai suivi ce tutoriel, mais lorsque je rajoute
while (fill)
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
{
//mon code
while (sf::Event::KeyPressed)
{
}
}
}
,
-
désolé du double post
donc quand je rajoute ce code, le programme se bloque avant même que je fasse quelque chose
-
j'ai suivi ce tutoriel
Pas sûr... Ton "code" n'a vraiment aucun sens, et ne correspond en rien à ce qui est décrit dans le tutoriel, ni dans aucune autre source (documentation, wiki, exemples, livres, ...).
désolé du double post
Tu as la possibiltié d'éditer un post plutôt que de reposter.
-
Salut !
Pour détecter lorsqu'une touche est relâchée il faut se placer au niveau de la boucle événementielle et utiliser l'event KeyReleased. Plus concrètement ça devrait te donner quelque chose de similaire à ceci :
//...
sf::Event event;
while(window.isOpen()){
while(window.pollEvent(event)){
//Si la touche A de ton clavier est relâchée alors on rentre dans la condition
if(event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::A)
std::cout << "Detection du relachement de la touche A avec la SFML !" << std::endl;
}
}
//...
Y a pas plus simple :)
Essayes de regarder en profondeur le lien que Laurent t'a fourni, tu y trouveras tout ce dont tu as besoin concernant les événements ;)
Cordialement G