TP noté - Adaptation du jeu de dames
Tom Avenel
2022 / 2023
ii
Résumé
L’objectif de ce TP est de programmer une interface graphique pour le jeu de dames (en version
simplifiée) entre joueurs humains ou contre l’ordinateur.
ii
Table des matières
Présentation du jeu 1
Règles principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Damier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Pions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Dames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Captures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Conditions de victoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Clarification des règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Partie 1 : Moteur de jeu 5
Modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Moteur de jeu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Intelligence artificielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Partie 2 : Interface graphique 7
Legal 9
iii
iv TABLE DES MATIÈRES
Présentation du jeu
Règles principales
L’objectif du jeu est de retirer les pions de l’adversaire sur le damier en effectuant des “captures”
ou de l’empêcher de jouer.
Damier
• Le damier est divisé en 10x10 cases.
• Chaque joueur possède 20 pions (40 en tout).
• Seules les cases noires sont utilisées (on ne pose pas les pions sur les cases blanches). Les
cases noires sont donc numérotées (pour les joueurs de tournoi ou ceux qui s’exercent avec
des ouvrages) de 1 à 50.
• Le camp du 1er joueur est en bas (cases 31 à 50) et celui du 2e joueur en haut (cases 1 à
20).
1
2 PRÉSENTATION DU JEU
Pions
• Le Pion se déplace diagonalement d’une seule case vers l’avant.
• Le Pion se déplace toujours sur une case libre.
• Le Pion ne recule pas lorsqu’il se déplace.
• Lorsque le Pion atteint la dernière rangée (la dernière ligne horizontale), il devient une
Dame.
Dames
• La Dame est un Pion spécial qui peut avancer, mais également reculer pour se déplacer.
• Contrairement aux règles officielles, la dame ne peut pas se déplacer de plusieurs cases
dans cette version.
RÈGLES PRINCIPALES 3
Captures
• Il est possible de “capturer” un pièce de l’adversaire
• Les captures, qu’elles soient exécutées par des Pions ou des Dames se font en avançant ou en
reculant : un Pion peut donc reculer en capturant une pièce (et uniquement en capturant).
• Contrairement aux règles officielles, il n’est pas obligatoire dans cette version de
capturer une pièce quand cela est possible.
• Contrairement aux règles officielles, lorsqu’une pièce (Pion ou Dame) capture et se
retrouve de nouveau en diagonal d’une pièce adverse cette pièce NE peut PAS re-capturer
au même tour (le tour s’arrête).
Conditions de victoire
• Si un joueur n’a plus de pièce, il perd la partie.
• Si un joueur ne peut déplacer aucune pièce lors d’un tour de jeu, il perd la partie.
• Si aucun joueur n’a été déclaré vainqueur après 1,000 tours de jeu par joueur (soit 2000
tours de jeu en tout), on considère que la partie est nulle.
4 PRÉSENTATION DU JEU
Clarification des règles
Attention
Les règles du jeu officiel sont disponibles sur cette page : http://www.ffjd.fr/Web/index.p
hp?page=reglesdujeu.
Attention, cet exercice procède à de nombreux changements, notamment :
• Contrairement aux règles officielles, la Dame est un simple Pion qui gagne la
capacité de se déplacer en arrière.
• Contrairement aux règles officielles, il n’est pas obligatoire dans cette version
de capturer une pièce quand cela est possible.
• Contrairement aux règles officielles, il n’est possible de capturer qu’une pièce
adverse par tour.
• Contrairement aux règles officielles, la partie est nulle après 1000 tours de jeu
sans victoire.
• En cas de non-réponse ou de coup déloyal de l’IA (non respect des règles), l’IA perd
la partie.
Partie 1 : Moteur de jeu
Modèle
Créer un modèle objet pour représenter l’état du damier à chaque instant.
Moteur de jeu
Développer le moteur de jeu.
Ce moteur doit permettre au joueur courant de déplacer un pion (en réalisant éventuellement
une prise).
Suite à cette action, le modèle du plateau est mis à jour et c’est au 2e joueur de jouer.
Le moteur de jeu doit également calculer si la partie est terminée ou non et déclarer le vainqueur.
Attention
Attention : la cohérence du programme repose essentiellement sur le bon fonctionnement
du moteur ! Ne pas négliger les tests dans cette partie
Il peut être beaucoup plus simple de commencer par coder un moteur de jeu sans interface
graphique (à tester en ligne de commandes).
Intelligence artificielle
Développer une intelligence artificielle pour le jeu, permettant de jouer seul contre l’ordinateur.
Le modèle de données utilisé par l’IA est une liste plateau représentant les pièces sur les cases
numérotées.
L’élément à l’index i vaut donc :
• plateau[i] == None ssi il n’y a aucune pièce sur la case du damier numérotée i ;
• plateau[i] == (0, False) ssi le 1er joueur a un Pion sur la case du damier numérotée i ;
• plateau[i] == (0, True) ssi le 1er joueur a une Dame sur la case du damier numérotée
i;
• plateau[i] == (1, False) ssi le 2e joueur a un Pion sur la case du damier numérotée i ;
5
6 PARTIE 1 : MOTEUR DE JEU
• plateau[i] == (1, True) ssi le 2e joueur a une Dame sur la case du damier numérotée i.
L’interface de cette IA doit être un module ia (donc un fichier nommé ia.py) respectant le
contrat suivant :
• ia.play(plateau: list, premier_joueur: bool) est la fonction demandant à l’ordina-
teur quel est son prochain déplacement ;
• plateau est l’état courant du plateau avant le déplacement ;
• premier_joueur == True ssi l’IA est le premier joueur (sinon False) ;
• La réponse un tuple : (Numéro de case à jouer, Numéro de case destination).
• Seul le déplacement de la pièce (Pion ou Dame) est retourné et le plateau n’est pas mis à
jour par l’IA.
Attention
L’IA a 1 minute pour répondre : après une minute sans réponse ou si le programme crash
(exception, . . . ), la partie s’arrête et l’IA est déclarée perdante.
Attention
L’IA est un fichier autonome totalement indépendant du reste de programme et ne réalise
aucun import.
Ce fichier Python doit pouvoir être importé seul dans le programme des tournois.
Exemple d’appel à l’IA (le plateau ne possède qu’une pièce pour faciliter la lecture) :
plateau = [None] * 51
plateau[35] = (0, False) # Pion du joueur 1 sur la case 35
ia.play(plateau, premier_joueur=True) # L'IA est le 1er joueur
>> (35, 30) # Le pion en case 35 est déplacé en case 30.
Dans un premier temps, on pourra commencer par chercher l’ensemble des déplacements possibles.
Une première version de l’IA pourra choisir un déplacements au hasard, avant d’être améliorée.
Partie 2 : Interface graphique
Développer une interface graphique pour le jeu.
Cette interface aura les contraintes suivantes :
• utiliser la librairie Tkinter.
• afficher :
– le plateau de jeu (le damier) ;
– les différents pions sur le damier ;
– le gagnant en cas de victoire.
Le joueur courant doit également pouvoir déplacer un pion en utilisant l’interface graphique.
Le développement de l’interface graphique peut être intégré dès la création du moteur de jeu.
Récupérer le patron Tkinter pour démarrer le développement de l’interface graphique.
7
8 PARTIE 2 : INTERFACE GRAPHIQUE
Legal
• © 2023 Tom Avenel under CC BY-SA 4.0
9
10 LEGAL
11
Ce document a été généré grâce à l’outil pandoc.
Les sources au format Markdown de ce document sont disponibles sur le site web.
Ce document est mis à disposition selon les termes de la CC BY-SA 4.0 : Licence Creative
Commons Attribution - Partage dans les Mêmes Conditions 4.0 International.
Vous êtes autorisé à :
• Partager — copier, distribuer et communiquer le matériel par tous moyens et sous tous
formats
• Adapter — remixer, transformer et créer à partir du matériel
• pour toute utilisation, y compris commerciale.
Selon les conditions suivantes :
• Attribution — Vous devez créditer l’Œuvre, intégrer un lien vers la licence et indiquer si
des modifications ont été effectuées à l’Oeuvre. Vous devez indiquer ces informations par
tous les moyens raisonnables, sans toutefois suggérer que l’Offrant vous soutient ou soutient
la façon dont vous avez utilisé son Oeuvre.
• Partage dans les Mêmes Conditions — Dans le cas où vous effectuez un remix, que vous
transformez, ou créez à partir du matériel composant l’Oeuvre originale, vous devez diffuser
l’Oeuvre modifiée dans les même conditions, c’est à dire avec la même licence avec laquelle
l’Oeuvre originale a été diffusée.
• Pas de restrictions complémentaires — Vous n’êtes pas autorisé à appliquer des conditions
légales ou des mesures techniques qui restreindraient légalement autrui à utiliser l’Oeuvre
dans les conditions décrites par la licence.
Pour plus d’informations : http://creativecommons.org/licenses/by-sa/4.0/.