TP : Jouons au Poker



Documents pareils
POKER ET PROBABILITÉ

Les règles de base du poker :

Poker. A rendre pour le 25 avril

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

TP 1 : 1 Calculs en binaire, octal et hexadécimal

S initier aux probabilités simples «Un jeu de cartes inédit»

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Télécom Nancy Année

Programmation Objet - Cours II

YANN ROUDAUT - Professeur de l Ecole Française de Poker - roudaut@ecolefrancaisedepoker.fr

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

Utiliser CHAMILO pour le travail collaboratif

Analyse Combinatoire

MEDIAplus elearning. version 6.6

BERNARD Arthur Compte-rendu de projet de Simulation Multi-agents : Le jeu du Texas Hold'Em

Le Seven Card Stud. Club Poker 78

A.-M. Cubat PMB - Import de notices à partir d un tableur Page 1 Source :

I La création d'un compte de messagerie Gmail.

Didacticiel de mise à jour Web

Cours Langage C/C++ Programmation modulaire

Canevas théoriques du projet sur le poker Partie A

Situation présente et devis technique

et de la feuille de styles.

Guide Google Cloud Print

Création d'un questionnaire (sondage)

Entraînement au concours ACM-ICPC

Poker Academy Texas Hold em. Manuel d utilisation. Sommaire

Rallye Mathématiques de liaison 3 ème /2 nde et 3 ème /2 nde pro Epreuve finale Jeudi 21 mai 2015 Durée : 1h45

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Probabilités. Une urne contient 3 billes vertes et 5 billes rouges toutes indiscernables au toucher.

7 Card Stud et 7 Card Stud Hi Lo

TUTORIEL Qualit Eval. Introduction :

IBM SPSS Statistics Version 22. Instructions d'installation sous Windows (licence simultanée)

ARCHIVES DEPARTEMENTALES DE L'EURE ALEXANDRIE

S initier aux probabilités simples «Question de chance!»

Artica. La déduplication. Révision Du 08 Février 2011 version

CALC2QIF Conversion de données OpenOffice au format QIF

[ Sécurisation des canaux de communication

LE PROBLEME DU PLUS COURT CHEMIN

CREER UN PETIT SITE WEB EN COMPOSANT DES PAGES HTML

1. Introduction Création d'une requête...2

Comment enregistrer simplement toute musique restituée par votre PC

EXTRANET STUDENT. Qu'est ce que Claroline?

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

CALCUL DES PROBABILITES

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

Installation et Réinstallation de Windows XP

Comment congurer WinEdt pour L A TEX?

PREINSCRIPTION EN LIGNE

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

TP 3 Réseaux : Subnetting IP et Firewall

REGLEMENT DES JEUX PARTOUCHE IMAGES (Serveur vocal et Internet)

But de cette présentation

OPTIMISATION À UNE VARIABLE

TP 4 & 5 : Administration Windows 2003 Server

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

INFORM :: DEMARRAGE RAPIDE A service by KIS

Année Universitaire 2009/2010 Session 2 de Printemps

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

UTILISATION DE L'APPLICATION «PARTAGE DE FICHIERS EN LIGNE»

Informations sur l utilisation du webmail du CNRS. Webmail du CNRS. Manuel Utilisateur

Création de site Internet avec Jimdo

Recherche dans un tableau

Manuel d utilisation NETexcom

Manuel d Utilisateur - Logiciel ModAFi. Jonathan ANJOU - Maud EYZAT - Kévin NAVARRO

Sage Start Saisie des collaborateurs Instructions. A partir de la version

Compte-rendu de projet de Système de gestion de base de données

LES ACCES ODBC AVEC LE SYSTEME SAS

Installation et prise en main

PROBABILITÉS CONDITIONNELLES

INTERNET. Etsup 2012

Dans la série. présentés par le site FRAMASOFT

Créer un sondage en ligne

Guide de configuration de SQL Server pour BusinessObjects Planning

claroline classroom online

Exercices INF5171 : série #3 (Automne 2012)

Logiciels concernés. Situation. Ciel et le pont comptable. Note conçue et rédigée par Jalons sprl tous droits réservés - 27/06/2007.

Réseau : Interconnexion de réseaux, routage et application de règles de filtrage.

Exercices de dénombrement

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

BR-Docs guide d applications mobile Android

Utilisation d'un réseau avec IACA

AFTEC SIO 2. Christophe BOUTHIER Page 1

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Tutoriel - flux de facturation

Les Imprimantes EOLE 2.3. Documentation sous licence Creative Commons by-nc-sa - EOLE (http ://eole.orion.education.fr) révisé : Janvier 2014

Table des matières : 16 ASTUCES OUTLOOK

[Serveur de déploiement FOG]

Cours de Programmation 2

Guide d'installation

Architecture de la plateforme SBC

Mode d Emploi. Résult Arc Logiciel de Gestion de Compétitions. Droits d utilisation Informations Générales. 1/. Présentation de Résult Arc

TP3 : Creation de tables 1 seance

Gestion des applications, TI. Tout droits réservés, Marcel Aubin

Code_Aster. Procédure IMPR_RESU aux formats 'RESULTAT' et 'ASTER' 1 But

Transcription:

Univ. Lille1 - Licence Informatique 2ème année 2014-15 Algorithmes et Programmation Impérative 2 TP : Jouons au Poker Objectifs : Programmation modulaire Manipulation de types somme Filtrage de motifs Production de documentation de module Compilation séparée Dans ce TP, vous allez simuler une version simpliée du jeu de poker. Pour ce faire, vous allez réaliser trois modules 1. un module Carte, dont vous pourrez lire la documentation de l'interface ici ; 2. un module Main, dont vous pourrez lire la documentation de l'interface ici ; 3. et un module Combinaison, dont vous pourrez lire la documentation de l'interface ici. 1 Le matériel fourni Question 1 Récupérez le chier poker.zip et décompressez-le dans votre répertoire de travail. Vous devez obtenir les chiers et dossiers 1. jeu.ml : chier source du programme de jeu à réaliser. 2. Modules_compiles : dossier contenant les versions compilées des trois modules à réaliser. 3. Doc : dossier vide destiné à contenir la documentation des modules que vous produirez. 4. Carte : dossier contenant le chier d'interface du module Carte (carte.mli). 5. Main : dossier contenant les chiers d'interface et d'implémentation du module Main (main.mli et main.ml). 6. Combinaison : dossier contenant le chier d'interface du module Combinaison (combinaison.mli). 2 Le programme de jeu Dans cette partie, vous allez utiliser le programme de jeu à réaliser après l'avoir compilé. 2.1 Description sommaire du poker Le jeu du poker est un jeu de cartes dans lequel à chaque tour chaque joueur reçoit cinq cartes (une main). Puis après une phase d'enchères et éventuellement d'abandons et de remplacement de certaines cartes, le vainqueur est déterminé comme étant celui dont la main présente la combinaison la plus forte. (Pour une description des combinaisons voir la section 5.) Le jeu à programmer est une version très simpliée du poker dans laquelle il n'y a ni enchère ni remplacement éventuel de cartes. Un tour de jeu consiste simplement à distribuer cinq cartes à chaque joueur et à déterminer le vainqueur. 1

2.2 Organisation du programme jeu Outre les modules de la bibliothèque standard (Array, Sys, Printf,... ), le programme jeu utilise deux modules supplémentaires 1. le module Main ; 2. et le module Combinaison. Comme vous le découvrirez par la suite, le module Combinaison utilise aussi le module Main, ainsi que le module Carte. Enn, le module Main utilise le module Carte. Toutes ces dépendances sont illustrées sur la gure 1 qui montre un graphe dont les sommets sont les modules, et les èches les reliant indiquant un lien de dépendance entre module. Une èche partant d'un module A pour arriver sur un module B signiant que le premier module utilise le second. Figure 1 Graphe de dépendances des modules du programme jeu Connaître les dépendances entre modules est important pour la compilation d'un programme qui les utilise. 2.3 Compilation du programme jeu Pour compiler le programme jeu, vous allez devoir indiquer au compilateur où il peut trouver les modules compilés. Pour l'instant ces modules compilés se trouvent dans le dossier Modules_compiles, 2

mais ultérieurement, lorque vous aurez réalisé les implémentations de ces modules, ils seront situés dans d'autres dossiers 1. Question 2 Lancez la compilation du programme avec la commande > ocamlc -I Modules_compiles -o jeu carte.cmo main.cmo combinaison.cmo jeu.ml L'option -I Modules_compiles indique au compilateur dans quel dossier chercher les modules autres que ceux de la bibliothèques standard. Comme vous le savez déjà, l'option -o jeu indique au compilateur le nom du chier exécutable à produire. Viennent ensuite les noms des modules compilés utilisés par le programme. L'ordre dans lequel ils sont mis est important puisqu'ils doivent respecter les dépendances. Si un module A utilise un module B, le nom du chier b.cmo doit être mentionné avant celui du chier a.cmo. Compte-tenu des dépendances entre modules pour le programme jeu (cf gure 1), l'ordre utilisé dans la commande de compilation ci-dessus est le seul possible. 2.4 Et maintenant jouons! Question 3 Exécutez le programme jeu en lui donnant le paramètre 4. >./jeu 4 Vous devez obtenir un achage semblable à ce qui suit Joueur 1 : [ 4C, 5C, 8P, 8K, RP] : Paire de 8 Joueur 2 : [ 2C, 6T, 7T, 8T, VK] : Main vide Joueur 3 : [ 3K, 4P, 10P, VT, RK] : Main vide Joueur 4 : [ 5P, 6P, 7P, 9T, DK] : Main vide Vainqueur : joueur 1 L'interprétation de la commande./jeu 4 et de l'achage qu'elle produit est un tour d'une partie de poker entre quatre joueurs. Le nombre de joueurs qu'il est possible de choisir doit être compris entre 2 et 5. L'achage donne pour chacun des quatre joueurs la main de cinq cartes qui lui ont été données lors de la distribution des cartes ; et la combinaison que sa main contient. La dernière ligne de l'achage donne le vainqueur de la donne. Il est possible que lors d'un tour les joueurs soient ex-æquo, comme par exemple ci-dessous. Joueur 1 : [ 2T, 5C, 8T, DP, RT] : Main vide Joueur 2 : [ 2K, 3P, 7C, VT, DC] : Main vide Joueur 3 : [ 3C, 4K, 5P, 8C, 10T] : Main vide Joueur 4 : [ 4T, 5K, 6K, 8P, AC] : Main vide Ex aequo : joueurs 1 2 4 3 1. Ces modules compilés l'ont été avec la version 3.11.2 d'objective Caml, qui est celle installée dans les salles de TP. Aucune garantie de bon fonctionnement n'est donnée pour d'autres versions. 3

3 Le module Carte Dans cette partie, vous allez 1. produire une version HTML de la documentation du module Cartes ; 2. réaliser une implémentation de ce module ; 3. et la valider par des tests. 3.1 L'utilitaire ocamldoc Comme vous pouvez le remarquer en consultant le contenu du chier carte.mli, les commentaires qu'il contient utilisent certaines structures particulières. Elles sont destinées à l'utilitaire ocamldoc, qui fait partie intégrante de toute distribution d'objective Caml, et qui, à partir de ces commentaires, permet de produire de la documentation dans diérents formats, en particulier HTML 2. Question 4 Placez-vous dans votre répertoire de travail (celui qui contient les diérents dossiers décrits dans la section 1). Puis tapez la commande > ocamldoc -html -d Doc Carte/carte.mli L'option -html précise que la documentation est à produire au format HTML. L'option -d Doc précise que les chiers produits doivent l'être dans le dossier Doc. Enn, il s'agit ici de produire la documentation décrite dans le chier Carte/carte.mli. Cette commande exécutée, le dossier Doc contient plusieurs chiers d'extension.html et un chier d'extension.css. Question 5 Utilisez un navigateur internet, Firefox par exemple, pour consulter la documentation que vous venez de produire. Pour cela, allez dans le menu Fichier > Ouvrir un fichier et choisissez le chier Carte.html du dossier Doc. Comparez cette documentation avec celle que vous pouvez trouver ici. 3.2 Implémentation du module L'implémentation du module doit se faire dans un chier nommé carte.ml situé dans le dossier Carte. Durant le travail de réalisation, vous pouvez à tout moment valider les éléments réalisés en utilisant l'interpréteur ocaml et la directive #use pour évaluer les déclarations contenues dans le chier carte.mli. 3.3 Validation de l'implémentation L'implémentation du module terminée, il est temps d'en vérier le bon fonctionnement en l'intégrant au programme jeu. Question 6 Compilez les deux chiers d'interface et d'implémentation. 2. C'est aussi l'utilitaire ocamldoc qui a produit la gure 1. 4

> ocamlc -c Carte/carte.mli > ocamlc -c -I Carte Carte/carte.ml Si aucune erreur ne s'est produite lors de ces deux compilations, le dossier Carte doit contenir deux chiers carte.cmi et carte.cmo. Question 7 Compilez maintenant le chier jeu.ml an de produire un exécutable, en utilisant la version du module Carte que vous avez réalisée. Pour cela ajoutez deux dossiers de recherche de modules dans la ligne de commande en mettant le dossier Carte avant l'autre. > ocamlc -I Carte -I Modules_compiles -o jeu carte.cmo main.cmo combinaison.cmo jeu.ml Question 8 Vériez le bon fonctionnement du programme jeu. 4 Le module Main Dans cette partie, vous allez 1. rédiger une documentation de l'interface du module Main et en produire une version HTML ; 2. compiler le module ; 3. et valider par des tests. Le module Main est chargé de dénir un type main pour représenter les mains de cinq cartes que reçoivent les joueurs de poker, ainsi qu'un constructeur cree qui construit une main à partir de cinq cartes et un sélecteur carte qui extrait d'une main la carte d'un rang donné dans l'ordre croissant. Il déclare en plus une procédure d'impression : imprimer ; une fonction qui génère des mains aléatoires : main_alea ; et une fonction qui génère une distribution de mains pour n joueurs : distribue. 4.1 Rédiger la documentation du module L'utilitaire ocamldoc extrait la documentation dans les commentaires situés dans les chiers d'interface et/ou d'implémentation, commentaires qui doivent commencer par (**. Les commentaires débutant par (* sont ignorés. Question 9 En vous inspirant de la documentation du module Main que vous pouvez lire ici, ainsi que des commentaires placés dans le chier Carte/carte.mli, complétez le chier Main/main.mli avec des commentaires destinés à la documentation de ce module. Question 10 Puis utilisez ocamldoc pour produire cette documentation. Il est nécessaire que le module Carte ait été préalablement compilé (au moins l'interface), ce qui doit être le cas, et il faut préciser le chemin d'accès à ce module compilé. > ocamldoc -I Carte -d Doc -html Main/main.mli 5

Question 11 La commande précédente a bien produit la documentation du module Main mais les liens ne sont pas établis avec celle du module Carte. On peut remédier à cela en produisant simultanément la documentation des deux modules. > ocamldoc -I Carte -d Doc -html Carte/carte.mli Main/main.mli 4.2 Compilation du module Question 12 Compilez le module Main an de produire les deux chiers main.cmi et main.cmo dans le répertoire Main. Il vous faudra utiliser l'option -I <chemin d acces au module Carte> puisque le module Main utilise le module Carte. 4.3 Validation de l'implémentation Question 13 Main. Vous allez maintenant recompiler le programme jeu avec le module Main du répertoire > ocamlc -I Carte -I Modules_compiles -o jeu carte.cmo main.cmo combinaison.cmo jeu.ml Question 14 Vériez le bon fonctionnement du programme. 5 Le module Combinaison Voici par ordre décroissant de valeurs les diverses combinaisons que peut posséder une main de cinq cartes au poker. 1. Quinte ush Une quinte ush ou plus simplement quinte est une main constituée de cinq cartes de la même couleur et de hauteurs consécutives. Elle est caractérisée par la couleur et la hauteur de la plus carte de rang le plus élevé. La quinte montrée à la gure 2 est une quinte au 10 en trèe 3. Figure 2 Une quinte au 10 en trèe 2. Carré Un carré est une main contenant quatre cartes de même hauteur. Un carré est caractérisé par la hauteur de ces quatre cartes. Le carré montré à la gure 3 est un carré de 9. 3. Toutes les gures illustrant les combinaisons du poker proviennent du site Wikipedia. 6

Figure 3 Un carré de 9 3. Full Un full est une main contenant trois cartes de même hauteur et deux autres cartes de même hauteur. Un full est caractérisé par la hauteur des trois cartes de même hauteur, et la hauteur des deux autres. Le full montré à la gure 4 est un full de dames par les 10. Figure 4 Un full de dames par les 10 4. Couleur Une couleur est une main contenant cinq cartes de même couleur. Une couleur est caractérisée par la commune des cinq cartes. La couleur montrée à la gure 5 est une couleur en carreau. Figure 5 Une couleur en carreau 5. Suite Une suite est une main contenant cinq cartes de hauteur consécutives. Une suite est caractérisée par la hauteur de la carte de rang le plus élevé. La suite montrée à la gure 6 est une suite au 6. 6. Brelan Un brelan est une main contenant trois cartes de même hauteur, les deux autres étant de hauteurs diérentes. Un brelan est caractérisé par la hauteur de ces trois cartes. Le brelan montré à la gure 7 est un brelan de 9. 7. Double paire Une double paire est une main contenant deux cartes même hauteur, et deux autres cartes de même hauteur, la dernière carte étant d'une troisième hauteur. Une double 7

Figure 6 Une suite au 6 Figure 7 Un brelan de 9 paire est caractérisée par la hauteur de chacune des paires. La double paire montrée à la gure 8 est une double paire de rois et de 2. Figure 8 Une double paire de rois et de 2 8. Paire Une paire est une main contenant deux cartes même hauteur, les trois autres cartes étant toutes de hauteurs diérentes. Une paire est caractérisée par la hauteur de ces deux cartes de même hauteur. La paire montrée à la gure 9 est une paire de 5. Question 15 Réalisez l'implémentation du module Combinaison. 8

Figure 9 Une paire de 5 9