IA: jeu de Reversi ------------------ Le but de ce projet est d'implémenter plusieurs mécanisme de jeu (humain et intelligence artificielle) pour le jeu de Reversi ## Installation Le programme utilise des outils standard de Python installé de base : `random`, `math`, `argpase` et `logging`. Le project est fourni avec un shell *Nix* dans le répertoire `src` ## Utilisation le programme propose un emsemble d'options en ligne de commande afin de définir les options du jeu comme le choix des implementations de jeu (aléatoine, MinMax etc.) ou encore les paramètres (profondeur de recherche). Une aide est intégrée au programme via la commande `./game.py -h`. Voici quelques exemple de lancement: ```shell # Lancement de base: les deux joueurs jouent avec le moteur aléatoire et les options de base: ./game.py # joueur noir humain et joueur blanc MinMax avec une profondeur de 5 ./game.py -be human -we minmax --white-depth-exploration 5 ``` Voici la liste des options : * `-be` | `--black-player-engine`: moteur utilisé par le joueur avec les pions noirs * `-we` | `--white-player-engine`: moteur utilisé par le joueur avec les pions blancs * `-bd` | `--black-depth-exploration`: niveau d'eploration de l'arbre de jeu pour le joueur au pions noirs, valable pour les moteurs `minmax` et `alphabeta` * `-wd` | `--white-depth-exploration`: niveau d'eploration de l'arbre de jeu pour le joueur au pions noirs, valable pour les moteurs `minmax` et `alphabeta` * `-bh` | `--black-heuristic-engine`: moteur heuristique utilisé pour l'exploration de l'arbre de jeu du joueur noir (valable pour les moteur de jeu `minmax` et `alphabeta`) * `-wh` | `--black-heuristic-engine`: moteur heuristique utilisé pour l'exploration de l'arbre de jeu du joueur blanc (valable pour les moteur de jeu `minmax` et `alphabeta`) L'affichage verbeux est activé avec `-V` et les informations de débogage sont affichée avec l'option `-d`. ## Choix d'implémentation ### Classes PlayerEngine Définies dans le fichier `./src/classes/Engines.py`, les classes utilisées h eritent de la classe de base `PlayerEngines` : ```python class PlayerEngine(Object): def __init__(self, logger, options): def get_move(self, board): class MinmaxPlayerEngine(PlayerEngine): def get_move(board): class RandomPlayerEngnine(PlayerEngine): def get_move(board): ``` Il est ainsi plus aisé de tester les moteur dans notre programme de base.