This repository has been archived on 2022-12-11. You can view files and clone it, but cannot push or open issues or pull requests.
Othello/includes/struct.h

92 lines
2.1 KiB
C
Raw Normal View History

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 */
enum CASE_PLAT { VIDE, BLANC = -2, NOIR = 2 };
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;
/* Créer un nouveau jeton */
Jeton *nouveau_jeton(void);
/* 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 {
Jeton *jeton_act;
struct element *suivant;
};
typedef struct element Element;
/* Créer un nouvel élément pour la liste */
Element *nouvel_element(void);
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 */
void ajoute_liste(Element *element_actuel, Element *nouvel_element);
/* Supprime un élément de la liste */
int supprime_liste(Element *element_actuel, Jeton *jeton);
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);
/* Ajoute un nouveau joueur */
Joueur *ajoute_joueur(int pion, char *nom);
2022-11-16 11:40:06 +01:00
/* 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);
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