diff --git a/README.md b/README.md index bcae4fa..6a86f74 100644 --- a/README.md +++ b/README.md @@ -44,16 +44,21 @@ Voici la liste des options : * `-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`) + * `--weight`: scores utilisés pour le calcul des heuristiques pour les moteurs + `weight` et `full`. L'affichage verbeux est activé avec `-V` et les informations de débogage sont affichée avec l'option `-d`. ## Choix d'implémentation +J'ai avant tout privilégié la personnalisation des différentes paramètres des +différents moteurs composant le jeu. + ### Classes PlayerEngine -Définies dans le fichier `./src/classes/Engines.py`, les classes utilisées h -eritent de la classe de base `PlayerEngines` : +Définies dans le fichier `./src/classes/Engines.py`, les classes utilisées +héritent de la classe de base `PlayerEngines` : ```python class PlayerEngine(Object): @@ -63,8 +68,38 @@ class PlayerEngine(Object): class MinmaxPlayerEngine(PlayerEngine): def get_move(board): -class RandomPlayerEngnine(PlayerEngine): +class RandomPlayerEngine(PlayerEngine): def get_move(board): ``` Il est ainsi plus aisé de tester les moteur dans notre programme de base. + +### Classes HeuristicsEngine + +Plusieurs classes impémentent plusieurs méthodes pour le calcul de +l'heuristique. Comme nous l'avons vu, les moteurs peuvent être choisis en ligne +de commande et de façon indépendante pour les joueurs blanc et noir. + +Trois implementation sond disponibles: + + 1. `ScoreHeuristicEngine`: l'heuristique se sert du score (comptage des pièces + sur le tableau) via la méthode `Board.heuristique`; + 2. `WeightHeuristicEngine`: ici on se sert de la place des pièces sur le + tableau. Chaque emplacement vaut un nombre de points; + 3. `FullHeuristicEngine`: c'est la somme de `Board.heuristique()` et du calcul + des poids. + +#### Retour sur le calcul des poids. + +Afin de définir le poids, je me suis servi de la page *Stratégie et bases de +Reversi* sur le site Cool Math Games ([lien][reversi]). Voici les poids par +ordre d'importance : + + 1. Les coins représentent les parties les plus importantes; + 2. Ensuite vient les bords; + 3. Et enfin les coins. + +Les poids affectés sont personnalisable via l'options `--weight`, par défaut +nous avons 2, 10 et 25. + +[reversi]:https://www.coolmathgames.com/blog/how-to-play-reversi-basics-and-best-strategies