#ifndef OTHELLO_JEU_H #define OTHELLO_JEU_H 1 #include #include /* Une case est soit vide, soit occupé par un des joueurs, noir ou blanc */ enum CASE_PLAT { VIDE, BLANC = -2, NOIR = 2 }; /* Propriété globale du jeu */ enum PLATEAU_DATA { LONGEUR = 8, LARGEUR = 8 }; /* Jeton contenant le type de case (CASE_PLAT) ainsi que la position */ struct jeton { int couleur; int pos_i; int pos_j; }; typedef struct jeton Jeton; /* Créer un nouveau jeton */ Jeton *nouveau_jeton(void); /* Ajoute un nouveau jeton */ Jeton *ajoute_jeton(int position_i, int position_j, int couleur); /* Élement de la liste */ struct element { Jeton *jeton_act; struct element *suivant; }; typedef struct element Element; /* Créer un nouvel élément pour la liste */ Element *nouvel_element(void); /* Liste chaînée */ struct list { Element *premier; }; typedef struct list Liste; /* Créer une nouvelle liste vide */ Liste *nouvelle_liste(void); /* Ajoute un élément à la liste */ void ajoute_liste(Element *element_actuel, Element *nouvel_element); /* Supprime un élément de la liste */ int supprime_liste(Element *element_actuel, Jeton *jeton); /* Libère la liste en mémoire */ void free_liste(Liste *liste); /* Joueur contenant le nom, le type ainsi que sa liste de jeton placé sur le * plateau */ struct joueur { char *nom; int couleur; Liste *liste_jeton; int nb_jeton; }; typedef struct joueur Joueur; /* Créer un nouveau joueur */ Joueur *nouveau_joueur(int pion); /* Ajoute un nouveau joueur */ Joueur *ajoute_joueur(int pion, char *nom); /* Ajoute un jeton d'un joueur à la liste */ void ajoute_jeton_liste(Joueur *joueur, Jeton *jeton); /* Supprime le jeton d'un joueur de la liste */ void supprime_jeton_liste(Joueur *joueur, Jeton *jeton); /* Jeu contenant nos 2 joueurs et le plateau de jeu */ struct jeu { Joueur *j1; Joueur *j2; Jeton *plateau[LONGEUR][LARGEUR]; }; typedef struct jeu Jeu; /* Créer une nouvelle partie */ Jeu *nouvelle_partie(void); /* Libère le jeu en mémoire */ void free_jeu(Jeu *jeu); #endif