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/jeu.h

72 lines
1.7 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>
2022-11-17 16:51:56 +01:00
#include "liste.h"
2022-11-18 16:35:36 +01:00
typedef struct joueur Joueur;
2022-11-16 10:31:18 +01:00
/* Une case est soit vide, soit occupé par un des joueurs, noir ou blanc */
2022-11-17 16:59:18 +01:00
enum CASE { VIDE = ' ', BLANC = 'B', NOIR = 'N' };
2022-11-16 10:31:18 +01:00
2022-11-16 15:27:49 +01:00
/* Propriété globale du jeu */
2022-11-17 16:51:56 +01:00
enum PLATEAU { LONGEUR = 8, LARGEUR = 8 };
2022-11-16 15:27:49 +01:00
2022-11-18 16:35:36 +01:00
/* Jeton contenant le type de case (cf. enum CASE) ainsi que la position */
2022-11-16 10:31:18 +01:00
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-19 15:50:18 +01:00
void affiche_jeton(FILE *stream, 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);
2022-11-17 20:24:22 +01:00
/* Lance et joue une partie */
void deroulement_partie(Jeu *jeu);
/* Coups possibles d'un joueur */
struct coups {
Liste *coups;
int taille_liste;
};
typedef struct coups Coups;
2022-11-17 20:53:06 +01:00
/* Vérifie si un joueur peut jouer */
Coups *action_possible_joueur(Jeton *plateau[LONGEUR][LARGEUR], int couleur);
2022-11-17 20:53:06 +01:00
2022-11-18 16:35:36 +01:00
/* Libère les coups possibles de la mémoire */
void free_coups(Coups *coups);
2022-11-17 20:24:22 +01:00
/* Vérifie si une partie est terminée */
int partie_finie(Jeu *jeu);
2022-11-17 16:51:56 +01:00
/* Compte les points, change le résultat avec le gagnant ainsi que les points de
2022-11-17 22:14:04 +01:00
* chacun des joueurs (Gagnant, Perdant)
2022-11-18 16:35:36 +01:00
* Renvoie 0 si égalité entre les 2 joueurs */
int selection_gagnant(Jeu *jeu, int *resultat);
2022-11-19 15:50:18 +01:00
/* Copie le jeu */
Jeu *copie_jeu(Jeu *jeu_source);
/* Libère le jeu de la mémoire */
2022-11-16 10:31:18 +01:00
void free_jeu(Jeu *jeu);
#endif