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

Auteur Sujet: [RESOLU] Un simple bouton qui marche pas  (Lu 1588 fois)

0 Membres et 1 Invité sur ce sujet

toto012

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
[RESOLU] Un simple bouton qui marche pas
« le: Septembre 25, 2013, 09:36:52 pm »
Bonjour,

Je cherchais un moyen de faire un bouton et voila mon code (qui ne marche pas):
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <cstdlib>
#include <iostream>.

#define APP_WIDTH 800
#define APP_HEIGHT 600

using namespace sf;
using namespace std;

int main()
{
    RenderWindow app(sf::VideoMode(APP_WIDTH, APP_HEIGHT), "Ninja - Initialisation");
    app.setFramerateLimit(60);

    RectangleShape bouton(Vector2f(100,100));
    bouton.setPosition(Vector2f(200,200));

    while (app.isOpen())
    {
        sf::Event event;
        while (app.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                app.close();
        }

        if(Mouse::isButtonPressed(Mouse::Right))
        {
            if(Mouse::getPosition().x >= bouton.getPosition().x && Mouse::getPosition().x <= bouton.getPosition().x + bouton.getGlobalBounds().width && Mouse::getPosition().y >= bouton.getPosition().y && Mouse::getPosition().y <= bouton.getPosition().y + bouton.getGlobalBounds().height)
            {
                cout << "clic bouton" << endl;
            }
        }

        app.clear();

        app.draw(bouton);

        app.display();

    }

    return 0;
}

 

Quand je clic bah ya rien qui réagit ...

Merci d'avance
« Modifié: Septembre 26, 2013, 01:55:27 pm par toto012 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Un simple bouton qui marche pas
« Réponse #1 le: Septembre 25, 2013, 10:23:14 pm »
Mouse::getPosition() renvoie la position de la souris par rapport au bureau, pas par rapport à la fenêtre.

Ensuite, il y a une différence fondamentale entre les coordonnées fenêtre et les coordonnées "monde". Ce sont deux espaces complètement différents que tu ne peux pas comparer directement ; là ça marcherait car la vue par défaut fait que les deux systèmes de coordonnées sont identiques (tant que tu ne redimensionnes pas la fenêtre), mais écrire le code correct est une bonne habitude à prendre pour la suite.

Donc :

sf::Vector2f mouse = app.mapPixelToCoords(Mouse::getPosition(app));
if (bouton.getGlobalBounds().contains(mouse))
{
    cout << "clic" << endl;
}
Laurent Gomila - SFML developer

toto012

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Re : Un simple bouton qui marche pas
« Réponse #2 le: Septembre 26, 2013, 01:55:10 pm »
Merci ! :)