Je débute dans l'apprentissage du C++ en suivant notamment les cours et tutoriels C++.
Ils donnent l'exemple pour apprendre a utiliser les classes un trés simple rpg à 2 joueurs.
Pour m'amuser un peu et pour m'entrainer j'ai un peu modifié le code mais j'ai un souci.
Je m'explique:
J'ai une classe personnage qui me permet de gerer mes joueurs. Le constructeur de cette classe lance deux fonctions pour donner un nom et choisir une arme.
J'ai une autre classe Combat qui me sert à gerer le combat (tour du joueur, etc.) et son constructeur n'est qu'une liste d'initialisation.
Dans mon main je crée deux objets combat et joueur1 et joueur2 et JUSTE ca. Voyez:
main.ccp :
Personnage.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 #include <iostream> #include <string> #include "Personnage.h" #include "Combat.h" using namespace std; int main() { // On démarre le jeu Combat combat1; // On créé les deux personnages joueur1 et joueur2 Personnage joueur1, joueur2; cout << "lol" << endl; return 0;
Personnage.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 #include <iostream> #include <string> #include <limits> #include "Personnage.h" #include "Arme.h" using namespace std; // Constructeur Personnage::Personnage() : m_vie(100), m_mana(100), m_nbPotion(3) { donnerNom(); donnerArme(); } // Methodes // Définir le nom et l'arme du personnage void Personnage::donnerNom() { cout << "Quel est le nom du joueur ?" << endl; cin >> m_nom; } void Personnage::donnerArme() { int choixArme; cout << "Quel arme choisissez-vous ?" << endl; cout << "1 - La lance (dégats : 18 pts)" << endl; cout << "2 - L'epée en bronze (dégats : 19 pts)" << endl; cout << "3 - La hache de fer (dégats : 20 pts)" << endl; cout << "Votre choix : "; cin >> choixArme; }
et enfin combat.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 #ifndef DEF_PERSONNAGE #define DEF_PERSONNAGE #include <string> #include "Arme.h" class Personnage { public: // Constructeur Personnage(); // Methodes // Definir le personnage : Nom + Arme void donnerNom(); void donnerArme(); private: std::string m_nom; int m_vie; int m_mana; int m_nbPotion; Arme m_arme; }; #endif
Oups j'avais oublié le combat.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <iostream> #include <limits> #include "Combat.h" #include "Personnage.h" using namespace std; //Constructeur Combat::Combat() { }
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 DEF_COMBAT #define DEF_COMBAT #include "Personnage.h" class Combat { public: // Constructeur Combat(); }; #endif
Le probléme est que bien que le main doit crée deux objets joueur1 et joueur2 , quand j'execute mon programme la création d'un joueur (nom + arme) s'effectue 3 fois. En essayant de trouve le probléme, je me suis rendu compte que la ligne Combat combat1 lancé le constructeur de la classe Combat mais ce dernier lancé tout seul le constructeur de la classe Personnage.
Je reste bloqué sur cette erreur sans comprendre ce que j'ai mal codé. Merci de votre aide.
Partager