Projet suivi - jeu des nombres à trouver



Documents pareils
Auto-évaluation Programmation en Java

HALLE DES SPORTS LE CREUSOT

Poker. A rendre pour le 25 avril

TD/TP PAC - Programmation n 3

Les règles du jeu sont adaptées pour permettre un jeu ludique et correspondant à leur capacité. Cela

TD/TP PAC - Programmation n 3

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

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Gestion distribuée (par sockets) de banque en Java

TP, première séquence d exercices.

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

FÉDÉRATION INTERNATIONALE DE PÉTANQUE ET JEU PROVENÇAL REGLEMENT DU CHAMPIONNAT DU MONDE DE TIR INDIVIDUEL

DOCM Solutions officielles = n 2 10.

Site Web de paris sportifs

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Mémos FFT 2015 LE CLASSEMENT

2013/2014. Championnats 11 ans ; 13 ans 15 ans 17 ans. Tableau des âges. Thèmes de jeux jeunes

Exercices sur les interfaces

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Limites finies en un point

Chess Arbiter Pro (version Dames) Notice d utilisation

Programmation Objet - Cours II

SOMMAIRE. I - Définition de l activité «Jeux de Lutte» Page 2. II - Composantes de l activité Page 3

L2M Poker Club Championnat A

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

1 Recherche en table par balayage

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

COMPETENCES E P S et BASKET BALL au CYCLE 3. R.Reynaud CPC. LYON PART-DIEU mai 2003 en référence au document d'antoine Muguet

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Java Licence Professionnelle CISII,

TP1 : Initiation à Java et Eclipse

Chapitre 2. Eléments pour comprendre un énoncé

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Génie Logiciel avec Ada. 4 février 2013

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Entraînement au concours ACM-ICPC

Modèles et simulations informatiques des problèmes de coopération entre agents

Nos Ateliers WII, PS3 et Kinect

CANUDC - REGLES DU JEU DE LA PARTICIPATION AU CANUDC 1

Programmer en JAVA. par Tama

CCP PSI Mathématiques 1 : un corrigé

LIVRET DE FORMATION JEUNE JUGE JEUNE ARBITRE.

Votre commission des Jeunes

Art. 18 Championnat de Belgique par équipes Messieurs, Dames et Vétérans

Séminaire TEST. 1 Présentation du sujet. October 18th, 2013

Premiers Pas en Programmation Objet : les Classes et les Objets

POULES FORMATS COURTS

RUGBY UNIVERSITAIRE Saison 2014/2015

Journées du Fair-play de la FIFA

Super HUD- Guide Utilisateur

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Q : DE QUEL PAYS DOIVENT VENIR CEUX QUI VEULENT PARTICIPER? R : Cet événement est réservé à la France, donc :

REGLEMENT OFFICIEL DE BASKETBALL 2014

La philosophie Ludi. recréer cet esprit chaleureux et amical afin de faire passer des bons moments à ses internautes autour d une même passion.

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

V- Manipulations de nombres en binaire

MANUEL D INSTALLATION

Objets et Programmation. origine des langages orientés-objet

Collection «Poker Expert» Sous la direction de François Montmirel. Parution le 25 février Poker Cash 1

ASSOCIATION GENEVOISE DE VOLLEYBALL (AGVB) COMMISSION REGIONALE DE MINIVOLLEY (CRM) Championnats genevois U11 info n 3 4 janvier 2014

as Architecture des Systèmes d Information

Les présentes conditions particulières ont été actualisées pour la dernière fois le 14 octobre 2014.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Probabilités conditionnelles Loi binomiale

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Règles du Jeu et Code du Fair-Play

Présente HANDBALLONS A L ECOLE APPROCHE DU HANDBALL EN MILIEU SCOLAIRE

Règlement commun Tournois et festivals Régionaux, provinciaux ou nationaux

Cours d initiation à la programmation en C++ Johann Cuenin

Logiciel de Base. I. Représentation des nombres

Traduction des Langages : Le Compilateur Micro Java

TD3: tableaux avancées, première classe et chaînes

ACTIVITÉ DE PROGRAMMATION

CRYPTOGRAPHIE. Signature électronique. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

Règlement général du circuit

Développement Logiciel

Correction du Baccalauréat S Amérique du Nord mai 2007

Représentation des Nombres

Arbres binaires de recherche

TP3 : Manipulation et implantation de systèmes de fichiers 1

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Vous voulez faire de votre Hearthstone Café un évènement mémorable? Alors, suivez le guide...

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

PRATIQUE SPORTIVE. En cas d absence le licencié doit toujours prévenir son responsable d équipe et son entraîneur principal.

Circuits RL et RC. Chapitre Inductance

«Laissez-moi jouer en sécurité»

E-MARQUE MANUEL UTILISATEUR. Document d accompagnement

Package Java.util Classe générique

Programmation en Java IUT GEII (MC-II1) 1

N L a R e v u e F r a n c o p h o n e d u M a n a g e m e n t d e P r o j e t 2 è m e t r i m e s t r e

I. Polynômes de Tchebychev

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

RÉFORME DES MOINS DE 12 ANS

LIVRET JEUNE OFFICIEL. Ligue de Bretagne de Badminton

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Transcription:

Université Paris 1 2 Programmation orientée objet en Java Licence MIAGE - L3 Projet suivi - jeu des nombres à trouver Exercice 1 : L objectif de cet exercice est de s initier à l édition d un programme Java, à sa compilation et à son exécution. 1. Dans un fichier PlusOuMoi ns. j ava, écrire une classe PlusOuMoi ns. 2. Définir une méthode publ i c s tati c voi d mai n( Stri ng[ ] args) dont le fonctionnement sera le suivant : a. le programme demande au joueur 1 quel nombre secret il souhaite faire deviner ( en utilisant la méthode System. out. pri ntln) ; b. le joueur 1 saisit un entier, le programme le lit ( en utilisant la méthode I nput. readi nt fournie par le fichier I nput. class à télécharger sur la page web du cours) ; c. le programme invite le joueur 2 à saisir un entier pour deviner le nombre secret ; d. le joueur 2 saisit un entier, le programme le lit et affiche " plus grand" si le nombre secret est plus grand que l entier saisi, " plus peti t" s il est plus petit, et " trouve : " suivi du nombre de tentatives s il est égal ; e. retour à l étape ( c. ) jusqu à obtention de la bonne réponse. 3. Compiler le programme en utilisant la commande j avac PlusOuMoi ns. j ava. 4. Exécuter le programme en utilisant la commande j ava Plus OuMoi ns. Exercice 2 : Modifier le programme de l exercice 1 de la façon suivante. Au démarrage du programme, celui-ci invite le joueur à choisir entre la version du jeu de l exercice 1, ou la possibilité de choisir de faire deviner un nombre au programme. Pour cette nouvelle façon de jouer, c est le programme qui doit tenter de deviner le nombre secret du joueur en proposant successivement des valeurs. Le joueur indique par 0 que le nombre a été trouvé, par 1 que le nombre proposé est trop petit et par 2 qu il est trop grand. Comme précédemment, lorsque le programme a trouvé le nombre secret il affiche le nombre de tentatives effectuées. Afin de savoir quel est l intervalle de recherche, la borne supérieure sera demandée au joueur avant de commencer. Compiler et exécuter à nouveau le programme. Exercice 3 : Modifier le programme de telle sorte que le programme et le joueur s affrontent désormais en tentant de deviner le premier le nombre secret de l adversaire. La borne supérieure de l intervalle de recherche sera toujours 1 000. C est le joueur qui commence la partie. Pour déterminer le nombre secret du programme, utiliser la classe j ava. uti l. Random. 1

Exercice 4 : Écrire une classe JoueurHumai n pour encapsuler les entrées-sorties du joueur humain. Définir les méthodes suivantes : publi c i nt getcoup( ) : demande au joueur son coup et le renvoie. publi c voi d setreponse( i nt reponse) : affiche la réponse. publi c i nt testsecret( i nt essai ) : affiche l essai puis demande la réponse du joueur et la renvoie. Modifier le programme afin d utiliser un objet de la classe JoueurHumai n en opposition au programme. Exercice 5 : Écrire une classe JoueurI nc remental qui effectue une recherche incrémentale ( 0, puis 1, etc. ) du secret. Définir les méthodes suivantes : publi c i nt getcoup( ) : renvoie le prochain coup joué par ce joueur. publi c i nt te s tsecre t( i nt es s ai ) : renvoie 0 si c est le bon nombre, 1 s il est trop petit et 2 s il est trop grand. La borne supérieure de l intervalle de recherche sera passée en paramètre du constructeur. Modifier le programme afin d utiliser un objet de la classe JoueurI nc remental en opposition à un objet de la classe JoueurHumai n. Exercice 6 : Definir une classe JoueurDi chotomi que qui cherche le secret en effectuant une recherche dichotomique. 1. Pour cela, definir une classe I ntervall e permettant de representer l intervalle de recherche, avec les methodes suivantes : voi d setmi n( i nt m) : fixe le nouveau minimum. voi d setmax( i nt m) : fixe le nouveau maximum. i nt getbornei nf( ) : renvoie la borne inf. i nt getbornesup( ) : renvoie la borne sup. i nt getmi li eu( ) : renvoie le milieu de l intervalle. boolean es tvi de( ) : renvoie vrai si l intervalle est vide. 2. Définir les méthodes suivantes : publi c i nt getcoup( ) : renvoie le prochain coup joué par ce joueur. publi c voi d setreponse( i nt reponse) : indique la réponse pour la mise à jour de l intervalle de recherche. publi c i nt testsecret( i nt essai ) : renvoie 0 si c est le bon nombre, 1 s il est trop petit et 2 s il est trop grand. La borne supérieure de l intervalle de recherche sera passée en paramètre du constructeur. 3. Modifier le programme afin d utiliser un objet de la classe JoueurDi chotomi que en opposition à un objet de la classe JoueurHumai n. Exercice 7 : Définir une classe Arbi tre qui fait jouer deux joueurs en verifiant qu aucun des deux ne triche. Il prendra en paramètre la valeur maximale de l intervalle de jeu, un j oueuri ncreme ntal et un JoueurHumai n. Il utilisera deux objets de la classe I nterval le pour vérifier la validité des réponses et interrompra la partie en cas de triche, en affichant un message indiquant qui a triché. La méthode réalisant la partie aura le protoype suivant : publi c voi d j ouer( ). 2

Exercice 8 : On souhaite à present faire jouer d autres joueurs par Arbi tre sans avoir à modifier la definition de la classe à chaque fois. 1. Définir une interface Joueur contenant les spécifications des trois méthodes des joueurs. 2. Faire implanter l interface par les trois joueurs précédemment définis. 3. Modifier la classe Arbi tre pour faire s affronter deux joueurs quelconques. 4. Ajouter une méthode Stri ng getnom( ) à l interface Joue ur afin que l arbitre affiche le nom du gagnant. 5. Donner au joueur humain le nom récupéré sur la ligne de commande. Exercice 9 : On veut ajouter un joueur qui cherche les nombres aléatoirement, mais qui tient compte de l intervalle de recherche qui lui reste. 1. Définir une classe abstraite JoueurAvecI ntervalle qui encapsule un intervalle et des méthodes permettant de mettre ce dernier à jour. 2. Faire étendre la classe JoueurAvecI nte rvalle par la classe JoueurDi c hotomi que. 3. Définir la classe JoueurI ntervalleal eatoi re. Exercice 1 0 : On veut factoriser la gestion du secret dans les classes Joueur du programme. 1. Définir une classe abstraite J oueuravecsecret contenant le secret et les méthodes permettant de le gérer ( en particulier le test contre un essai). Peut-on gérer indépendamment l héritage de JoueurAvecI ntervall e et de J oueuravecsec ret? Peut-on définir une classe JoueurAvec I ntervalleetsecret qui hérite des deux? 2. Faire hériter les différents joueurs de cette classe à votre convenance. 3

Exercice 1 1 : Pour comparer les performances des joueurs ordinateur, définir une classe Tournoi permettant de les faire jouer les uns contre les autres de la façon suivante. Chaque joueur disputera 1 00 parties contre chacun des autres joueurs, dont la moitié en premier joueur. Une partie est gagnée si l un des joueurs trouve le secret de l autre avec un tour d avance, et nulle sinon. Chaque partie gagnée donne deux points au vainqueur, un nul donne un point à chacun, une défaite ne donne aucun point. Le vaiqueur du tournoi est celui qui a le plus de points à la fin. 1. Définir une classe Score qui associe un Joueur à un entier, avec des méthodes permettant d augmenter le score et de le consulter. 2. Définir une classe TableauDes Scores gérant un tableau de Score, et proposant des méthodes de mise à jour, d affichage et de recherche du gagnant. 3. Definir la classe Tournoi ; elle prendra en paramètre un Vector de Joueur qui participeront au tournoi. Exercice 1 2 : 1. Modifier la classe Tournoi afin qu elle prennent désormais en paramètre une Colle cti on, et utilise un itérateur pour y accéder. 2. Définir une classe Pai re générique, et l utiliser pour représenter les scores à la place de la classe Score ( supprimer cette dernière). Exercice 1 3 : 1. Ajouter une classe Tournoi Pyrami dal qui fait un tournoi en associant aléatoirement deux-à-deux les joueurs et en recommençant ( récursivement) avec les gagnants de chaque match. 2. Renommer la classe Tournoi en Tournoi Global. 3. Definir une interface Tournoi qu implanteront les deux autres classes. 4

Exercice 1 4 : 1. Définir une exception Tri cheur qui contient le nom du tricheur. Modifier le tournoi de façon à lever puis capturer les exceptions Tri che ur. La première fois qu un joueur triche, il perd la partie, les fois suivantes, il perd la partie ainsi qu un point au classement par triche précédente ( 1, puis 2, puis 3, etc. ). S il n a pas assez de points au classement, il est disqualifié et retiré du tournoi, la mention Tricheur apparaîtra à côté de son nom lors de la publication des résultats. 2. L intervalle de jeu est maintenant passé en paramètre sur la ligne de commande ( utiliser la méthode I nteger. parsei nt). Exercice 1 5 : Supprimez la classe I nput et utilisez directement l entrée-sortie sur les flots standards dans la classe JoueurHumai n. Exercice 1 6 : Utiliser un type énuméré ( enum) pour représenter les valeurs de réponse au test d un secret ( par exemple : TropGrand, TropPeti t, Trouve). Exercice 1 7 : 1. Définir un package j oueurs regroupant tous les joueurs, y ajouter une classe Fabri quejoueur contenant une méthode par type de joueur qui renvoie un objet Joueur correspondant. 2. Définir un package tournoi s regroupant les tournois. 5

Exercice 1 8 : Pour aller plus loin : Ajouter des joueurs : J oueuraleatoi re : joue aléatoirement ( sans intervalle). JoueurI ncrementaldeci mal : cherche par puissance de dix successives ( 1 00, 200... puis X1 0, X20... puis XY1, XY2... ). J oueurtri cheur ( sur la base de n importe quel joueur) : il n a pas de secret, et renvoie systématiquement la réponse permettant de garder l intervalle de recherche de son opposant le plus grand. JoueurI di ot : l inverse du précédent. Définir d autres modes de tournoi... 6