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

Auteur Sujet: [SFML 2] [résolu] mon sprite ne se déplace pas  (Lu 2655 fois)

0 Membres et 1 Invité sur ce sujet

Syntax Error

  • Newbie
  • *
  • Messages: 40
    • Voir le profil
[SFML 2] [résolu] mon sprite ne se déplace pas
« 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 ;)
« Modifié: Juillet 07, 2012, 10:37:29 pm par Syntax Error »

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : [SFML 2] mon sprite ne se déplace pas
« Réponse #1 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.

Syntax Error

  • Newbie
  • *
  • Messages: 40
    • Voir le profil
Re : [SFML 2] mon sprite ne se déplace pas
« Réponse #2 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 ;)