jeudi 24 janvier 2013

C++, objet, à l'action ! (partie 2)

Voilà, pour résumer :
j'ai construit un RPG sur console.

Une fonction Main qui fait appel à trois classes :
Personnage
Arme
Sort

Chaque classe comporte un .h (header) avec le prototype et les includes (sauf namespace std;...).

Le Personnage include Arme.h et Sort.h, parce qu'un personnage a une Arme et un Sort, on appelle donc forcément ces fichiers à partir de Personnage, et Personnage est include par le Main.

Dans les .h, donc, la descritpion de la classe.

Dans le cpp, on include le h. Y a quand même un truc que je ne comprends pas c'est que nulle part on ne fait un include.cpp mais bon, soit.

Dans le .cpp, les constructeurs avec liste de paramètres... Et les méthodes.
Attention à bien créer des méthodes pour accéder aux données, car elles sont privées.
Exemple, si l'on veut afficher combien il reste de mana dans le main, il faudra créer une méthode "getMana()" par exemple, de type int et qui renverra le nb de mana à partir de la classe, qu'on pourra dès lors afficher.

Comme ça, ça a l'air simple mais bon... Allez, on continue.
http://www.siteduzero.com/informatique/tutoriels/programmez-avec-le-langage-c/action

Je dois désormais modifier certaines choses : stocker le nom du personnage dans une variable de la classe Personnage.
Ca a l'air simple mais en fait, ben, bof... :s
J'essaie de créer une Christine_Boutin qui se bat avec une bible...

Bon, j'ai ajouté pas mal d'options d'affichage.
Reste que pour faire un programme en inter-agissant avec le joueur, c'est long, et j'ai pas très envie d'y passer une journée.
Je continue, je vois comment ça marche, il me semble.

Enfin, le do while, ça m'agace fort.

http://www.siteduzero.com/informatique/tutoriels/programmez-avec-le-langage-c/mega-schema-resume

J'en suis là. Je n'ai pas fini, on devrait laisser le joueur choisir les attaques etc. mais ça prend des plombes et j'ai envie de continuer.
J'ai un peu travaillé dessus, si bien que je vois globalement comment faire, mais je trouve ça très fastidieux pour pas grand-chose.

http://www.siteduzero.com/informatique/tutoriels/programmez-avec-le-langage-c/la-surcharge-d-operateurs

http://www.siteduzero.com/informatique/tutoriels/programmez-avec-le-langage-c/les-operateurs-arithmetiques-1 


L'exercice est ici de créer une "surcharge d'opérateur", c'est à dire...
On créé un objet Duree (m_heures, m_minutes, m_secondes)
On créé une sorte de fonction qui s'appelle "operator". Celle-ci additionne les objets a et b.
MAIS
comme on veut également pouvoir le faire en faisant +=, on va plutôt passer par là, c'est "plus court".

J'ai ajouté deux lignes dans le prototype de la casse, je ne suis pas sûre que les deux lignes soient indispensables.
Ce qui est difficile pour moi est que le prototype, déjà :
Duree operator+, ok.
(Duree const& a, Duree const& b)
-> on envoie un objet Duree en référence, mais constant, pour ne pas le copier, ni le modifier. Gain de place.

 Dans le cpp, la méthode Duree::operator+(Duree const& a, Duree const& b)
{
On effectuve une copie de a, pour ne pas le modifier, et on fera +=.
Duree copie(a)
copie+=b;
return copie;
}
Quand c'est montré, à la fin, ça semble facile. Mais si j'avais dû faire ça seule, je n'aurais sans doute pas trouvé :s

La méthode operator+= est plus complexe, rien que dans le type qu'elle renvoie :
Duree& Duree::operator+=(const Duree &duree2)
{
l'algorithme, facile par rapport au reste...
}

En définitive, je devrais relire le passage sur les références et les pointeurs...

Sinon, ça fonctionne bien, mais j'ai une question existentielle, 
en effet, j'ai dû sortir Duree operator+() de la class Duree, j'ignore absolument pourquoi ?!

J'suis perdue, j'ajoute contructor- et plus rien ne fonctionne. Faut que je refasse cet exo, j'ai moitié pas compris.
Mais faut que j'arrive à me CON-CEN-TRER !
http://www.siteduzero.com/informatique/tutoriels/programmez-avec-le-langage-c/les-operateurs-arithmetiques-1#

Aucun commentaire:

Membres