Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problême SFML

    17 août 2017 à 14:11:45

    Bonjour,

    Depuis quelques mois je travaille sur un projet de jeu vidéo.

    Cependant après des heures et des heures de recherche je n'arrive n'arrive toujours pas à faire une zone cliquablee ou boutton.

    Ci-dessous le code du boutton.

     if (sf::Mouse::getPosition().x >= (sprite_perso.getPosition().x)
          &&sf::Mouse::getPosition().x < ((sprite_perso.getPosition().x)+ 417)//px entre le prochain point
          &&sf::Mouse::getPosition().y >= (sprite_perso.getPosition().y)
          &&sf::Mouse::getPosition().y < ((sprite_perso.getPosition().y)+ 73)//px entre le prochain point
          &&sf::Mouse::isButtonPressed(sf::Mouse::Left))
        {
            std::cout<< "Si ce message s'affiche je pleure de joie " <<std::endl;
        }

    Je vous remercie d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      17 août 2017 à 14:22:47

      Salut,

      Tu devrais utiliser le débogueur pour voir pourquoi ta condition n'est jamais vraie.

      • Partager sur Facebook
      • Partager sur Twitter
      J-1 avant demain
        17 août 2017 à 14:26:34

        Woly a écrit:

        Salut,

        Tu devrais utiliser le débogueur pour voir pourquoi ta condition n'est jamais vraie.


        Ca se compile, il n'y a aucune erreur.
        • Partager sur Facebook
        • Partager sur Twitter
          17 août 2017 à 14:55:24

          HyFlip a écrit:

          Woly a écrit:

          Salut,

          Tu devrais utiliser le débogueur pour voir pourquoi ta condition n'est jamais vraie.


          Ca se compile, il n'y a aucune erreur.


          Il n'a pas dit qu'il y avait une erreur ( le code peut etre compilable mais la condition fausse ). Revérifie ta condition.
          • Partager sur Facebook
          • Partager sur Twitter
            17 août 2017 à 14:58:19

            La compilation n'assure pas qu'il y ai pas d'erreur a l'exécution, ou que le programme fasse exactement ce que tu souhaite.

            Le débugger permet de contrôler un peut plus finement l'exécution du programme, et mettre des point d'arret sur les exceptions.

            Sinon quelques questions au pif qui pourrais etre l'origine du problème.

            Dernier point : évite les valeurs magique écrites en brut, définit des constantes pour leur donner un nom.

            -
            Edité par n!co69 17 août 2017 à 14:59:16

            • Partager sur Facebook
            • Partager sur Twitter
            "Tout devrait être rendu aussi simple que possible, mais pas plus." A.Einstein
              17 août 2017 à 15:26:30

              Mais sinon tu n'aurais pass un moyen de faire des bouttons ?

              • Partager sur Facebook
              • Partager sur Twitter
                17 août 2017 à 18:19:01

                utiliser une biblio fait pour les UI ( comme qt ) et non une biblio multimédia
                • Partager sur Facebook
                • Partager sur Twitter
                  17 août 2017 à 21:21:11

                  Si tu veut rester sur la sfml, tu as aussi TGUI.

                  https://en.sfml-dev.org/forums/index.php?topic=18901.0

                  Si tu veut te faire ton propre système d'UI ... bonne chance :)

                  • Partager sur Facebook
                  • Partager sur Twitter
                  "Tout devrait être rendu aussi simple que possible, mais pas plus." A.Einstein
                    17 août 2017 à 21:42:50

                    Indications :

                    La fonction Sprite:::getGlobalBounds retourne un FloatRect, le rectangle qui contient le sprite.

                    La fonction Mouse::getPosition(window) retourne un Vector2i, les coordonnées de la souris par rapport à une fenêtre.

                    La fonction Rect<float>(....) indique si un point est dans un rectangle.

                    Encore un effort de quelques minutes, et tu devrais arriver à les combiner pour écrire élégamment

                    si   on a cliqué sur un bouton
                      et la souris est dans le rectangle du sprite
                      alors {
                        ....
                    }


                    PS : un conseil de méthodologie

                    1. mets de coté ton programme

                    2. Repars de zero. Ecris un programme minimum qui affiche un sprite à l'écran. Un seul.

                    3. Essaie d'ajouter le code qui vérifie si on a cliqué sur le sprite (et fait  alors std::cout << "ok" << std::endl).

                    4. Quand ça marchera, reprends ton programme, et transpose ce que tu as fait.

                    Faire des essais en bidouillant sur un programme en construction dont on n'est absolument pas sur qu'il ne déconne pas par ailleurs, ça te fera perdre énormément de temps. Et souvent même, casser du code qui marchait, et que tu as accusé à tort d'être la cause de problèmes.

                    -
                    Edité par michelbillaud 17 août 2017 à 21:50:19

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Problême SFML

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown