Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: AzenoX le Juin 03, 2016, 09:32:03 pm

Titre: [Résolu] Multiples passages dans un test de clavier
Posté par: AzenoX le Juin 03, 2016, 09:32:03 pm
Bonjour,
Je suis en train de faire un petit jeu avec un ami et je me heurte à un problème:

#include <SFML/Graphics.hpp>
#include <stdlib.h>
#include <iostream>
#include <string>


using namespace sf;
using namespace std;

int times(0);

int main(){

    while (true){
        if(Keyboard::isKeyPressed(Keyboard::E)){
            cout<<times<<" - SFML !"<<endl;
            times++;
        }
    }


    return 0;
}
 

Lorsque j'écris cela, j'obtiens plus de 100 fois le message dans la console alors que je ne clique qu'une seule fois sur la touche E, c'est un problème qui me dérange assez pour mon jeu.
Si quelqu'un a la solution, je suis preneur :D
Titre: Re : Multiples passages dans un test de clavier
Posté par: G. le Juin 04, 2016, 12:51:17 am
sf::Keyboard::isKeyPressed te donne l'état d'une touche (enfoncée ou pas).
Donc ce qui compte ce n'est pas si t'as appuyé une fois dessus, mais si elle est enfoncée à chacun de tes tours de boucle. A moins d'enfoncer la touche que quelques microsecondes tu vas avoir plein de fois le message, logique.

Si tu fais un jeu j'imagine que ta vraie boucle c'est pas ça et que tu as une boucle d'évènement (http://www.sfml-dev.org/tutorials/2.3/window-events-fr.php) ? Si c'est le cas et que tu veux détecter une pression sur une touche utilise l'évènement KeyPressed (http://www.sfml-dev.org/tutorials/2.3/window-events-fr.php#les-cevcinements-keypressed-et-keyreleased) (ou KeyReleased).
Titre: Re : Multiples passages dans un test de clavier
Posté par: AzenoX le Juin 04, 2016, 01:35:11 pm
Merci ;)