[C/C++] Problème d'iterateur

Le côté programmation du développement d'un jeu vidéo.

Problème d'iterateur

Messagepar bombseb » 21 Juil 2014, 18:55

Bonjour,

J'ai une classe dans laquelle j'ai plein de std::vector. J'aimerais pouvoir aller à l'élément suivant de n'importe lequel de ces vectors (et revenir au premier lorsque le dernier est atteint). Je fait ça pour gérer l'animation d'un personnage à l'écran.
Mais la classe Vector ne propose pas de methode .next(). Alors je pensait utiliser un iterator pour faire ça, mais ça m'obligerais à créer un iterator pour chaque vector.
Est-ce qu'il y aurait une autre solution svp ?

Merci d'avance pour votre aide...

Ma classe :

Code: Tout sélectionner
class Personnage
{
    public:

        Personnage(sf::Vector2f const& position);
        void move(sf::Vector2f const & direction);

    private:

        sf::Texture m_SpriteSheet;

        sf::Vector2f m_Position;
        sf::Vector2f m_Direction;

        std::vector<sf::Sprite> m_Walk_Up;
        std::vector<sf::Sprite> m_Walk_UpRight;
        std::vector<sf::Sprite> m_Walk_Right;
        std::vector<sf::Sprite> m_Walk_DownRight;
        std::vector<sf::Sprite> m_Walk_Down;
        std::vector<sf::Sprite> m_Walk_DownLeft;
        std::vector<sf::Sprite> m_Walk_Left;
        std::vector<sf::Sprite> m_Walk_UpLeft;
        std::vector<sf::Sprite> m_Idle;

        bool setDirection (sf::Vector2f const & newDirec);
        void defineSprite (std::vector<sf::Sprite> &vec, sf::IntRect const& rect);
};
bombseb
Hello World, I'm new !
 
Messages: 9
Inscription: 25 Aoû 2005, 11:52

Re: Problème d'iterateur

Messagepar Keph » 22 Juil 2014, 15:31

bombseb a écrit:Alors je pensait utiliser un iterator pour faire ça, mais ça m'obligerais à créer un iterator pour chaque vector.


Et alors ?
Avatar de l’utilisateur
Keph
Hello World, I'm new !
 
Messages: 214
Inscription: 26 Avr 2005, 22:17
Localisation: Angers

Re: Problème d'iterateur

Messagepar teto » 22 Juil 2014, 16:08

Boost propose un buffer cyclique: cette conversation peut t'intéresser.

Si c'est la verbosité des itérateurs qui t'embête, tu peux regarder du côté du nouveaux standard C++11 qui est bien plus lisible et en gros ressemble à :
Code: Tout sélectionner
for ( auto sprite : m_Walk_Up)
{
....
}
Avatar de l’utilisateur
teto
 
Messages: 1168
Inscription: 26 Juil 2005, 19:02
Localisation: /home/Paris

Re: Problème d'iterateur

Messagepar bombseb » 23 Juil 2014, 18:10

Merci pour vos réponses,

J'ai finalement choisi de créer une classe qui englobe un vector et un index...
bombseb
Hello World, I'm new !
 
Messages: 9
Inscription: 25 Aoû 2005, 11:52


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 invités

cron