Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - pulk66

Pages: [1]
1
Général / SFML rect et position
« le: Août 31, 2020, 03:29:53 pm »
Salut a tous alors voila, j'essaye de créer un bouton grâce a un rect et aux positions de la souris / rect. le seul problème que j'ai et que je ne comprend pas c'est que cela ne marche que pour un plein écran et non pour une petite fenêtre.

Voici le code :
#include <iostream>
#include <SFML/Graphics.hpp>
#include <string>

sf::Texture get_texture(std::string link) {
    sf::Texture background_t;
    if (!background_t.loadFromFile(link)) {
        std::cout << "loading image problem\n";
    }
    return (background_t);
}

int main(void)
{
    sf::RenderWindow game(sf::VideoMode(sf::VideoMode::getDesktopMode().width, sf::VideoMode::getDesktopMode().height), "SFML works!");
    int s_width = game.getSize().x;
    int s_height = game.getSize().y;

    /*
    ** ENTERING SCREEN, BACKGROUND PICTURE.
    */

    sf::Texture background_t = get_texture("../sprite/background.png");
    sf::Sprite background;
    background.setTexture(background_t);
    background.setTextureRect(sf::IntRect(0, 0, s_width, s_height));

    /*
    ** ENTERING SCREEN, ENTERING TEXT.
    */

    sf::Font entering_font;
    if (!entering_font.loadFromFile("../font/arial.ttf")) {
        std::cout << "loading font problem\n";
    }
    sf::Text entering_text;
    entering_text.setFont(entering_font);
    entering_text.setString("CLICK HERE TO CONTINUE");
    entering_text.setCharacterSize(72);
    entering_text.setFillColor(sf::Color::Red);
    int text_w = entering_text.getLocalBounds().width;
    int text_h = entering_text.getLocalBounds().height;
    entering_text.setPosition(s_width / 2 - text_w / 2, s_height / 2 - text_h / 2);
    sf::RectangleShape r(sf::Vector2f(entering_text.getLocalBounds().width, entering_text.getLocalBounds().height));
    r.setPosition(entering_text.getPosition().x, entering_text.getPosition().y);

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

        /*
        ** VERIFY MOUSE POSITION IN ENTERING TEXT
        */

        sf::Vector2i mouse_p = sf::Mouse::getPosition(game);
        std::cout << "mpx : " << mouse_p.x << " mpy : " << mouse_p.y << " tpx : " << entering_text.getPosition().x << " tpy : " << entering_text.getPosition().y << " tw : " << entering_text.getLocalBounds().width << " th : " << entering_text.getLocalBounds().height << "\n";
        if (mouse_p.x >= entering_text.getPosition().x && mouse_p.x <= entering_text.getPosition().x + entering_text.getLocalBounds().width \
        && mouse_p.y >= entering_text.getPosition().y && mouse_p.y <= entering_text.getPosition().y + entering_text.getLocalBounds().height) {
            entering_text.setFillColor(sf::Color::Green);
        } else {
            entering_text.setFillColor(sf::Color::Red);
        }

        game.clear();
        game.draw(background);
        game.draw(r);
        game.draw(entering_text);
        game.display();
    }
    return 0;
}
 

Merci de votre réponse

2
Général / le programme SFML de test ne compile pas
« le: Juillet 27, 2019, 11:46:01 pm »
Bonjour, je suis un nouveau programmeur C++ et j'essai d'installer la bibliothèque SFML en suivant le tuto du site. Le problème c'est quand j'essai de compiler le code donner pour voir si tout marche :
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

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

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}
 

et quand je le compile grace a
g++ -c main.cpp
rien ne se passe, j'ai donc essayer la méthode que j'utilise d'habitude qui est :
g++ -o main main.cpp
et ça ne creer pas l'executable en me mettant cette erreur :
/usr/bin/ld : /tmp/ccUjFxEG.o : dans la fonction « main » :
main.cpp:(.text+0x75) : référence indéfinie vers « sf::String::String(char const*, std::locale const&) »
/usr/bin/ld : main.cpp:(.text+0x93) : référence indéfinie vers « sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int) »
/usr/bin/ld : main.cpp:(.text+0xc6) : référence indéfinie vers « sf::RenderWindow::RenderWindow(sf::VideoMode, sf::String const&, unsigned int, sf::ContextSettings const&) »
/usr/bin/ld : main.cpp:(.text+0x100) : référence indéfinie vers « sf::CircleShape::CircleShape(float, unsigned long) »
/usr/bin/ld : main.cpp:(.text+0x10e) : référence indéfinie vers « sf::Color::Green »
/usr/bin/ld : main.cpp:(.text+0x116) : référence indéfinie vers « sf::Shape::setFillColor(sf::Color const&) »
/usr/bin/ld : main.cpp:(.text+0x125) : référence indéfinie vers « sf::Window::isOpen() const »
/usr/bin/ld : main.cpp:(.text+0x146) : référence indéfinie vers « sf::Window::pollEvent(sf::Event&) »
/usr/bin/ld : main.cpp:(.text+0x163) : référence indéfinie vers « sf::Window::close() »
/usr/bin/ld : main.cpp:(.text+0x189) : référence indéfinie vers « sf::Color::Color(unsigned char, unsigned char, unsigned char, unsigned char) »
/usr/bin/ld : main.cpp:(.text+0x1a6) : référence indéfinie vers « sf::RenderTarget::clear(sf::Color const&) »
/usr/bin/ld : main.cpp:(.text+0x1bf) : référence indéfinie vers « sf::RenderStates::Default »
/usr/bin/ld : main.cpp:(.text+0x1ca) : référence indéfinie vers « sf::RenderTarget::draw(sf::Drawable const&, sf::RenderStates const&) »
/usr/bin/ld : main.cpp:(.text+0x1d9) : référence indéfinie vers « sf::Window::display() »
/usr/bin/ld : main.cpp:(.text+0x201) : référence indéfinie vers « sf::RenderWindow::~RenderWindow() »
/usr/bin/ld : main.cpp:(.text+0x26b) : référence indéfinie vers « sf::RenderWindow::~RenderWindow() »
/usr/bin/ld : /tmp/ccUjFxEG.o : dans la fonction « sf::CircleShape::~CircleShape() » :
main.cpp:(.text._ZN2sf11CircleShapeD2Ev[_ZN2sf11CircleShapeD5Ev]+0xf) : référence indéfinie vers « vtable for sf::CircleShape »
/usr/bin/ld : main.cpp:(.text._ZN2sf11CircleShapeD2Ev[_ZN2sf11CircleShapeD5Ev]+0x1d) : référence indéfinie vers « vtable for sf::CircleShape »
/usr/bin/ld : main.cpp:(.text._ZN2sf11CircleShapeD2Ev[_ZN2sf11CircleShapeD5Ev]+0x31) : référence indéfinie vers « sf::Shape::~Shape() »
collect2: error: ld returned 1 exit status

je n'arrive pas a la résoudre, pouvez vous m'aider ?

Pages: [1]
anything