TP : 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 30 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 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.

Gérer sa valeur.

Jeter : modifier sa valeur.

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

C ) Implémentation.

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.

Un classe AppJeu contient la fonction main :

public class AppJeu{
      public static void Main(){
            Test.Run();
      }
}

Question 4.

               a) Ecriture de la classe De.

On vous fournit une classe Alea . Celle-ci permet de générer des suites de nombres aléatoires (méthode Nouveau).

Déclarer un attribut privé de type Alea. Ecrire les méthodes de la classe De.

Tester avec :

public class Test{
         public static void Affiche(De d){
                     Console.WriteLine(d.GetValeur());
          }
         public static void Run(){
                      De d = new De();
                      Affiche(d);
                      d.Jeter();
                       Affiche(d);
          }
}

               b) Ecriture de la classe Lancer, tester avec :

public class Test{
           public static void Affiche(De d){
                   Console.WriteLine(d.GetValeur());
          }
          public static void Affiche(Lancer l){
                     for(int i=1;i<=3;i++)
                           Console.Write(l.GetValeurDe(i));
                            Console.WriteLine();
           }
           public static void Run(){
                     Lancer l= new Lancer();
                     Affiche(l);
                     l.LancerUnDe(2);
                     Affiche(l);
          }

}

                   c) Ecrire la classe Partie :