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
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

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
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.
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.
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