Bonjour,
Dans mon projet de jeu, on me demande de faire rouler un dé à 6 faces, qui retourne soit une valeur Sushi, Fishbone, Red_Chopstick ou Blue_Chopstick.
On me demande donc dans la classe Dice de créer une méthode roll(), qui ne retourne rien (void).
J'ai fais pour cela deux méthode private (int diceGet() et DiceValue convert(int nb),une qui lance un dé à 6 faces (un nombre aléatoire entre 1 et 6), et une autre méthode qui retourne la valeur (Sushi, Fishbone, etc..) selon le int reçu en paramètre.
Ma méthode roll(), fait appelle à ces deux méthodes.
Les méthodes private fonctionnent très bien lors des tests, mais lorsque je veux faire appel à roll(), rien ne change, j'ai toujours la valeur par défaut du dé.
Est-ce que quelqu'un peut me dire ce qui cloche dans mon code? Dans la méthode main en fin de classe, j'ai fais un test qui utilise les deux méthodes private pour générer aléatoirement 50 dés, cela marche parfaitement. Quand je rentre ce code dans roll(), rien ne change (avec getValue() pour récupérer la valeur).
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 public class Dice { /** * Value display of dice. This value can not be change by the user. * * @see getValue */ private DiceValue value; /** * The constructor initialize the dice with a value(these value is a * choice). The value is initialized with Sushi. */ public Dice() { this.value=DiceValue.SUSHI; } /** * This method give the value of dice. * * @return the value display of dice */ public DiceValue getValue() { return value; } /** * This method throw a dice. */ public void roll() { this.convert(this.diceGet()); } /** * This method display a string. * * @return a display of the value */ @Override public String toString() { return "" + getValue(); } //============================================================================= //Mes méthodes privées //Cette méthode lance un dé à 6 faces et retourne un entier private int diceGet() { return 1+ (int) (Math.random()*(6-1+1)); } /*Cette méthode reçoit un entier et la convertie une valeur DiceValue *corresponante. */ private DiceValue convert(int nb) { DiceValue displayVal = DiceValue.SUSHI; switch (nb) { case 1: case 2: displayVal = DiceValue.SUSHI; break; case 3: case 4: displayVal = DiceValue.FISHBONE; break; case 5: displayVal = DiceValue.BLUE_CHOPSTICK; break; case 6: displayVal = DiceValue.RED_CHOPSTICK; break; default: System.out.println("ERROR"); } return displayVal; } //============================================================================== //Cette partie est privée et sert à tester les méthodes privées public static void main(String[] args) { Dice dé = new Dice(); for (int i = 0; i < 50; i++) { System.out.println(dé.convert(dé.diceGet())); } } }
Partager