Votre question

[C++] Probleme en POO

Tags :
  • string
  • Programmation
Dernière réponse : dans Programmation
25 Juillet 2010 13:39:53

Bonjour,

Je suis actuellement dans la POO en C++ sous Code Blocks .

J'ai trois classes :p ersonnage ,Ennemi ,Arme .

Je met une méthode dans ma classe Personnage qui sert à attaquer l'ennemi ,j'écris le prototype dans "Personnage.h":

void attaquer(Ennemi &cible);

Et sa m'indique comme erreur :


error : 'Ennemi" has not been declared
error: ISO C++ forbids declaration of 'cible' with no type

J'ai pourtant inclus "Ennemi.h" dans "Personnage.h".

Comment remédier a cela ?

Merci d'avance !!

Cordialement ,

Vvampire.

Autres pages sur : probleme poo

25 Juillet 2010 14:49:50

Aucune idée
m
0
l
25 Juillet 2010 15:52:50

Bonjour Vvampire,

Montre nous donc le contenu de tes fichiers Ennemi.h et Personnage.h :) 
m
0
l
Contenus similaires
25 Juillet 2010 16:00:48

Ok :D 

Personnage.h :

  1. #ifndef DEF_PERSONNAGE
  2. #define DEF_PERSONNAGE
  3. #include "Arme.h"
  4. #include "Ennemi.h"
  5.  
  6.  
  7. class Personnage
  8. {
  9. public:
  10.  
  11. Personnage();
  12. Personnage(std::string nomPersoo ,std::string nomArme, int degatsArme,int munitions);
  13. ~Personnage();
  14. void recevoirDegats(int nbDegats);
  15. void attaquer(Ennemi &cible);
  16.  
  17. void boirePotionDeVie(int quantitePotion);
  18. void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
  19. bool estVivant();
  20. void afficherEtat(int nombreDepotion ,int efficaciterPotion);
  21. void demanderPersoArme(std::string lR ,std::string dY );
  22. void munItion();
  23. void utiliserPotion(int nombreDePotion ,int efficaciterPotion);
  24.  
  25.  
  26.  
  27. private :
  28.  
  29. int m_vie;
  30. int m_mana;
  31. Arme m_arme;
  32. std::string m_nomPerso;
  33. int m_munitions;
  34. int m_nombreDepotion;
  35. int m_efficacitePotion;
  36.  
  37.  
  38.  
  39.  
  40. };
  41.  
  42. #endif


,et Ennemi.h :

  1. #ifndef DEF_ENNEMI
  2. #define DEF_ENNEMI
  3. #include "Arme.h"
  4.  
  5. class Ennemi
  6. {
  7.  
  8. public :
  9.  
  10. Ennemi();
  11. Ennemi(std::string enom ,std::string nom,int degatsArme);
  12.  
  13. void depasserVie();
  14.  
  15. bool estEnVie();
  16. void recevoirDegats(int nbDegats);
  17. void afficherEtat();
  18.  
  19. private :
  20.  
  21. std::string m_nom;
  22. int m_vie;
  23. Arme m_earme;
  24.  
  25.  
  26.  
  27.  
  28. };
  29.  
  30. #endif
m
0
l
25 Juillet 2010 16:15:54

  1. void attaquer(Ennemie &cible);


Tu as un e en trop à ennemi déjà :lol: 
Enfin c'est étrange, ça correspond pas à ton erreur, tu as modifié depuis ?
m
0
l
25 Juillet 2010 16:28:25

Oui, je l'avais modifié :D  ,lol j'en avait tellement marre que j'ai essayer de changer tout les nom pour voir si sa marcher :pt1cable: 
m
0
l
25 Juillet 2010 16:32:16

Dans Arme.h, tu aurais pas fait un mauvais copié/collé et laissé #define DEF_ENNEMI plutôt que DEF_ARME ?
m
0
l
25 Juillet 2010 18:30:14

Non ,c'etait bien DEF_ENNEMI .
m
0
l
25 Juillet 2010 21:00:28

Si vous voulez ,je vous donne le contenu de Personnage.cpp et de Ennemi.cpp (attention c'est long :)  )

Personnage.cpp :

  1. #include <iostream>
  2. #include <string>
  3. #include "Personnage.h"
  4. #include "Ennemi.h"
  5. #include "Arme.h"
  6.  
  7.  
  8. using namespace std;
  9.  
  10.  
  11. Personnage::Personnage() : m_vie(100), m_mana(100)
  12. {
  13.  
  14. }
  15.  
  16. Personnage::Personnage(string nomPersoo ,string nomArme, int degatsArme ,int munitions ) : m_vie(100), m_mana(100), m_arme(nomArme, degatsArme ) ,m_nomPerso(nomPersoo) ,m_munitions(munitions)
  17. {
  18. }
  19.  
  20. Personnage::~Personnage()
  21. {
  22.  
  23. }
  24.  
  25. void Personnage::recevoirDegats(int nbDegats)
  26. {
  27. m_vie -= nbDegats;
  28.  
  29. if (m_vie < 0)
  30. {
  31. m_vie = 0;
  32. }
  33. }
  34.  
  35. void Personnage::attaquer(Ennemi &cible)
  36. {
  37.  
  38. m_munitions--;
  39.  
  40. while(m_munitions !=0)
  41. {
  42. cible.recevoirDegats(m_arme.getDegats());
  43. }
  44.  
  45. if(m_munitions ==0)
  46. {
  47. cout << "T'a plus de munitions ,tu te fais buter par le BOSS " << endl;
  48. m_vie =0;
  49. estVivant();
  50. }
  51.  
  52. }
  53.  
  54. void Personnage::boirePotionDeVie(int quantitePotion)
  55. {
  56. m_vie += quantitePotion;
  57.  
  58. if (m_vie > 100)
  59. {
  60. m_vie = 100;
  61. }
  62. }
  63.  
  64. void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme)
  65. {
  66. m_arme.changer(nomNouvelleArme, degatsNouvelleArme);
  67. }
  68.  
  69. bool Personnage::estVivant()
  70. {
  71. if (m_vie > 0)
  72. {
  73.  
  74. return true;
  75. }
  76. else
  77. {
  78. cout << "Le jeu est fini le boss ta buter !! " << endl;
  79. return false;
  80. }
  81. }
  82.  
  83. void Personnage::afficherEtat(int nombreDePotion ,int efficaciterPotion)
  84. {
  85.  
  86.  
  87. cout << endl << endl << endl;
  88. cout << m_nomPerso << endl;
  89. cout << "Vie : " << m_vie << endl;
  90. cout << "Potion :" << "( Nombre :" << nombreDePotion << "/ Efficaciter :" << efficaciterPotion<< ")" << endl;
  91. m_arme.afficher();
  92. cout << "/Munitions : " << m_munitions << ")" << endl;
  93. cout << endl << endl;
  94. }
  95.  
  96. void Personnage::demanderPersoArme(string lR,string dY )
  97. {
  98. int decision =0;
  99. m_vie =100;
  100.  
  101.  
  102.  
  103. cout << "Choisissez le nom de votre mafieux !! :";
  104. cin >> m_nomPerso;
  105. cout << "" <<endl <<endl;
  106.  
  107. cout << "Choisissez l'arme qui vous convient :" << endl;
  108. cout << " 1.Lance Rocket (degats : 30 ,munitions : 12) 2.Dynamites (degats :20 ,munitions :15) " << endl;
  109. cout << endl;
  110. cin >> decision;
  111.  
  112.  
  113. if(decision ==1)
  114. {
  115. m_arme.changer(lR,30);
  116. m_munitions =12;
  117. }
  118.  
  119. else if(decision ==2)
  120. {
  121. m_arme.changer(dY,20);
  122. m_munitions =15;
  123. }
  124.  
  125. else if(decision <=0 || decision > 2)
  126. {
  127. cout << "Mauvais choix" << endl;
  128. }
  129.  
  130.  
  131. }
  132.  
  133. void Personnage::utiliserPotion(int nombreDePotion ,int efficaciterPotion)
  134. {
  135. nombreDePotion--;
  136. for(int i=0 ;i<10;i++)
  137. {
  138. if(nombreDePotion==i)
  139. {
  140. m_vie +=efficaciterPotion;
  141. }
  142. }
  143.  
  144. }


Et Ennemi.cpp :

  1. #include <iostream>
  2. #include <string>
  3. #include "Ennemi.h"
  4. #include "Arme.h"
  5. #include "Personnage.h"
  6.  
  7.  
  8. using namespace std;
  9.  
  10. Ennemi :: Ennemi() : m_vie(100)
  11. {
  12. }
  13.  
  14. Ennemi :: Ennemi(string enom,string nomArme ,int degatsArme) : m_vie(100) ,m_earme(nomArme ,degatsArme) ,m_nom(enom)
  15. {
  16. }
  17.  
  18. void Ennemi :: depasserVie()
  19. {
  20. if(m_vie > 100)
  21. {
  22. m_vie =100;
  23. }
  24. }
  25.  
  26.  
  27. void Ennemi::recevoirDegats(int nbDegats)
  28. {
  29. m_vie -=nbDegats;
  30.  
  31. if(m_vie < 0)
  32. {
  33. m_vie =0;
  34. }
  35. }
  36.  
  37. bool Ennemi::estEnVie()
  38. {
  39. if(m_vie > 0)
  40. {return true;} // est en vie
  41.  
  42. else
  43. {return false; } // est mort
  44. }
  45.  
  46. void Ennemi::afficherEtat()
  47. {
  48.  
  49.  
  50. cout << endl << endl << endl;
  51. cout << m_nom << endl;
  52. cout << "Vie : " << m_vie << endl;
  53. m_earme.afficher();
  54. cout << endl << endl;
  55.  
  56. }


Bon ben voila ,en éspérant que sa puisse vous aidée :bounce: 






m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS