From 96115462b7588a82af7163025a283bef86eba871 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Wed, 16 Nov 2022 10:31:18 +0100 Subject: [PATCH] add structs --- includes/main.h | 3 -- includes/struct.h | 76 +++++++++++++++++++++++++++++++++++++++++++++++ src/jeu.c | 57 +++++++++++++++++++++++++++++++++++ src/liste.c | 25 ++++++++++++++++ src/main.c | 7 +++-- 5 files changed, 163 insertions(+), 5 deletions(-) create mode 100644 includes/struct.h create mode 100644 src/jeu.c create mode 100644 src/liste.c diff --git a/includes/main.h b/includes/main.h index 8fc5d37..005ae83 100644 --- a/includes/main.h +++ b/includes/main.h @@ -1,7 +1,4 @@ #ifndef OTHELLO_MAIN_H #define OTHELLO_MAIN_H 1 -#include -#include - #endif diff --git a/includes/struct.h b/includes/struct.h new file mode 100644 index 0000000..1b5f672 --- /dev/null +++ b/includes/struct.h @@ -0,0 +1,76 @@ +#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 }; + +/* 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); + +/* Element 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 */ +struct list { + Element *premier; +}; +typedef struct list Liste; + +/* Créer une nouvelle liste */ +Liste *nouvelle_liste(void); + +/* 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); + +/* Jeu contenant nos 2 joueurs et le plateau de jeu */ +struct jeu { + Joueur *j1; + Joueur *j2; + Jeton *plateau[8][8]; +}; +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 diff --git a/src/jeu.c b/src/jeu.c new file mode 100644 index 0000000..231cc52 --- /dev/null +++ b/src/jeu.c @@ -0,0 +1,57 @@ +#include "../includes/struct.h" +#include + +Jeton *nouveau_jeton(void) { + Jeton *jeton = malloc(sizeof(Jeton)); + jeton->couleur = NOIR; + jeton->pos_i = -1; + jeton->pos_j = -1; + + return jeton; +} +Jeton *ajoute_jeton(int pos_i, int pos_j, int couleur) { + Jeton *jeton = malloc(sizeof(Jeton)); + jeton->couleur = couleur; + jeton->pos_i = pos_i; + jeton->pos_j = pos_j; + + return jeton; +} + +Joueur *nouveau_joueur(int pion) { + Joueur *joueur = malloc(sizeof(Joueur)); + joueur->nom = pion > 0 ? "NOIR" : "BLANC"; + joueur->couleur = pion; + joueur->liste_jeton = nouvelle_liste(); + joueur->nb_jeton = 0; + + return joueur; +} + +Joueur *ajoute_joueur(int pion, char *n) { + Joueur *joueur = malloc(sizeof(Joueur)); + joueur->nom = n; + joueur->couleur = pion; + joueur->liste_jeton = nouvelle_liste(); + joueur->nb_jeton = 0; + + return joueur; +} + +Jeu *nouvelle_partie(void) { + Jeu *jeu = malloc(sizeof(Jeu)); + jeu->j1 = nouveau_joueur(NOIR); + jeu->j2 = nouveau_joueur(BLANC); + + return jeu; +} + +void free_jeu(Jeu *jeu) { + free_liste(jeu->j1->liste_jeton); + free(jeu->j1); + + free_liste(jeu->j2->liste_jeton); + free(jeu->j2); + + free(jeu); +} diff --git a/src/liste.c b/src/liste.c new file mode 100644 index 0000000..7951a19 --- /dev/null +++ b/src/liste.c @@ -0,0 +1,25 @@ +#include "../includes/struct.h" +#include + +Element *nouvel_element(void) { + Element *element = malloc(sizeof(Element)); + element->jeton_act = NULL; + element->suivant = NULL; + return element; +} + +Liste *nouvelle_liste(void) { + Liste *liste = malloc(sizeof(Liste)); + liste->premier = NULL; + return liste; +} + +void free_liste(Liste *liste) { + Element *actuel = liste->premier; + while (actuel) { + Element *suivant = actuel->suivant; + free(actuel); + actuel = suivant; + } + free(liste); +} diff --git a/src/main.c b/src/main.c index bd8cf72..fe06aea 100644 --- a/src/main.c +++ b/src/main.c @@ -1,7 +1,10 @@ #include "../includes/main.h" +#include "../includes/struct.h" -int main(int argc, char *argv[]) { - printf("Othello\n"); +int main(void) { + Jeu *jeu = nouvelle_partie(); + + free_jeu(jeu); return EXIT_SUCCESS; }