add structs
This commit is contained in:
parent
1343ebcb3f
commit
96115462b7
5 changed files with 163 additions and 5 deletions
|
@ -1,7 +1,4 @@
|
||||||
#ifndef OTHELLO_MAIN_H
|
#ifndef OTHELLO_MAIN_H
|
||||||
#define OTHELLO_MAIN_H 1
|
#define OTHELLO_MAIN_H 1
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
76
includes/struct.h
Normal file
76
includes/struct.h
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
#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 };
|
||||||
|
|
||||||
|
/* 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
|
57
src/jeu.c
Normal file
57
src/jeu.c
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
#include "../includes/struct.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
25
src/liste.c
Normal file
25
src/liste.c
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#include "../includes/struct.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
|
@ -1,7 +1,10 @@
|
||||||
#include "../includes/main.h"
|
#include "../includes/main.h"
|
||||||
|
#include "../includes/struct.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(void) {
|
||||||
printf("Othello\n");
|
Jeu *jeu = nouvelle_partie();
|
||||||
|
|
||||||
|
free_jeu(jeu);
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue