petit jeu - Kaleidoscope

Transcription

petit jeu - Kaleidoscope
Un jeu avec ProLog
XXX --X | X-- XXX
X----X -----X | X----- X----X
X ◊◊X | X◊◊ X
Sujet du TP : Produire un/des programmes pouvant jouer et gagner ou perdre contre son auteur.
(vous avez le choix de la variante de jeu).
Travail demandé : Rédigez un compte-rendu de votre travail, en expliquant la démarche suivie,
les programmes réalisés et les résultats d'exécution obtenus.
Règles du jeu :
Le jeu se déroule dans un espace fini (variante possible avec un espace fini-tore, ou infini), zébré
noir-blanc-noir-blanc-… (variante possible avec plus de 2 couleurs), à une seule dimension (zébrures
orthogonale à la direction, variante possible à plus d’une dimension, zébrures en forme de quadrillage).
Cet espace sera représenté dans la suite par une liste, chaque zébrure correspondant à un élément de la
liste.
Deux joueurs s’opposent dans ce jeu (variante possible à plus de deux). Chaque zébrure peut
contenir l’un des joueurs, ou l’autre, ou un de leurs avatars, ou rien, mais pas plus d’un joueur ou
avatar par zébrure. Le premier joueur sera représenté par le nombre 1 dans la suite, idem pour les
avatars de 1. Le second joueur sera représenté par le nombre 2 dans la suite, idem pour les avatars de 2.
L’absence de joueur dans une zébrure sera représentée par 0. A un moment donné, l’espace peut dont
être représenté par une liste de 0, 1, 2. Ex : [0,0,1,1,1,0,2]
A l’instant 0, l’espace est crée, les joueurs découvrent le nombre de zébrures.
A l’instant 1, le premier joueur décide de sa position dans le monde.
A l’instant 2, le second joueur décide de sa position dans le monde, parmi les zébrures laissées
libres.
Aux instants impairs suivants, le premier joueur peut faire l’une des actions suivantes (variantes
possibles avec d’autres actions) :
• Action locale : placer deux de ses avatars juste à coté de lui (ou de l’un de ses avatars) s’il
trouve deux zébrures côte à côte libres,
• Action à distance : placer un seul avatar à 4+1 zébrures de lui (ou de l’un de ses avatars) si
les 5 zébrures en question sont libres
• Action agressive : faire disparaître deux voisins adverses de l’un de ses avatars (ou de luimême), s’il en trouve deux côte à côte. Les zébrures disparaissent en même temps.
Aux instants pairs suivants, le second joueur peut faire de même.
Si l’un des joueurs ne peut pas jouer, le jeu est fini (variante possible : le jeu s’arrête avant si l’un
des deux joueurs disparaît, autre variante : le joueur bloqué passe juste son tour, si les deux joueurs
passent leur tour, le jeu est fini). Le décompte des avatars (et des joueurs) donne le gagnant.
Exemple : à partir de [0,0,1,0,0,0,0,1,2,2,2], si le joueur 1 joue, il peut effectuer 5 actions possibles
menant aux situations suivantes :
• [0,0,1,1,1,0,0,0,1,2,2,2] (action locale à droite par le premier 1)
• [1,1,1,0,0,0,0,0,1,2,2,2] (action locale à gauche par le premier 1)
• [0,0,1,0,0,0,0,1,1,2,2,2] (action à distance à droite par le premier 1)
• [0,0,1,1,0,0,0,0,1,2,2,2] (action à distance à gauche par le second 1)
• [0,0,1,0,0,0,0,0,1,2] (action agressive à droite par le second 1)
Dans 4 cas, le joueur 2 ne peut plus jouer, la partie est finie : 1 gagne ou la partie est nulle (dans le cas
[0,0,1,1,0,0,0,0,1,2,2,2]). Dans un cas ([0,0,1,0,0,0,0,1,1,2,2,2]), la partie n’est pas finie, mais 2 n’a
pas le choix de son action.
Démarche possible.
Ecrire un prédicat pour vérifier qu’une situation correspond à une fin de jeu (pour un joueur donné).
Ecrire un prédicat qui détermine qui est le gagnant d’une situation de fin de jeu.
Ecrire un prédicat qui regarde parmi les coups possible pour un joueur donnée, s’il y en a un qui
mène à une situation de fin de jeu où il a gagné.
Ecrire un prédicat qui regarde parmi les coups possible pour un joueur donnée, s’il y en a un qui
mène à une situation ou l’autre joueur peut avoir un coup possible menant à une situation où il gagne.
Généraliser ce qui précède, soit en regardant à plus de 2 coups en avance, soit en remplaçant le
critère « gagné » par « avantage », soit en faisant les deux.
 équipe enseignante – ProLog – UJF – Nov 2010

Documents pareils