Petite passe pour virer la perte de mémoire :-)
On est passé de :
à :==7632== HEAP SUMMARY:
==7632== in use at exit: 1,779,185 bytes in 21,273 blocks
==7632== total heap usage: 170,757 allocs, 149,484 frees, 92,409,946 bytes allocated
Ensuite, j'ai ajouté l'information du joueur à l'affichage si on veut, j'ajouterai bientôt un groupe de deux personnages et j'ajouterai cette fonctionalité.==7484== HEAP SUMMARY:
==7484== in use at exit: 1,260,622 bytes in 2,382 blocks
==7484== total heap usage: 101,041 allocs, 98,659 frees, 86,652,923 bytes allocated
On a aussi un gestionnaire d'armes, qui fonctionne comme un singleton. Partout dans le programme, on pourra accéder à une arme utilisant :
Donc par exemple, un joueur a un fichier de configuration donné par :
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 class Weapon_Factory { public: static const Weapon *getWeapon (std::string name); static void loadWeapons (std::string); static void loadWeapons (LineParser &lp); protected: Weapon_Factory(void); // Protected constructor ~Weapon_Factory(void); Weapon_Factory(const Weapon_Factory&); // Prevent copy-construction Weapon_Factory& operator=(const Weapon_Factory&); // Prevent assignment static Weapon_Factory* getInst (void); //Hashmap std::map<std::string, Weapon*> weapons; static Weapon_Factory *ourInst; };
Pour l'arme, il suffit de faire ceci:#File for one character
#Name of character
Zeroc
#Sprite of character
data/fighter.txt
#Attributes: STRENGH, DEXTERITY, INTELLIGENCE, WISDOM, LUCK, CHARISMA, CONSTITUTION
15
16
12
11
9
15
13
#Attributes modifiers: STRENGH, DEXTERITY, INTELLIGENCE, WISDOM, LUCK, CHARISMA, CONSTITUTION
0
0
0
0
0
0
0
#hit points and max
200
200
#mana and max
50
50
#weapon
Sword
et bam ! on a une arme !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 //Get weapon name or empty if none std::string weapon_name = lp.getNextLine (); if (weapon_name.compare ("empty") == 0) { weapon = NULL; } else { const Weapon *w = Weapon_Factory::getWeapon (weapon_name); weapon = w; }
L'avantage ? Tout est centralisé en un seul fichier de configuration, on peut utiliser du texte ou un identifiant pour l'arme. Pour l'instant, une arme est définie par un dommage intermédiaire qui pourra se modifier dépendant de la force du joueur.
Je n'ai pas encore la classe des persos (Guerrier, etc.). Ce sera pour plus tard. Pour le moment, je travaille d'abord sur l'interface et la gestion du groupe.
Je vais attaquer, l'affichage de chaque perso du groupe, l'affichage de l'or, de la nourriture, des objets du groupe, comment équiper les armes/armures.
Une fois cette gestion de base en place, j'attaquerai le fait que certaines classes ne peuvent pas équiper certaines choses :-)
Ensuite, on pourra attaquer les magasins et l'achat/vente des objets !
Jc
Partager