bool Personnage::estVivant() { if (m_vie > 0) //Plus de 0 de vie ? { return true; //VRAI, il est vivant ! } else { return false; //FAUX, il n'est plus vivant ! } }
Reposte ton code en utilisant la balise stp. On pourra t'aider plus efficacement
Mehdidou99 - Plus on apprend, et euh... plus on apprend. | Ne lisez pas le cours de C++ d'OpenClassrooms ! Il est de mauvaise qualité. Essayez plutôt celui-là. Jeux (3D) en C++ ? Unreal Engine 4, c'est bien, mangez-en !
OK donc je revien sur mon code et mon problème de compilation, mon projet contient 3 fichiers :
Un main.cpp :
#include <iostream>
#include "Personnage.h" //Ne pas oublier
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
un fichier personnage.cpp :
#include <iostream>
#include "Personnage.h"
using namespace std;
void Personnage::recevoirDegats(int nbDegats)
{
m_vie -= nbDegats;
//On enlève le nombre de dégâts reçus à la vie du personnage
if (m_vie < 0) //Pour éviter d'avoir une vie négative
{
m_vie = 0; //On met la vie à 0 (cela veut dire mort)
}
}
void Personnage::attaquer(Personnage &cible)
{
cible.recevoirDegats(m_degatsArme);
//On inflige à la cible les dégâts que cause notre arme
}
void Personnage::boirePotionDeVie(int quantitePotion)
{
m_vie += quantitePotion;
if (m_vie > 100) //Interdiction de dépasser 100 de vie
{
m_vie = 100;
}
}
void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme)
{
m_nomArme = nomNouvelleArme;
m_degatsArme = degatsNouvelleArme;
}
bool Personnage::estVivant()
{
if (m_vie > 0) //Plus de 0 de vie ?
{
return true; //VRAI, il est vivant !
}
else
{
return false; //FAUX, il n'est plus vivant !
}
}
Un fichier personnage.h :
#ifndef PERSONNAGE_H_INCLUDED
#define PERSONNAGE_H_INCLUDED
#include <string>
class Personnage
{
public:
void recevoirDegats(int nbDegats);
void attaquer(Personnage &cible);
void boirePotionDeVie(int quantitePotion);
void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
bool estVivant();
private:
int m_vie;
int m_mana;
std::string m_nomArme; //Pas de using namespace std,
int m_degatsArme;
};
#endif
Seulement, lorsque je compile mon main ou le fichier Personnage.cpp, je lis l'erreur suivante :
C:\Users\...\C++ 2015\programme 1\essaidu26\essaispersonnage\Personnage.cpp|2|error: #include expects "FILENAME" or <FILENAME>|
Mon projet, mes fichiers.cpp et .h sont dans un dossier appelé projetbase, et il s'est créé un fichier bin et un fichier obj dans le dossier.
Pour compiler j'ai GNU GCC compiler, qui ne m'a pas posé de pb dans des programmes "simple" (un seul fichier main).
L'arborescence du projet sous codeblocks :
projetbase.cbp
Sources: --> main.cpp
--> personnage.cpp
Headers: --> personnage.h
Si c'est un problème de compilateur, merci de m'aiguiller sur les solutions car je maîtrise pas la configuration du compilateur.
Je ne vois pas du tout d'où ça viens. Chez moi ton code fonctionne, pourtant j'utilise aussi Code::Blocks.
Tiens, en y regardant de plus près, l'erreur parle d'un fichier Personnage.cpp dans un dossier nommé "essaispersonnage". Or tu dis juste en dessous que tes fichiers sont tous dans un dossier "projetbase". Est ce que ça ne pourrais pas venir de là? J'ai beau tester, je n'arrive pas à reproduire ton erreur, a part lorsque je supprime les guillemets a #include "Personnage.h" .
Apparemment lors de la compilation, c'est comme si mon fichier personnage.h n'était pas trouvé, donc chaque variable et chaque fonction n'étant pas déclarée il me met un message d'erreur.
Pour plus d'infos je suis sous windows7 64bits, j'ai ré-installé plusieurs fois code blocks mais le résultat est le même.
J'ai fais installation standard.
Est ce que je dois paramétrer quelque chose ( compilateur? ) ou ajouter des plugins ou autre ???
Bonjour, es-tu sur de l'orthographe de tes includes ? Cela vient peut-être de la majuscule que tu utilises dans ton include et qui n'est pas présente dans le nom du fichier (la casse est importante).
- Edité par TheNawaKer 30 janvier 2015 à 23:53:19
Rédacteur chez Millenium et Étudiant en L3 STIC à Orléans
Génial ! Je note l'astuce au cas ou, ça peux toujours servir
Tout est possible tant qu'on y croit.
Erreur dans projet sous code blocks
× 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.
Tout est possible tant qu'on y croit.
Tout est possible tant qu'on y croit.
Tout est possible tant qu'on y croit.