ElderInternalIgnition  0.0001
structures.h
1 /* \file structures.h
2  * \brief Fichier contenant les principales structures.
3  *
4  * Definition des structures necessaires
5  *
6  * SOMMAIRE
7  * Type_terrain
8  * Case
9  * Attaque
10  * Classe
11  * Personnage
12  * Effet
13  * Competence
14  * Joueur
15  * NodeJoueur
16  * ListJoueur
17  * Partie
18  */
19 
20 #ifndef STRUCTURES_H_INCLUDED
21 #define STRUCTURES_H_INCLUDED
22 
23 /* \def TAILLE_MAX_CARTE */
24 #define TAILLE_MAX_CARTE 256
25 /* \def TAILLE_NOMS */
26 #define TAILLE_NOMS 16
27 /* \def TAILLE_MAX_GROUPE */
28 #define TAILLE_MAX_GROUPE 3
29 
30 /* \enum boolean
31  * \brief Definition du type Boolean.
32  *
33  * faux=0, vrai=1
34  */
35 typedef enum {faux, vrai} boolean;
36 
37 /* \struct Type_terrain structures.h
38  * \brief Definition de la structure Type_terrain
39  */
40 typedef struct {
41  char nom[TAILLE_NOMS];/*< Nom du terrain. */
42  boolean franchissable;/*< Le terrain est franchissable ou non par un personnage. */
43  boolean franchissable_sorts;/*< Le terrain est franchissable ou non par un sort. */
44  unsigned short int PD_requis;/*< Nombre de PD requis pour traverser le terrain. */
46 
47 /* \struct Case structures.h
48  * \brief Definition de la structure Case
49  */
50 typedef struct Case{
51  unsigned short int coord_x; /*< Abscisse de la case*/
52  unsigned short int coord_y; /*< Ordonnee de la case*/
53  type_terrain *terrain; /*< Le type de terrain de la case*/
54  boolean occupee; /*< La case est occupee ou non par un personnage*/
55 } Case;
56 
57 /* \typedef carte structures.h
58  * \brief Definition du type Carte
59  *
60  * La carte est un tableau de Case de taille TAILLE_MAX_CARTE.
61  */
62 typedef Case carte[TAILLE_MAX_CARTE];
63 
64 /* \struct Effet structures.h
65  * \brief Definition de la structure Personnage.
66  */
67 typedef struct {
68  unsigned int nb_tours_restants;/*< Le nombre de tours restants avant que l'effet ne s'estompe*/
69  unsigned int valeur_degats_duree; /*< Le nombre de degat de duree subit par tour*/
70  unsigned int valeur_soin_duree; /*< Le nombre PV regeneres par tour*/
71  boolean paralysie; /*< L'effet provoque ou non une paralysie*/
72 } Effet;
73 
74 /* \struct Attaque structures.h
75  * \brief Definition de la structure Attaque.
76  */
77 typedef struct {
78  char nom[TAILLE_NOMS]; /*< Nom de l'attaque de taille TAILLE_NOMS*/
79  unsigned short int degats_directs; /*< Degats direct occasionnes*/
80  unsigned short int degats_permanents; /*< Degats permanents occasionnes*/
81  unsigned short int portee; /*< Portee en nombre de cases de l'attaque*/
82  Effet effets[]; /*< Tableau des effets appliques par l'attaque*/
83 } Attaque;
84 
85 /* \struct Classe structures.h
86  * \brief Definition de la structure Classe.
87  */
88 typedef struct {
89  char nom[TAILLE_NOMS]; /*< Nom de la classe de taille TAILLE_NOMS*/
90  Attaque* attaques; /*< Les attaques disponibles pour la classe*/
91  unsigned short int points_deplacement_max; /*< Les PD maximums accordés a la classe*/
92  unsigned short int PV_max; /*< Les PV maximums accordés a la classe*/
93  unsigned short int mana_max; /*< Le mana maximum accordé a la classe*/
94 } Classe;
95 
96 /* \struct Personnage structures.h
97  * \brief Definition de la structure Personnage.
98  */
99 typedef struct {
100  char nom[TAILLE_NOMS];/*< Nom du personnage de taille TAILLE_NOMS*/
101  Classe classe; /*< La classe dont depend le personnage */
102  unsigned short int points_deplacement; /*< Les PD actuels du personnage*/
103  unsigned short int PV; /*< Les PV actuels du personnage*/
104  unsigned short int mana; /*< Le mana actuel du personnage*/
105  Case *position; /*< La case representant la position actuelle du personnage*/
106  Effet effets[]; /*< Un tableau d'effets representant les effets affectant le personnage*/
107 } Personnage;
108 
109 /* \struct Competence structures.h
110  * \brief Definition de la structure Competences.
111  *
112  * Les competences sont representees sous forme d'arbre chaque
113  * parent ayant 2 enfants.
114  */
115 typedef struct Competence{
116  unsigned short int id; /*< Un entier qui represente la competence*/
117  char nom[TAILLE_NOMS]; /*< Nom de la competence de taille TAILLE_NOMS*/
118  unsigned short int etage; /*< Etage de la competence dans l'arbre*/
119  struct competence *enfant_gauche; /*< Pointeur vers le premier enfant de la competence*/
120  struct competence *enfant_droit; /*< Pointeur vers le deuxieme enfant de la competence*/
121  struct effet_competence *effet; /*< Pointeur vers les effets de la competence*/
122  boolean connu; /*< La competence est connue ou non*/
123 }Competence;
124 
125 /* \struct Effet_competence structures.h
126  * \brief Definition de la structure effet_competence
127  */
128 typedef struct Effet_competence{
129  unsigned short int id; /*< Un entier qui represente la competence*/
130  char nom[TAILLE_NOMS]; /*< Nom de la competence de taille TAILLE_NOMS*/
131  /* effets à définir */
132 
134 
135 /* \struct Joueur structures.h
136  * \brief Definition de la structure Joueur
137  *
138  * Un Joueur est compose principalement d'un nom et d'un tableau de
139  * Personnage
140  * Il reste a ajouter des attributs tels que l'arbre de competence.
141  */
142 
143  typedef struct Joueur{
144  char nomJoueur[TAILLE_NOMS];
145  Personnage * groupe[TAILLE_MAX_GROUPE];
146  } Joueur;
147 
148  /* \struct NodeJoueur structures.h
149  * \brief Definition de la structure NodeJoueur
150  *
151  * NodeJoueur est un noeud definit pour gerer une liste de Joueur
152  */
153  typedef struct NodeJoueur{
154  Joueur * j;
155  struct NodeJoueur * next;
156  } NodeJoueur;
157 
158 /* \struct ListJoueur structures.h
159  * \brief Definition de la structure ListJoueur
160  *
161  * ListJoueur est une liste de noeuds pointant vers des Joueur
162  */
163  typedef struct ListJoueur{
164  NodeJoueur * firstNodeJoueur;
165  NodeJoueur * currentNodeJoueur;
166  NodeJoueur * lastNodeJoueur;
167  }ListJoueur;
168 
169  /* \struct Partie structures.h
170  * \brief Definition de la structure Partie
171  *
172  * Contient les informations concernant la partie telles que la liste des joueurs participants
173  * le nombre de tours. Cette structure permet de gérer les tours
174  * Peut eventuellement contenir l'information Carte si c'est utile.
175  */
176  typedef struct Partie{
177  ListJoueur participants;
178  int nbTours;
179  }Partie;
180 
181 
182 
183 #endif
Definition: competence.h:25
Definition: structures.h:143
Definition: structures.h:153
Definition: structures.h:88
Definition: structures.h:99
Definition: structures.h:115
Definition: structures.h:163
Definition: structures.h:40
Definition: structures.h:128
Definition: structures.h:50
Definition: structures.h:67
Definition: structures.h:77
Definition: structures.h:176