Bonjour,
Je suis un debutant en c++. J'apprends le c++ par moi-meme. Je fais de la programmation orienté d'objet. Puis, je suis tombé dans une erreur que je ne comprenais pas. Quelqu'un peux m'aider?
Message erreur :
Assassin.h1>------ Début de la génération*: Projet*: trainning, Configuration*: Debug Win32 ------
1>Compilation en cours...
1>Monstre.cpp
1>Génération de code en cours...
1>Compilation en cours...
1>Assassin.cpp
1>Génération de code en cours...
1>Édition des liens en cours...
1>Monstre.obj : error LNK2005: "public: void __thiscall Assassin::perdreSp(int)" (?perdreSp@Assassin@@QAEXH@Z) déjà défini(e) dans Assassin.obj
1>C:\Users\tamere\Documents\Visual Studio 2008\Projects\tamere\Debug\trainning.exe : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\tamere\Documents\Visual Studio 2008\Projects\tamere\trainning\Debug\BuildLog.htm"
1>trainning - 2 erreur(s), 0 avertissement(s)
========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
Monstre.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 #ifndef DEF_ASSASSIN #define DEF_ASSASSIN #include <iostream> #include <string> #include "Monstre.h" class Monstre; /* Creer les assassins */ class Assassin { /* Les attributs d'un assassin */ private: std::string m_nom; char m_class; int m_hp; int m_sp; int m_xp; int m_level; int m_puissance; int m_rapidite; int m_energie; int m_resistance; std::string m_arme; bool m_estVivant; /* Les actions que l'assassin peut faire ou recevoir */ public: void perdreHp(int nbDegat); void perdreSp(int perte); void gagnerXp(int const& levelEnnemi, bool const& ennemiVivant); void gagnerHp(bool const& ennemiVivant); void gagnerSp(bool const& ennemiVivant); void attaquer(Monstre &cible); void superAttaque(Monstre &cible); }; #endif
Assassin.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 #ifndef DEF_MONSTRE #define DEF_MONSTRE #include <iostream> #include <string> #include "Assassin.h" class Assassin; /* Creation des Monstres */ class Monstre { private: /* Attribut des Monstres */ int m_hp; int m_sp; int m_xp; int m_level; int m_puissance; int m_rapidite; int m_energie; int m_resistance; bool m_estVivant; /* Action que les monstres peuvent recevoir & faire */ public: void perdreHp(int const nbDegat); void perdreSp(int perte); void attaquer(Assassin &cible); void superAttaque(Assassin &cible); int getLevel() const; bool getVivant() const; }; #endif
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 #include "Assassin.h" #include <string> #include <iostream> using namespace std; void Assassin::perdreHp(int const nbDegat) { if(m_estVivant = true) { int perte(nbDegat/2); perte /= m_resistance; m_hp -= perte; if(m_hp < 0) { m_estVivant = false; cout << "Vous etes mort" << endl; } else { cout << "Vous avez perdu " << perte << " vies" << endl; } } else { cout << "Vous etes mort" << endl; } } void Assassin::perdreSp(int perte) { if(m_sp > 0) { m_sp -= perte; } else { cout << "Pas d'energie" << endl; } } void Assassin::gagnerXp(int const& levelEnnemi, bool const& ennemiVivant) { if(ennemiVivant == false) { int gain = levelEnnemi*40; gain /= m_level; m_xp += gain; cout << "Vous avez gagner " << gain << " xp" << endl; if(m_xp > 100) { while(m_xp > 100) { m_xp -= 100; m_level += 1; cout << "Felicitation : vous avez atteint le niveau " << m_level << endl; } } } } void Assassin::gagnerHp(bool const& ennemiVivant) { if(ennemiVivant == false) { int gain(m_rapidite/5); gain *= 2; m_hp += gain; cout << "Vous avez gagner " << gain << " vie." << endl; } } void Assassin::gagnerSp(bool const& ennemiVivant) { if(ennemiVivant == false) { int gain(m_rapidite/5); gain *= 2; m_sp += gain; cout << "Vous avez gagner " << gain << " sp." << endl; } } void Assassin::attaquer(Monstre &cible) { cout << "Vous avez attaquer" << endl; int forceDattaque(m_puissance/2); cible.perdreHp(forceDattaque); if(cible.getVivant() == false) { gagnerXp(cible.getLevel(),cible.getVivant()); gagnerHp(cible.getVivant()); gagnerSp(cible.getVivant()); } } void Assassin::superAttaque(Monstre &cible) { int coutEnergie(100/m_energie*m_level); int forceDattaque(m_energie*2); if(coutEnergie < m_sp) { cout << "Vous avez faite un super-pouvoir" << endl; perdreSp(coutEnergie); cible.perdreHp(forceDattaque); if(cible.getVivant() == false) { gagnerXp(cible.getLevel(),cible.getVivant()); gagnerHp(cible.getVivant()); gagnerSp(cible.getVivant()); } } else { cout << "Vous n'avez plus d'energie" << endl; } }
Monstre.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include <iostream> #include <string> using namespace std; int main() { system("PAUSE"); return 0; }
J'en serais beaucoup reconnaissant si vous m'aidiez. Infiniment merci d'avance.
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 #include "Monstre.h" #include <iostream> using namespace std; void Monstre::perdreHp(int const nbDegat) { if(m_estVivant = true) { int perte(nbDegat/2); perte /= m_resistance; m_hp -= perte; if(m_hp < 0) { m_estVivant = false; cout << "Le monstre est mort" << endl; } else { cout << "Dommage de " << perte << " vies" << endl; } } else { cout << "Le monstre est mort" << endl; } } void Assassin::perdreSp(int perte) { if(m_sp > 0) { m_sp -= perte; } else { cout << "Pas d'energie" << endl; } } int Monstre::getLevel() const { return m_level; } bool Monstre::getVivant() const { return m_estVivant; }
Partager