
Atelier Jeux de dés (en 4 parties)
Contexte :
DAIGL prog - Java
Manipuler et concevoir des classes, des méthodes, des constructeurs
Créez un nouveau projet AtelierJeuDeDes
1e PARTIE – LA CLASSE DE AVEC SES CONSTRUCTEURS ET SES METHODES
1. - Créez une classe De avec les propriétés num (n° du dé), nbFaces (nombre de faces) et valeur.
- Encapsulez-les et créez les accesseurs getNbFaces(), getValeur(), getNum().
- Créez un constructeur sans paramètre qui initialise par défaut le nombre de faces à 6 et la valeur
du dé à 0.
- Créez un autre constructeur avec un paramètre permettant d'initialiser le n° du dé.
- Écrivez une méthode lancer() qui simule un lancer du dé en tenant compte du nombre de faces.
Demandez-vous s'il est préférable d'utiliser une fonction ou une procédure.
- Écrivez une méthode toString() qui retourne le n° et la valeur du dé selon le format "dé n : valeur".
- Écrivez une classe Test qui crée puis lance 3 dés et affiche leur valeur.
- Ecrivez une méthode piper() pour la classe De qui truquera le dé en lui faisant sortir uniquement
des 4, 2 ou 1. Un attribut estPipe dira s'il est pipé ou non.
- Testez à nouveau avec des dés pipés.
2. Prenez un peu de temps pour répondre aux questions suivantes (si possible sans consulter de
cours) :
- Quelle est la différence entre une classe, un objet, une instance ?
- Quelle est la différence entre variable d'instance et variable locale ?
- A quoi sert la méthode main(), peut-il en exister plusieurs dans un projet ?
- Comment s'appelle le fait d'écrire dans une classe deux méthodes portant le même nom ?
Annexe – Comment générer des nombres aléatoires ? (rappel du cours)
En java, il y a 2 manières d'obtenir un nombre aléatoire, voici la 1ère :
– dans la classe Math, utiliser la méthode random, par exemple :
int n = Math.random(); // retourne un réel compris entre 0 (inclus) et 1 (exclus)
int n = (int)(Math.random() * 8); // retourne un entier de 0 à 7
– voici la seconde :
import java.util.Random;
…
Random r = new Random(); // on crée un objet de type Random
int n = r.nextInt(9) ; // on utilise la méthode nextInt de l'objet r en lui passant
// un paramètre p
// nextInt() retourne un entier de 0 à p-1 (p exclus)e