Forum de la communauté SFML

Aide => Général => Discussion démarrée par: cChaD le Septembre 06, 2012, 12:50:06 pm

Titre: Déplacement par case
Posté par: cChaD le Septembre 06, 2012, 12:50:06 pm
Bonjour, je reprend le développement de mon bomberman et je reprend la où j'avais echouer à savoir le déplacement par case.

J'ai codé ceci pour, que lorsque la frame == 0 on puisse déplacer le joueur, et quand la frame == 7 on peut tester l'appuie des touches, sauf que la condition _animation->estLancer(), ne s'effectue pas au debut de chaque annimation.

Voici le code:

// Met à jour le joueur
void Player::update(Event &event)
{
    if(!animer)
    {
        if(Keyboard::isKeyPressed(Keyboard::Down))
        {
            _position = BAS;
            bouger = true;
            animer = true;
        }

        if(Keyboard::isKeyPressed(Keyboard::Up))
        {
            _position = HAUT;
            bouger = true;
            animer = true;
        }

        if(Keyboard::isKeyPressed(Keyboard::Left))
        {
            _position = GAUCHE;
            bouger = true;
            animer = true;
        }

        if(Keyboard::isKeyPressed(Keyboard::Right))
        {
            _position = DROITE;
            bouger = true;
            animer = true;
        }

        if(!bouger) {_animation->arreter();}
        else {_animation->jouer();}
    }
   else
   {
       if(_position == BAS)
       {
            _animation->setAnimation(0);
            if(_animation->estLancer()) {
                _caseActuel += casesX-1;
            }

            else if(_animation->estFini()) {
                animer = false;
                bouger = false;
            }
        }
    }
}
 

Merci d'avance.
Titre: Re : Déplacement par case
Posté par: Orwel le Septembre 06, 2012, 07:42:13 pm
Je pense que l'erreur vient de :

_animation->setAnimation(0);

Je pense que ta méthode reset et met en pause ton annimation.

            _animation->setAnimation(0);
            if(_animation->estLancer()) {

Donc tu pauses l’animation, juste avant le test. Après, on peut difficilement faire mieux avec si peut d'information. Peut-être que le hearder pourra nous aider à t'aider  ;D

Par contre le francoglish   >:(
Titre: Re : Déplacement par case
Posté par: cChaD le Septembre 06, 2012, 10:37:02 pm
Bon, je pense que je vais tous refaire...

Pouvez-vous me conseillez la meilleur façon de faire du déplacement case par case.


Cordialement.
Titre: Re : Déplacement par case
Posté par: cChaD le Septembre 07, 2012, 06:45:48 pm
Personne ?
Titre: Re : Déplacement par case
Posté par: Orwel le Septembre 08, 2012, 07:51:12 am
Il nous faudrait plus d'information sur ton projet. Car en fonction de la taille, peut-être que tu pourra déléguer certaine fonctionnalité à d'autre module.
Titre: Re : Déplacement par case
Posté par: cChaD le Septembre 08, 2012, 11:29:04 am
Voici les classes du projet:

- Screen.h
- Application.h
- configuration.h
- TitleScren.h
- Case.h
- Map.h
- Player.h
- Animation.h

J'ai repris la technique de la doc pour gérer mes différents screens.
Titre: Re : Déplacement par case
Posté par: Orwel le Septembre 08, 2012, 05:41:01 pm
Si tu as des difficltés pour ton projet, peut-être qu'il n'est pas de ton niveau. Quelque chose de plus simple pour débuter peut-être une solution.

On sait uniquement qu'il y a des déplacements par case. Quelle type de jeu désire-tu réaliser???

Voici quelles que erreur de conception. La fonction Update prend un sf::Event. Pourquoi???

Donc la fonction Update est appelé uniquement si j'appuie sur une touche( c'est réductif). Hors ta fonction s'occupe de gérer l'animation, et une animation peut se finir sans l'appuie d'une touche. Il faut donc 2 fonctions, une pour traiter les événements, une pour l'évolution de Player.

Aussi un conseil, ce n'est pas à la classe player de gérer les évènements. Mais à Application, qui appellera une fonction, par exemple Player::setAction(const ActionPlayer&)

Titre: Re : Déplacement par case
Posté par: cChaD le Septembre 09, 2012, 12:56:59 am
Je pense bien aussi, mais hélas je n'ai sait pas par quoi commencer pour m’entraîner à coder que sa soit SFML ou C++, mais je préfère m'exercer avec la sfml.