-
ColinDrieu authoredColinDrieu authored
structures.h 6.21 KiB
/*! \file structures.h
* \brief Fichier contenant les principales structures.
* Definition des structures necessaires :
* SOMMAIRE
* Type_terrain
* Case
* Attaque
* Classe
* Personnage
* Effet
* Competence
* Joueur
* NodeJoueur
* ListJoueur
* Partie
*/
#ifndef STRUCTURES_H_INCLUDED
#define STRUCTURES_H_INCLUDED
/* \def TAILLE_MAX_CARTE */
#define TAILLE_MAX_CARTE 256
/* \def TAILLE_NOMS */
#define TAILLE_NOMS 16
/* \def TAILLE_MAX_GROUPE */
#define TAILLE_MAX_GROUPE 3
/*! \enum boolean
* \brief Definition du type Boolean.
*
* faux=0, vrai=1
*/
typedef enum {faux, vrai} boolean;
/*! \struct Type_terrain structures.h
* \brief Definition de la structure Type_terrain
*/
typedef struct {
char nom[TAILLE_NOMS];/*!< Nom du terrain. */
boolean franchissable;/*!< Le terrain est franchissable ou non par un personnage. */
boolean franchissable_sorts;/*!< Le terrain est franchissable ou non par un sort. */
unsigned short int PD_requis;/*!< Nombre de PD requis pour traverser le terrain. */
}type_terrain;
/*! \struct Case structures.h
* \brief Definition de la structure Case
*/
typedef struct Case{
unsigned short int coord_x; /*!< Abscisse de la case*/
unsigned short int coord_y; /*!< Ordonnee de la case*/
type_terrain *terrain; /*!< Le type de terrain de la case*/
boolean occupee; /*!< La case est occupee ou non par un personnage*/
} Case;
/*! \typedef carte structures.h
* \brief Definition du type Carte
*
* La carte est un tableau de Case de taille TAILLE_MAX_CARTE.
*/
typedef Case carte[TAILLE_MAX_CARTE];
/*! \struct Effet structures.h
* \brief Definition de la structure Personnage.
*/
typedef struct {
unsigned int nb_tours_restants;/*!< Le nombre de tours restants avant que l'effet ne s'estompe*/
unsigned int valeur_degats_duree; /*!< Le nombre de degat de duree subit par tour*/
unsigned int valeur_soin_duree; /*!< Le nombre PV regeneres par tour*/
boolean paralysie; /*!< L'effet provoque ou non une paralysie*/
} Effet;
/*! \struct Attaque structures.h
* \brief Definition de la structure Attaque.
*/
typedef struct {
char nom[TAILLE_NOMS]; /*!< Nom de l'attaque de taille TAILLE_NOMS*/
unsigned short int degats_directs; /*!< Degats direct occasionnes*/
unsigned short int degats_permanents; /*!< Degats permanents occasionnes*/
unsigned short int portee; /*!< Portee en nombre de cases de l'attaque*/
Effet effets[]; /*!< Tableau des effets appliques par l'attaque*/
} Attaque;
/*! \struct Classe structures.h
* \brief Definition de la structure Classe.
*/
typedef struct {
char nom[TAILLE_NOMS]; /*!< Nom de la classe de taille TAILLE_NOMS*/
Attaque* attaques; /*!< Les attaques disponibles pour la classe*/
unsigned short int points_deplacement_max; /*!< Les PD maximums accordés a la classe*/
unsigned short int PV_max; /*!< Les PV maximums accordés a la classe*/
unsigned short int mana_max; /*!< Le mana maximum accordé a la classe*/
} Classe;
/*! \struct Personnage structures.h
* \brief Definition de la structure Personnage.
*/
typedef struct {
char nom[TAILLE_NOMS];/*!< Nom du personnage de taille TAILLE_NOMS*/
Classe classe; /*!< La classe dont depend le personnage */
unsigned short int points_deplacement; /*!< Les PD actuels du personnage*/
unsigned short int PV; /*!< Les PV actuels du personnage*/
unsigned short int mana; /*!< Le mana actuel du personnage*/
Case *position; /*!< La case representant la position actuelle du personnage*/
Effet effets[]; /*!< Un tableau d'effets representant les effets affectant le personnage*/
} Personnage;
/*! \struct Competence structures.h
* \brief Definition de la structure Competence.
*
* Les competences sont representees sous forme d'arbre chaque
* parent ayant 2 enfants.
*/
typedef struct Competence{
unsigned short int id; /*!< Un entier qui represente la competence*/
char nom[TAILLE_NOMS]; /*!< Nom de la competence de taille TAILLE_NOMS*/
unsigned short int etage; /*!< Etage de la competence dans l'arbre*/
struct competence *enfant_gauche; /*!< Pointeur vers le premier enfant de la competence*/
struct competence *enfant_droit; /*!< Pointeur vers le deuxieme enfant de la competence*/
struct effet_competence *effet; /*!< Pointeur vers les effets de la competence*/
boolean connu; /*!< La competence est connue ou non*/
}Competence;
/*! \struct Effet_competence structures.h
* \brief Definition de la structure effet_competence
*/
typedef struct Effet_competence{
unsigned short int id; /*!< Un entier qui represente la competence*/
char nom[TAILLE_NOMS]; /*!< Nom de la competence de taille TAILLE_NOMS*/
/* effets à définir */
}Effet_competence;
/*! \struct Joueur structures.h
* \brief Definition de la structure Joueur
*
* Un Joueur est compose principalement d'un nom et d'un tableau de Personnages.
* Il reste a ajouter des attributs tels que l'arbre de competence.
*/
typedef struct Joueur{
char nomJoueur[TAILLE_NOMS]; /*!< Le nom identifiant le Joueur*/
Personnage * groupe[TAILLE_MAX_GROUPE];/*!< Les personnages du joueur qui prennent part à la partie.*/
} Joueur;
/*! \struct NodeJoueur structures.h
* \brief Definition de la structure NodeJoueur
*
* NodeJoueur est un noeud definit pour gerer une liste de Joueur
*/
typedef struct NodeJoueur{
Joueur * j; /*!< valeur du noeud*/
struct NodeJoueur * next;/*!< Pointeur vers le noeud suivant*/
} NodeJoueur;
/*! \struct ListJoueur structures.h
* \brief Definition de la structure ListJoueur
*
* ListJoueur est une liste de noeuds pointant vers des Joueur
*/
typedef struct ListJoueur{
NodeJoueur * firstNodeJoueur; /*!<Premier noeud*/
NodeJoueur * currentNodeJoueur; /*!<Noeud courant*/
NodeJoueur * lastNodeJoueur; /*!<Dernier noeud*/
}ListJoueur;
/*! \struct Partie structures.h
* \brief Definition de la structure Partie
*
* Contient les informations concernant la partie telles que la liste des joueurs participants
* le nombre de tours. Cette structure permet de gérer les tours
* Peut eventuellement contenir l'information Carte si c'est utile.
*/
typedef struct Partie{
ListJoueur participants; /*!< La liste de joueurs prennant parts à la partie*/
int nbTours; /*!<Le nombre de tours actuel*/
}Partie;
#endif