Récréation


Règles du jeu :
Awari (Awalé, Wari ...) est un vieux jeu de stratégie d'origine africaine dont les règles varient selon les régions. Il se pratique sur un plateau de 14 cases (Plateaux en bois vendus dans les lieux touristiques par des vendeurs à la sauvette africains ou dans des magasins spécialisés). Chaque joueur possède 6 pots et un wari dans lequel il cherche à engranger des pions (à l'origine fèves ou cailloux).
A tour de rôle, chaque joueur égrène le contenu de l'un de ses pots, pion par pion, dans ses cases et les cases de l'adversaire en tournant dans le sens indiqué par la flèche. Le wari adverse est omis dans cette distribution.
Si le dernier pion de la distribution tombe dans son propre wari, le joueur doit rejouer.
Si le dernier pion tombe dans une case vide de son tableau et si la case opposée de l'adversaire n'est pas vide, il y a capture des pions de cette case vers le wari du joueur.
La partie se termine quand un plateau est totalement vide. L'adversaire ajoute les pions restant dans son tableau à son wari. Le vainqueur est celui qui possède le plus de pions.
Stratégie :
Elle varie avec le nombre de pions placés initialement dans les pots. Plus ce nombre est élevé plus le jeu devient difficile car dans la distribution on peut faire plus d'un tour complet. Certaines configurations sont a priori intéressantes : S'il y a 13 pions dans la case jouée, il y a systématiquement capture. S'il y a 1 pion (modulo 13) dans la case 1, on rejoue ; s'il y a 2 pions (modulo 13) dans la case 2, on rejoue ...
Il faut surveiller les cases vides du plateau adverse car elles peuvent entraîner une capture. En fin de partie l'accumulation des pions dans son plateau est souvent profitable. Il faut jouer de nombreuses parties avant de trouver des stratégies gagnantes au terme de la partie.


Utilisation
Un click sur le bouton [Nouveau] initialise le plateau de jeu avec le nombre de pions affiché dans la zone de texte et le niveau du programme.
Ce niveau (qui correspond à la profondeur d'analyse) est modifiable avec les boutons [+] et [−] . Le niveau est compris entre 0 et 6. Pour le niveau 0, le programme joue de façon aléatoire.
Pour jouer, il suffit de cliquer avec le bouton gauche de la souris dans la case que l'on veut vider.
Pour laisser au joueur la possibilité de connaître le coup joué par le programme j'ai introduit une pause. Pour afficher le résultat du coup, le joueur doit presser une touche du clavier ou cliquer avec le bouton droit de la souris. Pour que ces actions soient prises en compte, il faut que le curseur de la souris soit placé dans la surface de l'applet.
Attention : aux niveaux 5 et 6 et avec beaucoup de pions la durée de réponse du programme peut atteindre quelques dizaines de secondes voire quelques minutes. Cette durée de réponse étant a priori inconnue, je n'ai pas pu placer une barre de progression pour informer le joueur de la durée de l'attente.

Le programme fait une analyse exhaustive de son tableau de jeu . Au niveau 1, il joue ce qu'il estime être le meilleur coup. Au niveau 2, il envisage pour chaque coup possible toutes les réponses de l'adversaire (en supposant que celui-ci applique la même stratégie que lui) avant de jouer. Aux niveaux impairs, il est agressif et aux niveaux pairs plutôt défensif. La procédure de recherche du meilleur coup étant récursive, il faut gérer l'empilage et le dépilage des variables pertinentes. Pour choisir la fonction d'évaluation, j'ai fait jouer le programme contre lui-même avec des fonctions différentes pour chaque adversaire. J'ai trouvé qu'en moyenne la meilleure fonction était la différence (signée) du contenu des waris. Il est donc possible de leurrer le programme en utilisant une autre méthode de jeu.
J'ai limité la profondeur d'analyse à 6 car au-delà, même avec une machine puissante, le temps de réponse devient trop important.