Abalone Master

Le jeu

Cette version PC est tiré d'Abalone, un jeu de stratégie sur plateau. La version plateau est disponible pour environ 180 F.
L'adresse de la société éditrice du JEU est :
ABALONE : 15 rue du Buisson aux Fraises, 91300 MASSY, FRANCE
RCS Corbeil B 343 873 741
Le site Web de la société

Mais si vous voulez vous procurez le jeu sur plateau, allez dans un bon magasin de jeu, ou dans des grandes surfaces, vous devriez facilement le trouver.

Les règles sont très faciles à apprendre et sont disponibles à l'adresse suivante : Règle du jeu

Le logiciel

Il faut impérativement une résolution 800*600, et parfois il est nécessaire d'utiliser de petites polices.

Télécharger Abalone Master (223 Ko (freeware)

Cette version sera un jour (quand ??) améliorée (elle est pour l'instant jouable, mais il manque des niveaux, l'aide en ligne et d'autres fonctionnalités)

L'interface graphique se présente comme ceci 

La Programmation d'Abalone

     Avant toute chose, je vous rappelle que mon exposé sera beaucoup plus prudent que dans le cas de la programmation des jeux d'échecs, car Abalone est moins mon domaine (je ne joue personnellement quasiment jamais) que les échecs, et que je n'ai trouvé aucune information sur la programmation de ce jeu sur Internet. Un des moyens d'en savoir davantage serait d'étudier les sources du jeu KAbalone disponible sous Linux D'autres part, il est intéressant pour les débutants en programmation des jeux de stratégies de lire mon article sur la programmation des jeux d'échecs avant d'entamer celui-ci, car il est beaucoup moins fourni en explications

On va essayer de garder un plan similaire à celui du jeu d'échecs

Codage de l'échiquier

    Le codage décrit ci-dessous est une version améliorée de celui encore utilisé sur mon jeu.

    Tout d'abord, au niveau du codage:il y a 61 cases, ce qui permet l'utilisation d'un tableau linéaire de 64 cases. Dans les 61 premières (notée de 0 à 60), on code s'il y a un pion blanc (=1), si la case est vide (=0) ou si la case est occupée par un pion noir (= -1). l'élément 62 sera marqué comme le nombre de pions blancs sortis de l'échiquier (pour aller plus vite lors de l'évaluation) et le nombre de pions noirs sortis de l'échiquier restants sur l'élément 63. L'élément 64 sera réservé à la valeur du trait, c'est-à-dire 1 (blancs doivent jouer) ou -1 (noirs doivent jouer). Vous devez numéroté ces cases de 0 à 63 car vous n'allez utiliser que 6 bits pour les coder, et si vous numérotez de 1 à 64, vous aurez besoin de 7 bits (car l'étendue permise par 6 bits est 0..63 et non 1..64). Maintenant si l'occupation mémoire vous est égale, vous avez le choix.

    Voilà concernant le codage : ensuite vous allez devoir savoir (car il y a des irrégularité du fait que les colonnes ne correspondent pas à l'abalone par rapport au jeu d'échec) quel est le successeur de la case dans une direction. Je m'explique. Si vous avancez un groupe de pions, vous l'avancez dans une direction, or comme votre matrice n'est absolument pas représentative de la réalité du plateau (vous vous efforcerez cependant de ne pas assigner les numéros de 0 à 60 au hasard), vous avez besoin de savoir quelle est la prochaine case : ex la case A2 est dans mon jeu (voir image d'Abalone Master) le successeur de A1 dans la direction Nord-Est. A5 n'a pas de successeur dans la direction Nord-Est.  Vous aurez donc besoin d'un tableau à 61 lignes (0..60) et 6 colonnes (car il y a 6 directions possibles au maximum) pour décrire l'ensembles des successeurs (ou case suivante dans une direction donnée) de chaque case
    Donc, maintenant, dans votre générateur de coup, vous allez balayer votre échiquier, sélectionner les déplacements de 1 pion à la fois, regardez toutes les cases possibles avec le principe énoncé précédemment.
Ensuite vous regarderez les déplacements de 2 pions , puis de 3 pions. Vous obtiendrez une liste de coups (Nombre de coups moyens: 55; mais maximum environ 100). Essayer de ne pas générer des doublons (c'est-à-dire avoir 2 coups identiques dans la liste).

Le codage d'un coup doit prendre en compte les pions (maximum : 3 ; donc 3 * 6 bits =18 bits pour coder), le nombre de pions de l'adversaire déplacé (de 0..2 donc 2 bits pour le stockage), la direction vers laquelle les pions se sont déplacés : 6 directions possibles donc codage sur 3 bits).

Ex si A2 et B2 se sont déplacés vers A3 et B3 (ce que l'on appelle flèche), et bien vous noterez la position des 2 pions, 0 pion de l'adversaire déplacé, et la direction sera Nord-Est.

Résumons cela dans un tableau: (à gauche bit de poids faible et à droite bit de poids forts).

Désignation Evaluation Direction prise par les pions Nb de pions opposés déplacés Place 3ème Pion Place 2ème Pion Place 1er Pion
Nombre de possibilités à stocker de + 255 à - 255 6 directions 0..2 61 cases 61 cases 61 cases
Occupation mémoire en nb de bits 9 bits : 3 bits 2 bits 6 bits 6 bits 6 bits

Ce qui fait un total de 32 bits : vous l'avez compris, c'est optimisé pour les processeurs 32 bits !

    Tout ceci nécessite de connaître les rudiments de la manipulation par bits des variables (décalage, masque). Mais si vous n'y comprenez rien, vous pouvez toujours utiliser des variables séparées pour stocker les places des pions, le nombre de pions déplacés, la direction et l'évaluation. L'avantage dans cette méthode est quelle est très économique en terme de place et d'accès aux données.

Evaluation

Le jeu étant relativement simple, il n'y a pas besoin de beaucoup de précision : on comptera par exemple 250=gain blanc et -250=gain noir et 30 points par pions . Donc si les noirs ont 2 pions de plus, on aura évaluation= - 60.

Pour éviter les échanges de pions lorsqu'on est en déficit de pions, (les blancs perdent un pion et les noirs également), il faut que le pion perdu coûte plus cher au fur et à mesure que l'on se rapproche de la barre des 6 pions perdus (6 pions perdus=défaite)

Une dernière évaluation que je prends en compte dans mon jeu (je ne connais pas beaucoup de choses sur Abalone), est la position par rapport au centre, car il faut dominer le centre. Par conséquent, il faut assigner une valeur plus importante aux pions du centre par rapport au pion à l'aile. Cela obligera l'ordinateur à bien placer ses pions et à les regrouper au maximum. Cette stratégie s'avère payante, car bien souvent quand je joue contre l'ordinateur et que je tente une action à l'aile, le fait qu'il reste bloqué au centre annihile mon attaque et la rend dangereuse pour moi, car je suis obligé de prendre des risques.

L'analyse du jeu

    Une fois que l'on a une solide évaluation et des procédures pour générer les coups, pour avancer et reculer d'un coup, on utilise la même procédure que dans le cas du jeu d'échec, c'est à dire alpha-béta, avec éventuellement toutes les améliorations décrites dans ma page sur la programmation des jeux d'échecs.

Si vous avez des questions ou des améliorations à donner, n'hésitez pas !

Stéphane Vanacker - Janvier 2003 - Ce document ne peut être reproduit sans indiquer le nom de l'auteur