Thème : jeu du 421

Règle du jeu : le jeu comprend un nombre de lancers décidé par le joueur. Le joueur lance 3 dés, s'il ne fait pas 421, il peut reprendre un nombre quelconque de dés et cela à deux reprises encore. S'il obtient 421, il gagne 50 points sinon il en perd 10. Au démarrage du jeu le joueur a un capital de points égal au nombre de lancers choisi multiplié par 10. Une partie peut s'arrêter également si le joueur n'a plus de points.

Objectif : analyse/conception et implémentation.

 

A ) Analyse.

1) Cas d'utilisation.

Préconditions : aucune

Acteur principal : le joueur.

Portée : le jeu du 421

Niveau : utilisateur

Scénario nominal :

1. Le joueur indique le nombre de lancers.

2. Le système initialise le jeu.

3 Le système retourne la valeur de la face visible des 3 dés triés.

4. Le joueur a obtenu 421. Retour à 3.

Extensions.

4.1 Le joueur n'a pas obtenu 421.

4.1.1 Le système demande le nombre de dés à modifier.

4.1.2 Le joueur indique les dés à relancer.

4.1.3 Le système relance les dés demandés. Retour à 3.

4.2 C'est le troisième essai. Retour à 3.

4.3 Le nombre de points disponibles passe en dessous de 0. Fin

4.4 C'était le dernier lancer. Fin.

Question 1 :

Etablir le diagramme de classes du domaine.

Solution

2) Contraintes techniques.

Question 2 :

Modifier le diagramme de classes.

Solution

B ) Conception.

1) Responsabilités des classes.

Gestion de sa valeur.

Gérer la valeur de sa face visible.

Jeter : modifier la valeur de sa face visible.

Jeter un ou plusieurs dés.

Trier les dés.

Vérifier la combinaison gagnante

Gérer les points et le nombre de lancers.

Gérer le lancer courant : modifier la face visible des dés

Gérer la fin de la partie.

 

Question 3.

Affiner le diagramme de classes en proposant des méthodes et des attributs ainsi que les navigabilités des associations.

Solution

Proposer un diagramme de séquences partiel où figurent uniquement les créations d'objets.

Solution

2) Tests.

Une classe Test va être utilisée pour tester les classes. Cette classe ne contient que des méthode statiques et surchargera une méthode affiche.

Le fichier aura comme nom AppJeu, c'est cette classe qui contient la fonction main

Question 4.

a) Ecrire la classe Face, tester avec :

Dans la classe AppJeu, la méthode main ne contiendra que l'appel de la méthode run (static)

 

b) Ecrire la classe De, tester avec :

 

Remarque

version Java : pour générer un nombre aléatoire compris entre 0 et 6:

int n = (int)(java.lang.Math.random()*6);

c) Ecrire la classe Lancer, tester avec :

 

d) Ecrire la classe Partie, tester avec :

C) Implémentation.

Une classe Interface Utilisateur IUJeu prend en charge la mise en oeuvre du jeu et son interface avec l'utilisateur.

Responsabilités de la classe IUJeu :

 

La classe AppJeu initialisera une partie :

public class AppJeu{

public static void main(String[] args){

IUJeu j = new IUJeu();

j.run();

}

Question 5.

Faire apparaître les deux nouvelles classes dans le diagramme de classes ( sans attributs ni méthodes )

Solution

Question 6.

Ecrire le code complet.

On utilisera une classe Console qui permet les différentes saisies :

Classe Console à télécharger et mettre dans le répertoire du programme. (Click Droit enregister la cible sous)

Utilisation :

String rep = Console.readLine("Taper votre réponse"); // rep contiendra la chaîne saisie

char c = Console.readCar(" quelle lettre "); // c contiendra le caractère saisi

int n = Console.readInt ("nb svp"); // n contiendra l'entier saisi