TP Java no1 : Les dés sont jetés

Transcription

TP Java no1 : Les dés sont jetés
TP Java no1 : Les dés sont jetés
IUP I.I.E.S 1
2 Février
A. Lemay et J. Carme
Objectifs du TP : Manipuler de petits objets
Exercice 1: Jeu de dé
Le grand avantage de Java est qu’il permet de faire de la programmation objet. Nous allons
étudier un programme utilisant un objet : un dé. Un objet java est caractérisé par deux types
d’éléments :
• ses attributs : des variables qui permettent de caractériser cet objet,
• ses méthodes : des fonctions qui permettent de le manipuler.
Les objets de type ”dé” que nous utiliserons dispose ainsi d’un attribut : sa valeur (de type int),
et d’une méthode : lancer(). Chaque type d’objets est défini dans java par une classe.
Question 1.1: Premier lancer
Téléchargez les fichiers De.class1 (le fichier compilé définissant ce qu’est un dé) et Jeu.java,
sauvegardez-les dans votre répertoire de travail. Examinez le fichier Jeu.java, compilez-le et
exécutez-le plusieurs fois.
Examinez le fichier Jeu.java. Ce programme commence par créer un dé (de1) par la commande
suivante :
De de1 = new De();
de1 est donc un objet de type De que l’on vient de créer. On peut ensuite consulter (ou modifier) ses attributs (ici de1.valeur) et le manipuler à l’aide de ses méthodes (de1.lancer() par
exemple).
Question 1.2: Deux dés
Réalisez un programme qui lance deux dés, affiche leur somme puis la valeur de chacun des dés.
Question 1.3: 421
Téléchargez le fichier Jeu421.class Exécutez le et réalisez un programme Java réalisant la même
chose (en utilisant la classe De).
Pour cela, vous créerez les deux fonctions suivantes:
public static boolean gagne(De de1, De de2, De de3);
Cette fonction renvoie vrai si les trois dés qu’on lui donne en argument forment une combinaison
gagnante du 421.
public static void main(String [] args);
C’est la fonction principale du programme telle que vous avez l’habitude de l’écrire. Elle décrit
le déroulement du jeu lui-même et fait appel à la fonction gagne(De de1, De de2, De de3).
Question 1.4: La classe De
1 Les
fichiers nécessaires pour ce TP se trouvent sur www.grappa.univ-lille3.fr/~carme/iies1.html
Vous avez maintenant appris à manipuler les objets. Vous allez maintenant étudier leur fonctionnement interne.
Téléchargez le fichier De.java. Examinez-le. Il contient la définition de la classe De. Celle-ci a
un attribut, valeur, et deux méthodes, lancer() et De().
La méthode De() a un statut particulier : c’est le constructeur. Un constructeur est une méthode
qui a le même nom que sa classe. Elle est appelée quand un dé est crée (par exemple, par
l’instruction De de1 = new De(); dans le programme de jeu). Elle décrit ce qu’il faut faire quand
on crée un dé. Par exemple, ici, quand un dé est crée, on décide de l’initialiser en lui donnant la
valeur 1.
Comme nous l’avons déja vu dans la section précédente, lorsqu’on utilise un objet, on peut
accéder à ses attributs et ses méthodes ansi: <objet>.<attributs>, par exemple de1.valeur.
A l’interieur de l’objet, ses attributs et méthodes sont accéssibles directement. Par exemple, la
méthode lancer() modifie la valeur de l’attribut valeur en l’appelant directement par son nom.
Modifier la classe De pour que, lorsqu’un dé est crée, sa valeur initiale soit choisie aléatoirement.
Question 1.5: Dés pipés
Ajouter à la classe De une méthode piper() qui modifie le dé de manière à ce qu’il ne fasse plus
que des 1, des 2 et des 4, réduisant ainsi considérablement la difficulté du jeu de 421.
Chaque dé créé se comportera normalement au début, et ne deviendra pipé que si on appelle sa
méthode piper(). Une fois pipé, le dé le restera.
Exercice 2: Nombre Mystere
Question 2.1: Un dé à 100 faces
Sur le modèle de la classe De, construisez un objet De100 qui possède un attribut (valeur) et
cinq méthodes :
• De100() : le constructeur de la classe. Il initialise la valeur en lançant le dé.
• lance() : pareil que pour la classe De, mais génère un nombre aléatoire compris entre 1 et
100.
• exact(int chiffre) : fonction qui prend en entrée un chiffre qui renvoie un booléen (boolean),
renvoie true si l’argument correspond à la valeur du dé, false sinon.
• tropgrand(int chiffre) : idem, mais renvoie true si l’argument est plus grand que la valeur du
dé, false sinon
• troppetit(int chiffre) : l’inverse de tropgrand
Question 2.2: Nombre mystère...
Réalisez un jeu du nombre mystère à l’aide de la classe De100.
2