/*! \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