Bonjour
Pour mon application, qui sera un outil pour créer des personnages pour mon jeu, je fais appel au Design Pattern Decorator.
En effet, un personnage peut être à la fois Guerrier et Sorcier.
J'ai donc intégré, pour le moment, deux classes décoratrices : Guerrier et Sorcier.
Pour tester l'architecture, dans mon main je lance tout d'abord la construction du personnage.
Ensuite, je créé lui rajoute les caractéristiques du Guerrier, puis celles du Sorcier.
Ce qui donne le code suivant :
Le problème est le suivant : comment garder les caractéristiques du Guerrier, et lui ajouter celles du Sorcier ?
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 #include <iostream> #include "Personnage.h" #include "Guerrier.h" #include "Sorcier.h" using namespace std; int main() { PersonnageBase* pb = new Personnage(); cout << "pb : " << endl; cout << "Nom : " << pb->getNom() << endl; cout << "Endurance : " << pb->getEndurance() << endl; cout << "Force : " << pb->getForce() << endl << endl; pb = new Guerrier(*pb); pb->setClasse("Guerrier"); cout << "Warrior : " << endl; cout << "Classe : " << pb->getClasse() << endl; cout << "Endurance : " << pb->getEndurance() << endl; cout << "Force : " << pb->getForce() << endl << endl; pb = new Sorcier(*pb); pb->setClasse("Sorcier"); cout << "Warrior/Witch : " << endl; cout << "Classe : " << pb->getClasse() << endl; cout << "Endurance : " << pb->getEndurance() << endl; cout << "Force : " << pb->getForce() << endl << endl; return 0; }
Dès que je lui ajoute le décorateur Sorcier, les données sont remises à la valeur par défaut. Donc je perd tout ce que Guerrier avait ajouté au Personnage
Merci d'avance
Partager