Projet Prolog : SIAM



Documents pareils
Exe Livret Animateur_Exe Livret Animateur 01/02/11 11:10 Page1

CONTENU MISE EN PLACE. 1. Placez le plateau de jeu au centre de la table.

Poker. A rendre pour le 25 avril

Créer le schéma relationnel d une base de données ACCESS

Choisir le mode d envoi souhaité. Option 1 : Envoyer un SMS à un nombre réduit de numéros (0 10 )

Championnat de France de Grilles Logiques Finale 7 juin Livret d'instructions

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Création d'un questionnaire (sondage)

Organiser vos documents Windows XP

Assistant d e tablissement de Tableaux

LIVRE BLANC Pratiques recommandées pour l utilisation de Diskeeper sur les réseaux SAN (Storage Area Networks)

SmartCaisse, depuis Prise de Commande IPhone, IPad (2, 3 et mini), IPod et tablette Android SmartCaisse

Business Internet Centrex Business Talk IP Centrex guide administrateur

Licence de Biologie, 1ère année. Aide. [Aide 1] Comment utiliser l'explorateur Windows? Comment créer des dossiers?

Guide d'utilisation de la. plate-forme GAR. pour déposer une demande. de Bourse Sanitaire et Sociale

Savoir-faire. Décompte Champs Pâturages. -1 point 1 point 2. 2 points. 3 points. 4 points Céréales * Légumes *

Consigne : je remplis le tableau en tenant compte des informations de la ligne supérieure et de la colonne de gauche (droite pour les gauchers)

Poudlard But Matériel : Mise en place Prologue d'emplacements différents

Si un quadrilatère a. Si un quadrilatère a. Si un quadrilatère a. Si un quadrilatère a. ses côtés opposés. ses côtés opposés de. deux côtés opposés

Évaluation et implémentation des langages

APPRENDRE, VIVRE & JOUER AVEC LES JEUNES ESPOIRS DE L IHF

Intelligence Artificielle et Robotique

Jeux mathématiques en maternelle. Activités clés. Jeu des maisons et des jardins (Yvette Denny PEMF)

Cours 1 : Qu est-ce que la programmation?

Dragon Naturally Speaking 13

SOS Info: Traitement de textes. 1. Structurer un document. 2. Enregistrer un document

École Collines d or BULLETIN DE NOUVELLES NOVEMBRE 2012

MO-Call pour les Ordinateurs. Guide de l utilisateur

Manuel d utilisation NETexcom

Sommaire. 2. L accès aux modules. 1. Aspects techniques. 1.1 Le matériel requis 2

Manuel de l administrateur

Comment utiliser WordPress»

Manuel d utilisation du module GiftList Pro par Alize Web

Guide de présentation du courrier électronique. Microsoft Outlook Préparé par : Patrick Kenny

Gestionnaire de Réservations Guide Utilisateur

Utilisation du logiciel Epson Easy Interactive Tools

Principe et règles d audit

Télédéclaration de la demande de prime aux petits ruminants (campagne 2015)

Premiers pas avec NetSupport SCHOOL

Jeu de tirs et passes L artilleur

ACADÉMIE D ORLÉANS-TOURS NOTE D INFORMATION n 21

AVIS. Objet : Demande de permis unique relative à l aménagement d un complexe sportif sur le domaine du Bois-Saint-Jean au Sart Tilman à LIEGE

Elfenland Règles du jeu

MAQUETTE DE MAISON EN BOIS ET EN BRIQUES

À propos de votre liseuse... 5

Matériel. . 9 cartes Personnage

Une fois votre tableau excel complet, cliquer sur fichier enregistrer sous type de fichier (menu déroulant) csv (séparateur : point virgule).

Cours Excel : les bases (bases, texte)

PetPorte.de Seul mon animal peut entrer! La chatière avec lecteur de puce électronique. Mode d emploi. Guide d installation

Utiliser Net Support School (NSS Version ) Philippe Cailleretz Er-Tice Avion mars 2011.

Espace Client Aide au démarrage

IDENTIFIER LES TEMPS DE JEU NE PAS PERDRE LE BALLON

- Livret de Règles -

Guide d utilisation du système rapport en ligne de la famille de la CMS

Le Format d une Adresse Postale

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Guides des fonctions standard. Voix IP Affaires de TELUS

Fournisseurs - Programme de paiement. Projet SAFIR SITEL, Université de Neuchâtel Décembre 2001

À propos de Kobo Desktop Télécharger et installer Kobo Desktop... 6

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

Unitecnic 2210 Unitecnic 2210 CS

Mystères au PLUS! Jeu pédagogique pour les Sciences de la Vie et de la. Frédéric BLASSELLE, PLUS de Cappelle-la-Grande

Construction d un cercle tangent à deux cercles donnés.

Publication Assistée par Ordinateur

GTD et cie. L'organisation sans stress. Lille 12 avril Frédéric Couchet. CC-by-sa / WikiCommons / org-mode

Mon aide mémoire traitement de texte (Microsoft Word)

Guide d installation CLX.PayMaker Office (3PC)

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

POUR MAC Guide de démarrage rapide. Cliquez ici pour télécharger la version la plus récente de ce document

Ce rêve est devenu réalité.

Physique Chimie. Utiliser les langages scientifiques à l écrit et à l oral pour interpréter les formules chimiques

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

AIDE à l utilisation du cédérom «L athlétisme à l école» Niveau Primaire SOMMAIRE

Manuel Utilisateur. Module CAISSE

Messagerie vocale TELUS. Guide de l utilisateur

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

italc supervision de salle

Publier un Carnet Blanc

Utilisation de la Plateforme Office365 et d Oultlook Web App

Compétences en fin de maternelle Comparer des quantités.

1. Utilisation du logiciel Keepass

Service des ressources informatiques - Conseil Scolaire de District Catholique Centre-Sud Page 1

Formation des utilisateurs du SIFE 2.0 Services de garde d enfants

Exercices de dénombrement

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

«Guide de connexion à l espace privé et déclaration en ligne sur cnv.fr»

Securexam pour le programme CPA,CGA

Guide de configuration. Logiciel de courriel

GUIDE D UTILISATION DE L AGENDA

Retour table des matières

«Laissez-moi jouer en sécurité»

Notes de démonstration pour la version préliminaire Build 542

L alternative, c est malin 1. Comment faire plein de choses pour pas cher sur MacIntosh

Styler un document sous OpenOffice 4.0

RITUEL POUR ATTIRER L ATTENTION DE QUELQU UN

Guide d'installation et de programmation Serrures modernes levier du clavier

Transcription:

Projet Prolog : SIAM IA02 - Université de Technologie de Compiègne Semestre de printemps 2012 1 Présentation et règles du jeu Le projet Prolog du printemps 2012 s articule autour du jeu de plateau SIAM, dont la règle du jeu complète est fournie à la fin de ce document. Figure 1: Boite et plateau du jeu SIAM SIAM oppose deux joueurs déplaçant leurs pions (éléphants pour le premier joueur et rhinocéros pour le second) sur un plateau de 5 5 cases. Trois cases du plateau sont occupées par des rochers. Un joueur gagne dès qu il arrive à pousser un rocher hors du plateau de jeu. 1.1 Pions Le jeu compte 5 pions par joueur (5 éléphants et 5 rhinocéros), ainsi que trois rochers. En plus de leur position sur le plateau, l orientation des pions animaux a une grande importance dans le déroulement du jeu. Au départ, le plateau de jeu est vide, hormis les trois rochers qui sont alignés au centre du plateau (Fig. 2). Le joueur contrôlant les éléphants commence la partie. 1

* * * Figure 2: Positions initiales des trois rochers sur le plateau 1.2 Déplacement d un pion À chaque tour de jeu, le joueur ne peut contrôler qu un seul de ses animaux, en effectuant une des 5 actions suivantes : Faire entrer un de ses animaux sur le plateau Se déplacer sur une case libre Changer l orientation de son animal sans changer de case Sortir un de ses animaux disposés sur une case extérieure Se déplacer en poussant d autres pièces disposées sur le plateau 1.2.1 Entrée d un animal sur le plateau Un animal ne peut entrer que sur une des 16 cases extérieures du plateau de jeu (Fig. 3). * * * * * * * * * * * * * * * * Figure 3: Cases où l entrée et la sortie des pions sont possibles Si la case d entrée choisie est libre, on peut y placer un animal en l orientant dans la direction de son choix. Si la case d entrée est déjà occupée, il est possible d y rentrer en poussant. Il faut alors respecter les conditions permettant de pousser d autres pièces. 1.2.2 Déplacement sur une case libre Les animaux ne se déplacent que d une seule case et de façon orthogonale. Les déplacements en diagonale sont interdits. Pour se déplacer vers une case libre, l orientation de l animal n a aucune importance. Une fois arrivé à destination, le joueur peut orienter son animal dans la direction de son choix. 2

1.2.3 Changement d orientation sans changer de case On peut changer l orientation d un animal sans le déplacer. Cela compte comme un tour de jeu. 1.2.4 Sortie d un animal Un animal situé sur une des 16 cases extérieures du plateau peut être sorti du jeu. Cela compte comme un tour de jeu. Il pourra ensuite être réutilisé et rentrer sur le plateau lors d un tour de jeu ultérieur. 1.2.5 Poussée d autres pièces Si la case de destination est occupée, un animal peut quand même s y rendre en poussant le ou les pions qui le bloquent. Il faut cependant respecter certaines conditions : Un animal ne peut pousser que d une case, et uniquement s il est orienté dans la bonne direction. Un animal seul peut pousser un rocher, deux animaux orientés dans la bonne direction peuvent pousser deux rochers, et trois animaux bien orientés peuvent pousser trois rochers. Un animal ne peut pas pousser un animal qui lui fait face : leurs forces s annulent. Pour pouvoir pousser, il faut qu il y ait une majorité d animaux dans la bonne direction. De plus un animal ami peut bloquer la poussée, tout comme un animal adverse peut aider la poussée s il est bien orienté. Un animal peut pousser autant d animaux que possible s ils ne sont pas orientés dans la direction opposée Lorsqu un animal est sorti du plateau, il peut être réutilisé aux tours suivants. Lorsqu un rocher est sorti du plateau, la partie s arrête. Le gagnant est alors le joueur qui est le plus près du rocher et dans le bon sens de poussée. Attention, ce n est pas nécessairement celui qui a initié l action de poussée. 2 Projet 2.1 Objectif Il est demandé d implémenter en Prolog le jeu complet de façon à permettre une partie Humain vs. Humain, Humain vs. Machine ainsi que Machine vs. Machine. Le code sera testé afin de vérifier le bon respect des règles du jeu. Les règles à implémenter sont celles décrites dans le présent document. On pourra se référer à la règle du jeu complète fournie en annexe. 2.2 Structure des données et notation des coups Les joueurs seront représentés par les atomes e pour les éléphants et r pour les rhinocéros. 3

Nord 51 52 53 54 55 41 42 43 44 45 Ouest 31 32 33 34 35 Est 21 22 23 24 25 11 12 13 14 15 Sud Figure 4: Numérotation des cases Afin de pouvoir facilement localiser les pièces et noter les déplacements, les cases du plateau sont désignées par des numéros à 2 chiffres, le premier indiquant la ligne (1 pour Sud, 6 pour Nord) et le second le numéro d ordre de la case (1 à l Ouest, 6 à l Est) (Fig. 4). On représentera par 0 l extérieur du plateau. L orientation des pions sera indiquée par les atomes n, s, w, e représentant respectivement le Nord, le Sud, l Ouest et l Est. L état du jeu courant est représenté par la liste Plateau=[[(Pe1,Oe1),(Pe2,Oe2),(Pe3,Oe3),(Pe4,Oe4),(Pe5,Oe5)], [(Pr1,Or1),(Pr2,Or2),(Pr3,Or3),(Pr4,Or4),(Pr5,Or5)],[Pm1,Pm2,Pm3], J] où : Pe1,Pe2,... représentent les positions des éléphants Oe1,Oe2,... représentent les orientations des éléphants Pr1,Pr2,... représentent les positions des rhinocéros Or1,Or2,... représentent les orientations des rhinocéros Pm1,Pm2 et Pm3 représentent les positions des montagnes J est le nom du joueur qui doit faire le prochain mouvement (e ou r) Ainsi, au début d une partie, c est aux éléphants de jouer et le plateau ne comporte que des montagnes sur les cases 32, 33 et 34. Il est représenté par la liste [[(0,0),(0,0),(0,0),(0,0),(0,0)],[(0,0),(0,0),(0,0),(0,0),(0,0)], [32,33,34],e] Un déplacement (tour de jeu) se note en précisant la case de départ (0 pour faire rentrer une pièce), la case d arrivée (0 pour faire sortir une pièce) et l orientation d arrivée. On peut ainsi représenter un mouvement par le triplet (Départ, Arrivée, Orientation). Si le joueur contrôlant les éléphants décide de faire rentrer un pion sur la case en bas à gauche (Sud-Ouest) du plateau et de l orienter vers le Nord, on notera (0,11,n) Le plateau de jeu devient alors : [[(11,n),(0,0),(0,0),(0,0),(0,0)],[(0,0),(0,0),(0,0),(0,0),(0,0)], [32,33,34],e] 4

2.3 Détails des tâches du projet Le projet se décompose en 3 grandes étapes : Affichage d un plateau de jeu Écrire le prédicat affiche_plateau permettant l affichage du plateau de jeu dans la console, et réfléchir à l interface de jeu. affiche_plateau(+plateau) Jeu humain Écrire le prédicat plateau_depart permettant de générer le plateau initial du jeu. plateau_depart(?plateau) Écrire le prédicat coup_possible vérifiant qu un coup est jouable pour un plateau donné, en suivant les règles du jeu. coup_possible(+plateau,?coup) Pour définir les règles du jeu, on pourra définir des prédicats permettant de gérer les différentes situations, comme par exemple poussee_possible(+plateau, Case, Direction) Écrire le prédicat jouer_coup qui permet de déterminer l état du jeu après l application d un coup. Il sera défini sous la forme : jouer_coup(+plateauinitial,?coup,?nouveauplateau) Faire une boucle de jeu interactive, permettant à deux joueurs humains de s affronter en respectant les règles du jeu. Faites en sorte que le programme soit robuste aux erreur de saisie courantes. Intelligence Artificielle Écrire un prédicat qui permet de lister tous les coups possibles à partir de l état de jeu courant coups_possibles(+plateau, -ListeCoupsPossibles) Écrire le prédicat meilleur_coup. Ce prédicat à pour objectif de déterminer, à partir du plateau courant, quel est le «meilleur» coup à jouer. meilleur_coup(+plateau, -Coup) Intégrer l intelligence artificielle dans la boucle de jeu, en donnant le choix au départ entre une partie «humain contre humain», «humain contre machine» ou «machine contre machine». 5

2.4 Rendu Le projet est à rendre pour la dernière séance de TP (commune aux groupes A et B), où une soutenance / démonstration de 10 minutes sera organisée pour chaque groupe. En plus de la soutenance, il est demandé de fournir le code Prolog (commenté) du projet ainsi qu un rapport papier contenant notamment les éléments suivants : Une présentation des prédicats principaux composant le jeu. La description de l IA et des choix faits au niveau de l implémentation et de l évaluation des coups. Les difficultés rencontrées et améliorations possibles Remarques : Le rapport ne doit pas être un simple listing de code! Pensez à fournir une version électronique au format PDF en même temps que vos codes sources. 6

Un jeu pour 2 personnes de Didier Dhorbait 2005 Ferti durée : environ 15 minutes MATERIEL - Un plateau de jeu en bois - 5 éléphants - 5 rhinocéros - 3 blocs de rochers - 5 feutrines à appliquer sous le plateau, 1 au centre et 1 sous chaque angle - La règle de jeu Nous sommes au Royaume de SIAM, jadis véritable paradis terrestre, terre d'immensité ou éléphants et rhinocéros vivaient en paix depuis des siècles. Un jour la terre se mit à trembler et SIAM fut alors réduite à trois régions entourées de gigantesques montagnes. Depuis éléphants et rhinocéros n'ont plus assez d'espace pour vivre ; ces deux espèces d'une force incroyable vont alors se livrer à une lutte sans merci pour régner sans partage sur deux territoires... BUT DU JEU Après avoir choisi votre animal, être le premier à sortir une région montagneuse (bloc de rochers) à l'extérieur du plateau. COMMENT JOUER Chaque joueur choisit son animal. Les joueurs joueront à tour de rôle. Au début du jeu les animaux sont disposés à l'extérieur du plateau et les blocs de rochers au centre du plateau (fig. 1). Les éléphants blancs, animaux sacrés dans le royaume de SIAM commenceront à jouer. Les joueurs ne pourront jouer à chaque tour de jeu qu'un seul de leur animal et ne faire qu'une des 5 actions suivantes : - Entrer un de ses animaux sur le plateau - Se déplacer sur une case libre - Changer l'orientation de son animal sans changer de case - Sortir un de ses animaux disposés sur une case extérieure - Se déplacer en poussant d'autres pièces disposées sur le plateau Entrer un de ses animaux sur le plateau Vous devez entrer un de vos animaux par l'une des cases extérieures, cases surlignées en rouge à la fig. 2. Deux cas peuvent se présenter : - la case est libre et dans ce cas vous pouvez placer votre animal en l'orientant dans la direction de votre choix - la case est occupée et vous pouvez sous certaines conditions rentrer en effectuant un poussée (voir le chapitre «se déplacer en poussant»).

Se déplacer sur une case libre Vous ne pouvez vous déplacer que d'une seule case et de façon orthogonale (déplacement en diagonale interdit). L'orientation de votre animal n'importe pas sur la direction de votre déplacement. Tout en vous déplaçant, vous pouvez à votre guise changer l'orientation de votre animal Changer l'orientation de son animal sans chanter de case Vous pouvez changer l'orientation de votre animal sur sa case, ce coup compte comme un tour de jeu. Sortir un de ses animaux disposé sur une case extérieure Vous pouvez sortir du plateau et à tout moment un de vos animaux disposé sur une case extérieure (cases surlignées en rouge à la fig. 2), ce coup compte comme un tour de jeu. L'animal sorti pourra être réutilisé et revenir sur le plateau à tout moment. Se déplacer en poussant d'autres pièces disposées sur le plateau Lorsque la case ou vous voulez vous rendre est occupée par une pièce (éléphant, rhinocéros ou rochers), vous pouvez sous certaines conditions effectuer une poussée : Vous ne pouvez pousser que dans une seule direction : vers l'avant de votre animal. (fig. 3a, 3b) Un animal peut pousser un rocher, deux animaux orientés dans la bonne direction peuvent pousser deux rochers, et trois animaux orientés dans la bonne direction peuvent pousser trois rochers (fig. 4a, 4b, 4c). Un animal ne peut pousser un autre animal qui lui fait face (peu importe à qui appartient l'animal). En effet, rhinos et éléphants ont la même force de poussée ; pour pouvoir pousser, il faut qu'il y ait donc une majorité d'animaux qui poussent dans la même direction. Précision : un de vos animaux peut empêcher votre poussée, un animal adverse peut aider votre poussée (fig. 5a, 5b, 5c).

Un animal peut pousser autant d'animaux que possible si ceux-ci ne sont pas orientés dans la direction opposée (fig. 6a, 6b). Vous pouvez pousser en entrant une pièce sur le plateau (fig. 7a, 7b). Pour résoudre des situations de poussée plus compliquées, il suffit de regarder les animaux qui se neutralisent et de voir si ceux qui restent sont en nombre suffisant pour pousser des rochers (fig. 8a, 8b, 8c). Lorsqu'un rocher est expulsé la partie est terminée mais attention le gagnant est le joueur qui est le plus proche du rocher et dans le même sens de poussée (fig. 9a, 9b, 9c). Un animal expulsé hors du plateau n'est pas éliminé ; il est récupéré et peut être joué à tout moment. Pendant une poussée, aucun animal ne peut changer d'orientation. VARIANTES Aucun des 2 joueurs ne pourra jouer un de ses animaux sur les cases indiquées par une croix à la fig. 10 lors de leurs deux premiers coups. Vous pouvez limiter à une fois par joueur la sortie d'un animal disposé sur une case extérieure (fig. 2). Règle originale mise en ligne par François Haffner pour les lecteurs de http://jeuxsoc.free.fr