2022-11-16 10:31:18 +01:00
|
|
|
#ifndef OTHELLO_JEU_H
|
|
|
|
#define OTHELLO_JEU_H 1
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
/* Une case est soit vide, soit occupé par un des joueurs, noir ou blanc */
|
2022-11-16 16:29:39 +01:00
|
|
|
enum CASE_PLAT { VIDE, BLANC, NOIR };
|
2022-11-16 10:31:18 +01:00
|
|
|
|
2022-11-16 15:27:49 +01:00
|
|
|
/* Propriété globale du jeu */
|
|
|
|
enum PLATEAU_DATA { LONGEUR = 8, LARGEUR = 8 };
|
|
|
|
|
2022-11-16 10:31:18 +01:00
|
|
|
/* 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;
|
|
|
|
|
|
|
|
/* Ajoute un nouveau jeton */
|
|
|
|
Jeton *ajoute_jeton(int position_i, int position_j, int couleur);
|
|
|
|
|
2022-11-16 15:35:32 +01:00
|
|
|
/* Élement de la liste */
|
2022-11-16 10:31:18 +01:00
|
|
|
struct element {
|
2022-11-16 16:29:39 +01:00
|
|
|
Jeton *jeton;
|
2022-11-16 10:31:18 +01:00
|
|
|
struct element *suivant;
|
|
|
|
};
|
|
|
|
typedef struct element Element;
|
|
|
|
|
|
|
|
/* Créer un nouvel élément pour la liste */
|
2022-11-16 16:29:39 +01:00
|
|
|
Element *nouvel_element(Jeton *jeton);
|
2022-11-16 10:31:18 +01:00
|
|
|
|
2022-11-16 11:40:06 +01:00
|
|
|
/* Liste chaînée */
|
2022-11-16 10:31:18 +01:00
|
|
|
struct list {
|
|
|
|
Element *premier;
|
|
|
|
};
|
|
|
|
typedef struct list Liste;
|
|
|
|
|
2022-11-16 11:40:06 +01:00
|
|
|
/* Créer une nouvelle liste vide */
|
2022-11-16 10:31:18 +01:00
|
|
|
Liste *nouvelle_liste(void);
|
|
|
|
|
2022-11-16 11:40:06 +01:00
|
|
|
/* Ajoute un élément à la liste */
|
2022-11-16 16:29:39 +01:00
|
|
|
void ajoute_liste(Liste *liste, Element *nouvel_element);
|
2022-11-16 11:40:06 +01:00
|
|
|
|
|
|
|
/* Supprime un élément de la liste */
|
2022-11-16 16:29:39 +01:00
|
|
|
void supprime_liste(Element *element_actuel, Jeton *jeton);
|
2022-11-16 11:40:06 +01:00
|
|
|
|
2022-11-16 10:31:18 +01:00
|
|
|
/* 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);
|
|
|
|
|
2022-11-16 16:29:39 +01:00
|
|
|
/* Ajoute un jeton d'un joueur */
|
|
|
|
void ajoute_jeton_joueur(Joueur *joueur, Jeton *jeton);
|
2022-11-16 11:40:06 +01:00
|
|
|
|
2022-11-16 16:29:39 +01:00
|
|
|
/* Retire le jeton d'un joueur */
|
|
|
|
void retire_jeton_joueur(Joueur *joueur, Jeton *jeton);
|
2022-11-16 11:40:06 +01:00
|
|
|
|
2022-11-16 10:31:18 +01:00
|
|
|
/* Jeu contenant nos 2 joueurs et le plateau de jeu */
|
|
|
|
struct jeu {
|
|
|
|
Joueur *j1;
|
|
|
|
Joueur *j2;
|
2022-11-16 15:27:49 +01:00
|
|
|
Jeton *plateau[LONGEUR][LARGEUR];
|
2022-11-16 10:31:18 +01:00
|
|
|
};
|
|
|
|
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
|