IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

mini rpg c/c++


Sujet :

C++

  1. #81
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par devdeb91 Voir le message
    j'en déduirai que étant juste un couple de valeur il sont tout a fait apte a etre utiliser comme coordonnées donc le déplacement se faisant a l'aide de coordonnées ceci convient totalement
    Excellente déduction, mister Watson
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  2. #82
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    Citation Envoyé par Iradrille Voir le message
    Hehe, penses tout de même à faire un typedef pour savoir que cela représente un déplacement et non une position.
    typedef vraiment obliger ou pas ? et oui je suis du genre a ne pas les utiliser je l'avoue

  3. #83
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par devdeb91 Voir le message
    typedef vraiment obliger ou pas ? et oui je suis du genre a ne pas les utiliser je l'avoue
    Oui et non.
    Tu n'auras pas d'erreurs de compilation si tu n'en utilises pas.
    Mais d'un point de vu logique c'est une erreur (ce qui rend le code plus dur à relire).

    C'est tout de même très conseillé

  4. #84
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    bon bah alors je vais essayer de coder tout ça alors pour que le changement de map et le déplacement se fasse bien et une fois cette partie achevée je reviendrai poster le code source pour que vous puissiez voir si j'ai été bonne elève merci a vous

  5. #85
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Iradrille Voir le message
    Oui et non.
    Tu n'auras pas d'erreurs de compilation si tu n'en utilises pas.
    Mais d'un point de vu logique c'est une erreur (ce qui rend le code plus dur à relire).

    C'est tout de même très conseillé
    Absolument pas...

    si tu as une fonction moveTo(Position const & newPosition), quel besoin as tu de savoir que c'est un déplacement c'est indiqué dans le nom de la fonction

    Par contre, il peut etre utile d'avoir une structure qui représente un déplacement (relatif à la position actuelle), mais je ne suis même pas sur que ce soit indispensable dans le cas présent (ce serait plutôt utile dans le cadre d'un jeu dans lequel les éléments peuvent se déplacer de plusieurs cases à la fois (comme les échecs, par exemple )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #86
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Ha, je voyais ça différemment.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef Position Deplacement;
     
    Deplacement d(5, 0); // représente un déplacement de 5 cases à droite
    player.move(d);
    Mais effectivement, si on set juste la nouvelle position, on parle toujours de position et aucun typedef n'est utile.

    Question de point de vue je suppose.

  7. #87
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Iradrille Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef Position Deplacement;
     
    Deplacement d(5, 0); // réprésente un déplacement de 5 cases à droite
    player.move(d);
    Mais effectivement, si on set juste la nouvelle position, on parle toujours de position et aucun typedef n'est utile.

    Question de point de vue je suppose.
    En effet, mais, l'un dans l'autre, on peut de toutes manières se dire que hors cas particulier d'une porte ou d'un télé-porteur, tout ne se déplace que d'une case à la fois dans un rpg.

    Une fonction move pourrait donc très bien utiliser une direction (en fait une valeur énumérée représentant la direction dans laquelle aller et permettant d'identifier la nouvelle position) de manière bien plus efficace que s'il fallait utiliser une notion de distance relative en abscisse et en ordonnée

    Je verrais sans doute quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    enum Direction
    {
       north,
       northWest,
       west,
       southWest,
       south,
       southEast,
       east,
       northEast
    };
     
    class Gamer
    {
        public:
            int x() const{return position_.x();}
            int y() const{return position.y();}
            void move(Direction d)
            {
               switch(d)
               {
                   case north:
                       position_=Position(x(),y()+1);
                       break;
                   case northWest:
                       position_=Position(x()-1,y()+1);
                       break;
                   case west:
                       position_=Position(x()-1,y());
                       break;
                   case southWest:
                       position_=Position(x()-1,y()-1);
                       break;
                   case south:
                       position_=Position(x(),y()-1);
                       break;
                   case southEast:
                       position_=Position(x()+1,y()-1);
                       break;
                   case east:
                       position_=Position(x()+1,y());
                       break;
                   case northEast:
                       position_=Position(x()+1,y()+1);
                       break;
               }
            }
             /* tout le reste */
        private:
            Position position_;
    };
    De cette manière, la position reste ce qu'elle est sensée être: une donnée qui ne sert qu'à permettre aux différents objets qui en ont besoin de rendre les services que l'on attend de leur part (et dont l'utilisateur n'a absolument pas besoin de connaitre l'existence, à l'extrême limite )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #88
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    C'est probablement la meilleure solution si on à que des déplacements d'une case / tour oui (ce qui semble quelques chose d’acquis).
    (avec une fonction moveTo(const Position& pos); pour les téléporteurs).

  9. #89
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Iradrille Voir le message
    C'est probablement la meilleure solution si on à que des déplacements d'une case / tour oui (ce qui semble quelques chose d’acquis).
    (avec une fonction moveTo(const Position& pos); pour les téléporteurs).
    Et encore, une déclaration d'amitié bien placée peut parfaitement servir et aura pour effet de renforcer l'encapsulation
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #90
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Si on voulait être pédant, Déplacement devrait être un type séparé de Position, avec des opérations définies:
    • Position + Position interdit
    • Déplacement + Déplacement = Déplacement
    • Position - Position = Déplacement
    • Déplacement - Déplacement = Déplacement
    • Position + Déplacement = Position
    • Position * Nombre interdit
    • Déplacement * Nombre = Déplacement

    Et rajouter un static const Position origine = Position(0, 0) dans la classe Position, car soustraire/ajouter à l'origine est comment on convertit sémantiquement de l'un à l'autre:
    • Position - Origine = Position - Position = Déplacement
    • Origine + Déplacement = Position + Déplacement = Position


    C'est exactement comme pour les points et les vecteurs en géométrie, en fait. Ou comme les DateTime et TimeSpan en .Net.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #91
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    re bonjour

    alors voila cette fois ci je viens par rapport a des problèmes de compilation j'ai corriger deja plusieurs des problèmes mais il y en a qui persiste donc pouvais vous me renseigner sur le pourquoi voici le code source :

    main.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    #include "main.h"
     
    using namespace std;
     
    int main()
    {
        map<Position, string> maplist;    //<------ ici c'est le map que je comprend pas
        loadMapList(maplist) ;
        auto it = maplist.find(Position(0,0)); // find methode de map
        SMap Map;
        loadMap(Map, it.second);
        return 0;
    }
     
     
    /* Pour pouvoir utiliser la std::map, on a besoin de l'opérateur de
     *comparaison <
     *
     */
    bool operator <(Position const & first, Position const & second)
    {
        return first.x() < second.x() ||
                  (first.x() == second.x() && first.y() < second.y() );
    }
    /* et, tant qu'à faire, te l'opérateur de comparaison == (pour d'autres
     * usages ultérieurs, très certainement ;)
     */
    bool operator ==(Position const & first, Position const & second)
    {
        return ( first.x() == second.x() && first.y() == second.y() );
    }
     
    void loadMapList(std::map<Position, std::string> & toFill)
    {
        std::ifstream ifs("ephernia.txt");
        int x;
        int y;
        std::string filename;
        while(ifs>>x>>y>>filename)
        {
            toFill.insert(std::make_pair(Position(x,y),filename)); // insert methode de map
        }
    }
     
    void loadMap(SMap & Map, std::string const & filename)
    {
        Map.tiles.clear(); //supprime les informations de la map précédante
        Map.wraps.clear();
        ifstream ifs(filename);
        size_t rows;
        size_t cols;
        ifs>>rows>>cols;
        for(size_t y = 0; y <rows; ++y)
        {
            for(size_t x = 0; x <cols; ++x)
            {
               char c;
               ifs>>c;
               Map.tiles.push_back(c);
            }
        }
        int wrapCount;
        ifs>>wrapCount;
        for(int i = 0; i< wrapCount;++i)
        {
             SWrap wrap;
             ifs>>wrap.sourceX>>wrap.sourceY
                >>wrap.destMapX>>wrap.destMapY
                >>wrap.destX>>wrap.destY;
            Map.wraps.push_back(wrap);
        }
        ifs>>Map.title;
    }
    main.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #ifndef MAIN_H_INCLUDED
    #define MAIN_H_INCLUDED
    #include "position.h"
    #include "deplace.h"
    #include <iostream>
    #include <windows.h>
    #include <vector>
    #include <fstream>
    #include <map>
    #include <string>
     
     
    struct SMap {
            size_t rows;
            size_t cols;
    	std::vector<unsigned char> tiles;
    	std::vector<SWrap> wraps;
    	std::string title;
            /* et, comme on peut travailler en orienté objets, on peut rajouter
             * une fonction membre qui renvoie le caractère qui se trouve en X,Y ;)
             */
           const unsigned char tileAt(size_t x, size_t y) const
           {return tiles[y*cols + x];}
           /* et la même chose avec une Position (sait on jamais ;)) */
           const unsigned char tileAt(Position const & pos)
           {return tileAt(pos.x(), pos.y());}
    };
     
    struct SWrap {
    	/*ici les coord de départ sur la map courante*/
    	int sourceX;
    	int sourceY;
    	/*ici, l'identification de la map de sortie: nom, coordonnées, etc.*/
    	int destMapX;
    	int destMapY;
    	/*ici les coordonnees d'arrive sur la map de sortie*/
    	int destX;
    	int destY;
    };
     
     
    bool operator <(Position const & first, Position const & second);
    bool operator ==(Position const & first, Position const & second);
    void loadMapList(std::map<Position, std::string> & toFill);
    void loadMap(SMap & Map, std::string const & filename);
     
     
    #endif // MAIN_H_INCLUDED
    position.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #ifndef POSITION_H_INCLUDED
    #define POSITION_H_INCLUDED
    #include "main.h"
     
    class Position
    {
        public:
            Position(int x, int y):x_(x), y_(y){}
            int x() const{return x_;}
            int y() const{return y_;}
        private:
            int x_;
            int y_;
    };
     
     
    #endif // POSITION_H_INCLUDED
    deplace.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    #ifndef DEPLACE_H_INCLUDED
    #define DEPLACE_H_INCLUDED
    #include "position.h"
     
     
    enum Direction
    {
       nord,
       nordouest,
       ouest,
       sudouest,
       sud,
       sudest,
       est,
       nordest
    };
     
    class deplace
    {
        public:
            int x() const{return position_.x();}
            int y() const{return position_.y();}
            void bouger(Direction d)
            {
               switch(d)
               {
                   case nord:
                       position_=Position(x(),y()+1);
                       break;
                   case nordouest:
                       position_=Position(x()-1,y()+1);
                       break;
                   case ouest:
                       position_=Position(x()-1,y());
                       break;
                   case sudouest:
                       position_=Position(x()-1,y()-1);
                       break;
                   case sud:
                       position_=Position(x(),y()-1);
                       break;
                   case sudest:
                       position_=Position(x()+1,y()-1);
                       break;
                   case est:
                       position_=Position(x()+1,y());
                       break;
                   case nordest:
                       position_=Position(x()+1,y()+1);
                       break;
               }
            }
             /* tout le reste */
        private:
            Position position_;
    };
     
    #endif // DEPLACE_H_INCLUDED
    et maintenant voici la liste d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    In file included from main3.cpp:1:
    main.h:6:21: error: windows.h: Aucun fichier ou dossier de ce type
    In file included from main3.cpp:1:
    main.h:17: error: ‘SWrap’ was not declared in this scope
    main.h:17: error: template argument 1 is invalid
    main.h:17: error: template argument 2 is invalid
    main3.cpp: In function ‘int main()’:
    main3.cpp:9: error: ISO C++ forbids declaration of ‘it’ with no type
    main3.cpp:9: error: cannot convert ‘std::_Rb_tree_iterator<std::pair<const Position, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >’ to ‘int’ in initialization
    main3.cpp:11: error: request for member ‘second’ in ‘it’, which is of non-class type ‘int’
    main3.cpp: In function ‘void loadMap(SMap&, const std::string&)’:
    main3.cpp:48: error: request for member ‘clear’ in ‘Map->SMap::wraps’, which is of non-class type ‘int’
    main3.cpp:49: error: no matching function for call to ‘std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)’
    /usr/include/c++/4.4/fstream:454: note: candidates are: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/include/c++/4.4/fstream:440: note:                 std::basic_ifstream<_CharT, _Traits>::basic_ifstream() [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/include/c++/4.4/iosfwd:81: note:                 std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(const std::basic_ifstream<char, std::char_traits<char> >&)
    main3.cpp:70: error: request for member ‘push_back’ in ‘Map->SMap::wraps’, which is of non-class type ‘int

  12. #92
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Les erreurs sont pourtant on ne peut plus claires..

    Il ne trouve pas windows.h, tu es bien sur windows ? sous visual ?
    Tu fais appel à SWrap avant sa déclaration
    Tu compiles en C++11 ?
    Et enfin tu appelles de nombreuses méthodes à priori inexistantes..
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  13. #93
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    Pour window.h ce n'est pas un problème c'est parce que la je suis sous linux étant pas cher moi.

    pour SWrap je comprenais pas pourquoi merci de m'avoir faire remarquer.

    je ne sais pas si il compile en c++11 là actuellement j'utilise g++ donc faut que je vois de ce coté la.

    edit : pour compiler avec c++11 il faut faire pour ceux qu'il ne le saurait pas

  14. #94
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Alors, une fois tout ça corrigé, ça marche?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #95
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    Non toujours pas il m'affiche cette erreur-là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    main3.cpp: In function ‘int main()’:
    main3.cpp:11: error: ‘struct std::_Rb_tree_iterator<std::pair<const Position, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >’ has no member named ‘second’
    apparemment il n'utilise pas forcement le bon type pour it d’après se que je comprend mais quand je remplace auto par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::map<Postion, std::string>::const_iterator
    il veut que j'initialise it donc impasse encore

  16. #96
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Un iterator est similaire à un pointeur.
    Pour accéder aux membres il faut le déférencer. (*it).second.
    it->second devrait aussi marcher.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  17. #97
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    Merci cela marche déjà mieux.

  18. #98
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    re bonjour

    alors voila j'ai un probleme au a ce niveau la pour moi cette ligne lis bit a bit dans le fichier enfin d'aprés se que j'ai vue sur l'operateur >>

    mais quand je fait un jeu de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << rows << " " << cols <<endl;
    il me renvoie 4329470 et 2686512 avant la ligne du dessus
    puis aprés la ligne du dessus il me renvoie 0 et 2686512 donc aprés il ne peut rentrer dans la boucle etant deja a 0 .

    donc ma question est la suivante est ce normal ? ai je mal interpreter la ligne ?

  19. #99
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    on en est déjà à 5 pages, et les questions sont pour la plupart somme toute assez basiques et totalement différentes (la règle du forum étant normalement 1 topic = 1 question).
    Comme préconisé en première page, tu sembles un peu limite pour ce genre de projets, même si je suis le premier à dire qu'il s'agit du genre de chose idéale pour progresser.
    Mais là, ça ressemble beaucoup à du "try(fail) & ask"... sans recherche personnelle.

    Une simple recherche google sur ifstream::operator>> te retourne en premier résultat la doc correspondante.
    Et la première phrase en gras indique noir sur blanc
    Citation Envoyé par la doc
    Extract formatted data
    Donc non il ne s'agit pas d'une lecture bit à bit mais d'une extraction de données formatées. Et c'est d'ailleurs la force de cet opérateur.

    il me renvoie 4329470 et 2686512 avant la ligne du dessus
    Ce qui ressemble beaucoup à des variables non initialisées et donc inutilisables.

    aprés la ligne du dessus il me renvoie 0 et 2686512
    Tout simplement parce que ton fichier contient un 0 puis un 2686512. rows et cols étant probablement des int.

    Donc oui le comportement est normal, et le sera toujours (sauf bug du compilateur ou dans la stl, ce qui me parait sufisament proche de l'impossible pour être écarté d'office).
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  20. #100
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Bonsoir,

    on en est déjà à 5 pages, et les questions sont pour la plupart somme toute assez basiques et totalement différentes (la règle du forum étant normalement 1 topic = 1 question).
    le fait est que je ne voulais ouvrir plusieur topic pour un seul et meme theme donc voila pourquoi je rester sur le meme topic

    Citation Envoyé par Bousk Voir le message
    Comme préconisé en première page, tu sembles un peu limite pour ce genre de projets, même si je suis le premier à dire qu'il s'agit du genre de chose idéale pour progresser.
    Mais là, ça ressemble beaucoup à du "try(fail) & ask"... sans recherche personnelle.

    Une simple recherche google sur ifstream::operator>> te retourne en premier résultat la doc correspondante.
    Et la première phrase en gras indique noir sur blanc
    alors pour info j'ai chercher je n'est compris d'ou ma question la preuve que j'ai chercher car ma lecture bit a bit etait le resultat du lien que j'avais trouvé, donc voila juste une question de recherche mal faite désoler.

    aprés il est plus que sur que je ne le niveau pour réaliser un tel projet mais je suis motiver la preuve comme vous l'avez dis cela fait 5 page.


    Citation Envoyé par Bousk Voir le message
    Ce qui ressemble beaucoup à des variables non initialisées et donc inutilisables.


    Tout simplement parce que ton fichier contient un 0 puis un 2686512. rows et cols étant probablement des int.

    Donc oui le comportement est normal, et le sera toujours (sauf bug du compilateur ou dans la stl, ce qui me parait sufisament proche de l'impossible pour être écarté d'office).
    et pour l'initialisation je m'en douter un que cela pouvais provenir de la donc je vais faire en sorte de voir cela merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création mini-rpg type bomberman
    Par joonhy dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/03/2015, 15h16
  2. mini rpg c++ le retour
    Par devdeb91 dans le forum Débuter
    Réponses: 50
    Dernier message: 14/02/2013, 20h31
  3. Mini RPG representation UML
    Par manserk dans le forum Débuter
    Réponses: 12
    Dernier message: 28/04/2011, 23h13
  4. [RAID] config mini pour mise en place RAID 10
    Par netah25 dans le forum Composants
    Réponses: 4
    Dernier message: 27/01/2005, 16h32
  5. Début de mini moteur 2d
    Par GaldorSP dans le forum DirectX
    Réponses: 8
    Dernier message: 27/12/2004, 14h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo