You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

48 lines
1.6 KiB

#ifndef GAMESTATE_H
#define GAMESTATE_H
#ifndef DAMESCHINOISES_H
#define DAMESCHINOISES_H
#include "dameschinoises.h"
#endif
enum Direction
{
EAST,
SOUTH_EAST,
SOUTH_WEST,
WEST,
NORTH_WEST,
NORTH_EAST
};
typedef enum Direction Direction;
// Permet de passer de la notation matrice à la notation tableau du plateau
int getHoleIdFromCoordinates(const int x, const int y);
// Permet de passer de la notation tableau à la notation matrice du plateau
void getHoleCoordinatesFromId(int id, int* x, int* y);
// Retourne le numéro de la case voisine d'une case dans la direction spécifiée
int getNeighbour(const int hole, Direction dir);
/* Replit neighbours avec les 6 cases voisines d'une case spécifiée.
-1 correspond à une case qui n'existe pas. */
void getNeighbours(const int hole, int* neighbours);
// Remplit neighbours avec les 6 cases situées derrière les voisins d'une case (c'est-à-dire les voisins de distance 2)
void getNeighbours2(const int hole, int* neighbours);
// Stocke l'emplacement de tous les pions d'un joueur dans pieces
void findPlayerPieces(const SGameState* state, const EPlayer color, int pieces[10]);
/* Liste les cases atteignables avec un mouvement simple ou un seul saut, et stocke le résultat dans holes.
-1 représente une case qui n'est pas atteignable. */
void findReachableHoles(const SGameState* state, const int start, int* holes);
/* Vérifie si une case fait partie d'une branche de l'étoile.
Retourne 0 si la case ne fait pas partie d'une branche.
Retourne le numéro du joueur à qui appartient la branche dans les autres cas. */
int isStarBranch(const int hole);
#endif