//no syntax error // no compilation error // error when launching the program
Code:
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
|
first class
/*
* Arme.h
*
* Created on: 11 déc. 2020
* Author: vincent
*/
#ifndef ARME_H_
#define ARME_H_
#include <iostream>
#include <string>
class Arme {
public:
Arme();
~Arme();
Arme(std::string nom, int degats);
void changer(std::string nom, int degats);
void afficher() const;
int getDegats() const;
private :
std::string m_nom;
int m_degats;
};
#endif /* ARME_H_ */ |
------------------------------------------------
------------------------------------------------
Code:
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
| /*
* Arme.cpp
*
* Created on: 11 déc. 2020
* Author: vincent
*/
#include "Arme.h"
using namespace std;
Arme::Arme() : m_nom ("Epée rouillée"),m_degats (10)
{
}
Arme::Arme(string nom, int degats) : m_nom (nom),m_degats (degats)
{
}
void Arme::changer(string nom, int degats)
{
m_nom= nom;
m_degats = degats;
}
void Arme::afficher()const
{
cout<<" Arme : " << m_nom << "(Degats : "<< m_degats <<")"<< endl;
}
Arme::~Arme()
{
} |
------------------------------------------------
------------------------------------------------
seconde class
Code:
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
| /*
* Personnage.h
*
* Created on: 11 déc. 2020
* Author: vincent
*/
#ifndef PERSONNAGE_H_
#define PERSONNAGE_H_
#include <iostream>
#include <string>
#include "Arme.h"
class Personnage
{
public:
Personnage();
Personnage(std::string monArme, int degatsArme);
~Personnage();
void recevoirDegats(int nbDegats);
void attaquer(Personnage &cible);
void boirePotionDeVie (int quantitePotion);
void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
bool estVivant() const;
void afficherEtat() const;
private:
int m_vie;
int m_mana;
Arme *m_arme; //pointeur
};
#endif /* PERSONNAGE_H_ */ |
------------------------------------------------
------------------------------------------------
Code:
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
| /*
* Personnage.cpp
*
* Created on: 11 déc. 2020
* Author: vincent
*/
#include "Personnage.h"
using namespace std;
void Personnage::recevoirDegats(int nbDegats)
{
m_vie -= nbDegats;
if (m_vie < 0)
{
m_vie = 0;
}
}
int Arme::getDegats() const
{
return m_degats;
}
void Personnage::attaquer(Personnage &cible)
{
cible.recevoirDegats(m_arme->getDegats());
}
void Personnage::boirePotionDeVie (int quantitePotion)
{
m_vie += quantitePotion;
if (m_vie > 100)
{
m_vie = 100;
}
}
void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme)
{
m_arme->changer(nomNouvelleArme, degatsNouvelleArme);
//pas dans le bouquin demander par le compilateur
//m_nomArme = nomNouvelleArme;
//m_degatsArme = degatsNouvelleArme;
}
bool Personnage::estVivant() const
{
if (m_vie > 0)
{
return true;
}
else
{
return false;
}
}
Personnage::Personnage() :m_vie(100),m_mana(100),m_arme(0)
{
// TODO Auto-generated constructor stub
}
Personnage::Personnage(string nomArme, int degatsArme): m_vie(100), m_mana(100),m_arme(0)
{ //nomArme, degatsArme
m_arme = new Arme(nomArme,degatsArme );
}
void Personnage::afficherEtat() const
{
cout << "Vie : " << m_vie << endl;
cout << "Mana : " << m_mana << endl;
m_arme->afficher();
}
Personnage::~Personnage()
{
delete m_arme;
} |
-------------------------------------------------------------------
main
-------------------------------------------------------------------
Code:
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
| #include <iostream>
#include <string>
#include "Personnage.h"
using namespace std;
int main()
{
// Création des personnages
Personnage david, goliath("Epée aiguisée", 20);
// Au combat !
goliath.attaquer(david);
david.boirePotionDeVie(20);
goliath.attaquer(david);
david.attaquer(goliath);
goliath.changerArme("Double hache tranchante vénéneuse de la mort", 40);
goliath.attaquer(david);
// Temps mort ! Voyons voir la vie de chacun...
cout << "David" << endl;
david.afficherEtat();
cout << endl << "Goliath" << endl;
goliath.afficherEtat();
return 0;
} |
Merci beaucoup ! ça tourne
Code:
1 2 3 4 5 6
|
Personnage::Personnage() :m_vie(100),m_mana(100),m_arme(0)
{
m_arme = new Arme();
} |