Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Tuto Mateo] RPG console

    30 août 2007 à 20:50:49

    Bonjouuuur :)

    J'ai commencer le C++ avec les cours de mateo et j'en suis a la fin du chapitre sur les classes, et etant un eleve studieux :p j'essaye de faire quelques ameliorations a mon mini RPG console :D
    Et forcement ya un truc qui va pas ^^ j'ai juste voulu rajouter un attributs nom dans ma classe personnage
    et j'ai " adapter " mon code, je compile , mais qd la fenetre s'ouvre et bah ... ya la ptite fenetre de windows qui apparait et qui me dit que mon programme a rencontre un probleme :/
    Je crois que c'est une histoire de " depassement de memoire " , enfin en tout cas mon code n'est pas bon mais j'arrive pas a trouver ou ^^.
    Voila donc j'vous met ...tout :D

    Merci d'avance !
    Main.cpp
    1. #include <iostream>
    2. #include <string>
    3. #include "personnage.h"
    4. using namespace std;
    5. int main()
    6. {
    7.     Personnage david(david), goliath(goliath); // Création de 2 objets de type Personnage : david et goliath
    8.     goliath.attaquer(david); /
    9.     david.boirePotionDeVie(20); // david boit une potion de vie qui lui rapporte 20 de vie
    10.     goliath.attaquer(david);
    11.     david.attaquer(goliath); /
    12.     goliath.changerArme("Double hache tranchante veneneuse de la mort", 20);
    13.     goliath.attaquer(david);
    14.     //affichage  des etats des perso
    15.     goliath.afficherEtat();
    16.     david.afficherEtat();
    17.     return 0;
    18. }

    personnage.h
    1. #ifndef DEF_PERSONNAGE
    2. #define DEF_PERSONNAGE
    3. #include "arme.h" //penser a l'inclure pour pouvoir creer l'objet Arme
    4. class Personnage
    5. {
    6.     public:
    7.         Personnage(std::string nom);
    8.         Personnage(std::string nom,std::string nomArme,int degatsArme);
    9.         ~Personnage();
    10.         void recevoirDegats(int nbDegats);
    11.         void attaquer(Personnage &cible);
    12.         void boirePotionDeVie(int quantitePotion);
    13.         void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
    14.         bool estVivant();
    15.         void afficherEtat();
    16.     private:
    17.         int m_vie;
    18.         int m_mana;
    19.         Arme m_arme;
    20.         std::string m_nom;
    21. };
    22. #endif

    personnage.cpp
    1. #include <iostream>
    2. #include <string>
    3. #include "personnage.h"
    4. using namespace std;
    5.     Personnage::Personnage(string nom): m_nom(nom), m_vie(100), m_mana(100)
    6.     {
    7.     }
    8.     Personnage::Personnage(string nom,string nomArme,int degatsArme) : m_nom(nom),m_vie(100), m_mana(100), m_arme(nomArme, degatsArme)
    9.     {
    10.     }
    11.     Personnage::~Personnage()
    12.     {
    13.         //souvent des delete etc .. pour les alloc dynamiques
    14.     }
    15.     void Personnage::recevoirDegats(int nbDegats)
    16.     {
    17.         m_vie -= nbDegats;
    18.         if(m_vie < 0) // si le joueur est mort
    19.             m_vie=0;
    20.     }
    21.     void Personnage::attaquer(Personnage &cible)
    22.     {
    23.         cible.recevoirDegats(m_arme.getDegats()); // inflige a la cible les degats retourné par getDegats de l'objet Arme
    24.     }
    25.     void Personnage::boirePotionDeVie(int quantitePotion)
    26.     {
    27.         m_vie += quantitePotion;
    28.         if(m_vie > 100)
    29.             m_vie = 100;
    30.     }
    31.     void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme)
    32.      {
    33.          m_arme.changer(nomNouvelleArme,degatsNouvelleArme);
    34.     }
    35.     bool Personnage::estVivant()
    36.     {
    37.         if(m_vie > 0)
    38.             return true; // il est vivant
    39.         else
    40.         return false; // il est mort
    41.     }
    42.     void Personnage::afficherEtat()
    43.     {
    44.         cout << "Nom : " << m_nom << endl;
    45.         cout << "Vie : "<< m_vie << endl;
    46.         cout << "Mana : "<< m_mana << endl;
    47.         m_arme.afficher();
    48.     }

    arme.h
    1. #ifndef DEF_ARME
    2. #define DEF_ARME
    3. #include <string>
    4. class Arme
    5. {
    6.     public:
    7.         Arme();
    8.         Arme(std::string nom,int degats);
    9.         void changer(std::string nom,int degats);
    10.         void afficher();
    11.         int getDegats() const;
    12.     private:
    13.         std::string m_nom;
    14.         int m_degats;
    15. };
    16. #endif

    arme.cpp
    1. #include <iostream>
    2. #include <string>
    3. #include "arme.h"
    4. using namespace std;
    5.     Arme::Arme(): m_nom("Epee de bois"),m_degats(10)
    6.     {
    7.     }
    8.     Arme::Arme(string nom,int degats): m_nom(nom),m_degats(degats)
    9.     {
    10.     }
    11.     void Arme::changer(string nom,int degats)
    12.     {
    13.         m_nom = nom;
    14.         m_degats = degats;
    15.     }
    16.     void Arme::afficher()
    17.     {
    18.         cout << "Nom de l'arme : "<< m_nom << "\n" << "Degats : " << m_degats << endl;
    19.     }
    20.     int Arme::getDegats() const
    21.     {
    22.         return m_degats;
    23.     }
    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2007 à 21:00:18

      Bonsoir.
      Là comme sa je voit pas trop ou est la segfault...
      Essaie de lancer le debogueur pour voir à quelle ligne sa plante.
      • Partager sur Facebook
      • Partager sur Twitter
        30 août 2007 à 21:00:53

        La faute est à la prmière ligne du main.

        Il faut mettre les noms entre guillemets. Normalement le compilateur devrait te donner une erreur mais comme là la chaîne est identique au nom de l'objet, il ne comprend pas.

        (Il y a peut-être d'autres erreurs)
        • Partager sur Facebook
        • Partager sur Twitter
        Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
          30 août 2007 à 21:25:32

          Merci !!! c'etait effectivement ca ^^
          Ps: nan ya pas d'autres erreurs !! :p
          • Partager sur Facebook
          • Partager sur Twitter

          [Tuto Mateo] RPG console

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown