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.
 
 
 
 

33 lines
1.1 KiB

#ifndef STRATEGY_H
#define STRATEGY_H
#include "gamestate.h"
#include "tree.h"
// Structure stockant un choix possible de mouvement
struct Choice
{
int* move;
int size;
int score;
};
typedef struct Choice Choice;
#include "list.h"
// Liste tous les déplacements possibles pour une pièce, et les retourne sous forme d'arbre
Tree* findPieceValidMoves(const SGameState* state, const int hole);
/* Liste tous les déplacements possibles pour un joueur, et place ces mouvements dans moves.
Retourne le nombre de pièces qui peuvent bouger. */
int findAllPiecesValidMoves(const SGameState* state, const EPlayer color, Tree** moves);
/* Calcule le score d'un mouvement.
Le score est un entier calculé en fonction de plusieurs critères.
Le mouvement retenu par la stratégie est celui dont le score est le plus important. */
int moveScore(Choice move, const SGameState* const state);
/* Retourne le meilleur mouvement possible dans la situation actuelle, d'après les critères de choix de la stratégie. */
Choice getBestMove(Tree* moves[], const SGameState* const state);
#endif