Voilà, je bloque sur quelque chose qui vous semblera vraiment très simple (et pourtant malgré tout je ne comprends pas pourquoi ça ne marche pas...) mais je viens de débuter en C++.
Mon problème est le suivant, lorsque j'execute ce code (c'est un TP d'apprentissage au CPP), celui-ci fonctionne et me retourne les pv de mes personnages.
Sauf que ceux-ci se remettent à zéro la ligne suivante...
Pourquoi ? Je l'ignore, et après vérification avec le debug, cette modif se fait à chaque execution d'une méthode !
le main :
#include <iostream>
#include "Personnage.h"
int main() {
Personnage david("David"),goliath("Goliath");
goliath.attaquer(david);
david.boirePotion(20);
goliath.attaquer(david);
david.attaquer(goliath);
goliath.changerArme("Double Hache",40);
return 0;
}
le header :
#pragma once
using namespace std;
#include <iostream>
#include <string>
#include "Arme.h"
class Personnage {
private:
int m_vie;
int m_potion;
int m_puissanceAttaque;
string m_nom;
string m_nomArme;
public:
Personnage(string);
int attaquer(Personnage);
int boirePotion(int);
void changerArme(string,int);
int gagnerVie(int);
int perdreVie(int);
};
la classe :
#include "Personnage.h"
Personnage::Personnage(string nom) {
m_nom = nom;
m_vie = 200;
m_potion = 20;
m_puissanceAttaque = 30;
m_nomArme = "Epee large";
}
int Personnage::attaquer(Personnage personnage) {
personnage.perdreVie(m_puissanceAttaque);
}
void Personnage::changerArme(string nomArme, int puissanceAttaque) {
m_nomArme = nomArme;
m_puissanceAttaque = puissanceAttaque;
}
int Personnage::boirePotion(int) {
gagnerVie(m_potion);
}
int Personnage::gagnerVie(int valeur) {
m_vie += valeur;
cout<<m_vie<<endl;
}
int Personnage::perdreVie(int valeur) {
m_vie -= valeur;
cout<<m_vie<<endl;
}
Merci d'avance !
- Edité par THE RU[i]NNER 12 janvier 2021 à 14:45:29
Bonjour, ta méthode attaquer est inexacte, il faut faire:
int Personnage::attaquer(Personnage personnage) {
perdreVie(personnage.m_puissanceAttaque);
}
Merci de ton retour, malheureusement, ça ne résoud pas mon souci qui en reste inchangé... De plus, c'est bien le personnage qui retire de la vie à l'objet se trouvant dans la méthode.
Quand tu attaques un personnage c'est lui qui perd de la vie. Ta fonction attaquer reçoit une copie du Personnage, ça serait donc cette copie temporaire qui perdrait de la vie! Il faut passer Personnage par référence pour agir dessus.
× 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.
En recherche d'emploi.