Движение объекта в SFML

Почему не двигается объект при нажатии клавиши? Я так понял, потому что уже отрисован один объект, и при движении уже отрисовывается другое его местоположение, но при этом старое остается, как это исправить?

#include <SFML/Graphics.hpp>

using namespace sf;

int main()
{

    ContextSettings settings;
    settings.antialiasingLevel = 8;

    // Объект, который, собственно, является главным окном приложения
    RenderWindow window(VideoMode(600, 600), "SFML Works!", Style::Default, settings);

    while (window.isOpen())
    {

        Event event;
        while (window.pollEvent(event))
        {

            if (event.type == Event::Closed)

                window.close();
        }
        
        window.clear(Color(250, 220, 100, 0));

        RectangleShape board(Vector2f(120.f, 15.f));
        
        board.move(240.f, 585.f);

        board.setFillColor(Color::Black);

        window.draw(board);

        if (Keyboard::isKeyPressed(Keyboard::Left)) {
            board.move(-3.f, 0.f);
            window.draw(board);

        }

        window.display();
    }

    return 0;
}

Ответы (1 шт):

Автор решения: kolyshek

Пожалуйста. Рабочий вариант. Если есть вопросы то спрашивай.) Хотя я немного опоздал с ответом...

int main()
{
    sf::ContextSettings settings;
    settings.antialiasingLevel = 8;

    // Объект, который, собственно, является главным окном приложения
    sf::RenderWindow window(sf::VideoMode(600, 600), "SFML Works!", sf::Style::Default, settings);

    sf::RectangleShape board(sf::Vector2f(120.f, 15.f));
    board.setFillColor(sf::Color::Black);
    board.setOrigin(sf::Vector2f(board.getSize().x / 2, board.getSize().y / 2));
    board.setPosition(sf::Vector2f(static_cast<float>(window.getSize().x / 2),
        static_cast<float>(window.getSize().y - 10.0f)));

    sf::Clock* clock = new sf::Clock;
    float dT;
    float speed = 300;

    while (window.isOpen())
    {
        dT = clock->restart().asSeconds();

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

            if (sf::Keyboard::isKeyPressed(sf::Keyboard::A) || sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
                board.move(-1.0f * dT * speed, 0.0f);
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::D) || sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Right))
                board.move(1.0f * dT * speed, 0.0f);
        }

        window.clear(sf::Color(250, 220, 100, 0));

        window.draw(board);

        window.display();
    }
}
→ Ссылка