Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Syntax Error le Juillet 07, 2012, 05:45:14 pm

Titre: [SFML 2] [résolu] mon sprite ne se déplace pas
Posté par: Syntax Error le Juillet 07, 2012, 05:45:14 pm
Bonjour,

mon problème est assez simple à comprendre, j'essaie tout simplement de bouger un sprite à l'aide des flèches du clavier.
Mais mon sprite ne se déplace pas.
Il bouge dans le sens où la position du sprite n'est pas la même si une des flèches est pressé, mais il ne continue pas sa route.
puis lorsque la touche est relâché, le sprite retourne à sa position de départ alors qu'il devrait resté sur sa dernière position. (c'est d'ailleurs pour moi une aberration, étant donné que je change sa position je ne vois pas par quel miracle mon sprite arrive à se remettre à sa position de départ)


Voilà pour l'explication de mon problème (j'espère avoir été clair)
Le code :

int main()
{
    sf::RenderWindow app(sf::VideoMode(800, 800, 32), "Jeu");
    app.setFramerateLimit(60);

    while (app.isOpen())
    {
        sf::Event Event;

        Pacman pacman("mspacman.jpg", app);

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

            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
            {app.close();}
        }

        pacman.fm_Deplacement(app);

        app.display();
        app.clear();
    }

    return 0;
}




Pacman::Pacman(std::string const persoTexture, sf::RenderWindow &app) : Personnage(persoTexture, app)
{
}

Personnage::Personnage(std::string const persoTexture, sf::RenderWindow &app)
{
    if(!vm_persoTexture.loadFromFile(persoTexture))
    {
        std::cout << "Erreur lors du chargement du personnage" << std::endl;
    }

    vm_persoSprite.setTexture(vm_persoTexture);
    vm_persoSprite.setScale(0.04,0.053333333);
    vm_persoSprite.setPosition(50, 50);
    app.draw(vm_persoSprite);
}




void Pacman::fm_Deplacement(sf::RenderWindow &app)
{
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))  {vm_persoSprite.move(-5, 0);}
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) {vm_persoSprite.move(5, 0);}
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))    {vm_persoSprite.move(0, -5);}
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))  {vm_persoSprite.move(0,  5);}

    app.draw(vm_persoSprite);
}



J'aurais aimé vous faire un code minimal reproduisant mon problème, mais malheureusement pour moi tout fonctionne à merveille si je ne fais pas de classe.. :/

En espérant que vous pourrez m'aider,
merci d'avance ;)
Titre: Re : [SFML 2] mon sprite ne se déplace pas
Posté par: G. le Juillet 07, 2012, 10:16:24 pm
Ce n'est pas une aberration, tu recrées ton Pacman à chaque tour de boucle ! Donc sa position est réinitialisée à la valeur donnée dans le constructeur.
Titre: Re : [SFML 2] mon sprite ne se déplace pas
Posté par: Syntax Error le Juillet 07, 2012, 10:26:30 pm
ah oui ..
effectivement ... ça va mieux maintenant :p

j'avais oublié que j'étais dans une boucle :O
Merci ;)