Bonsoir,
suite à mon précèdent post ( https://www.developpez.net/forums/d1...ide-propriete/ ) et vos retours me disant de ne pas faire hériter la classe Dé, j'ai acté mais depuis je galère à retrouver un vrai random , voici mon code :
Quand on l'exécute :
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225 public class De { private Random random; public De() { random = new Random(); } public int LanceLeDe() { return random.Next(1, 7); } } public class Joueur { private string name = "Wolfen"; public int Pv { get; private set; } private De de; private int compteur; public int Compteur { get { return compteur; } set { compteur = compteur + value; Console.WriteLine("Wolfen a dorénavant : " + compteur + " pts.\n"); } } public Joueur() { Console.WriteLine("Naissance de " + name + ", il a 150 pv.\n"); de = new De(); Pv = 150; compteur = 0; } public int LanceLeDe() { De de = new De(); return de.LanceLeDe(); } public bool Vivant() { return this.Pv > 0; } public void Attaquer (MonstreFacile monstre) { while (monstre.Vivant) { Console.WriteLine( name + " attaque " + monstre.Name + " :"); int atkJoueur = LanceLeDe(); Console.WriteLine("L'attaque de " + name + " est de " + atkJoueur); int atkFacile = LanceLeDe(); Console.WriteLine("La défense de " + monstre.Name + " est de " + atkFacile); if (atkJoueur >= atkFacile) { monstre.Mort(); Compteur = monstre.Points; } else { Console.WriteLine( monstre.Name + " esquive l'attaque!\n"); bool FacilAttaque = monstre.FacilAttaque(); if (FacilAttaque == true) { int bouclier = LanceLeDe(); if (bouclier < 3) { Console.WriteLine( name + " bloque l'attaque grâce à son bouclier.\n"); } else { SubitDegats(monstre.Degats); } } else { Console.WriteLine( name + " esquive!\n"); } } } } public void SubitDegats( int degats) { Pv -= degats; Console.WriteLine( name + " subit " + degats +" dégats"); Console.WriteLine("Il reste " + Pv + "pv à " + name + "\n"); } } public class MonstreFacile { // Général public bool Vivant{ get; private set; } public string Name { get; private set; } public void Mort() { Vivant = false; Console.WriteLine(this.Name + " meurt\n"); } private int degats = 10; public int Degats { get { return degats; } set { degats = value; } } public bool FacilAttaque() { Console.WriteLine(Name + " contre-attaque :"); int contrAtkFacile = LanceLeDe(); Console.WriteLine("La contre-attaque de " + Name + " est de " + contrAtkFacile); int contrAtkJoueur = LanceLeDe(); Console.WriteLine("La contre-attaque de Wolfen est de " + contrAtkJoueur); return contrAtkFacile > contrAtkJoueur; } protected De de; public int LanceLeDe() { return de.LanceLeDe(); } // Virtual private int points; public virtual int Points { get { points = 1; return points; } set { points = value; } } public virtual void Naissance() { Name = GenererName(); Console.WriteLine("Naissance de " + Name + "\r\n"); } protected virtual string GenererName() { int generer = LanceLeDe()-1; string[] tableau = new string[] { "Lievro", "Agaric", "Arkos", "Gravios", "Isatis", "Zabeille" }; return tableau[generer]; } // Constructeur public MonstreFacile() { de = new De(); Vivant = true; Naissance(); } } public class MonstreDifficile : MonstreFacile { // Override private int points; public override int Points { get { points = 2; return points; } set { points = value; } } protected override string GenererName() { int deGenerateur = LanceLeDe(); switch (deGenerateur) { case 1: return "Tigror"; case 2: return "Tropicallo"; case 3: return "Megafeu"; case 4: return "Meka"; case 5: return "Metamantides"; case 6: return "Tenebro"; default: return "bug"; } } // Nouvelles Propriétés/Méthodes private int degatsMagic; public int DegatsMagic { get { int moinsDeSix = LanceLeDe(); if (6 > moinsDeSix) { degatsMagic = 5 * moinsDeSix; return degatsMagic; } else { degatsMagic = 0; return degatsMagic; } } set { degatsMagic = value; } } }
ça me renvoit les même random pendant 5-6 fois :/ ,c'est assez "enquiquinant" pour les combats...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 static void Main(string[] args) { Joueur wolfen = new Joueur(); MonstreFacile monstre1 = new MonstreFacile(); MonstreFacile monstre2 = new MonstreFacile(); MonstreDifficile boss = new MonstreDifficile(); wolfen.Attaquer(monstre1); wolfen.Attaquer(boss); wolfen.Attaquer(monstre2); }
quand je faisais hérité la classe De (voir lien du dessus) je n'avais pas ce problème :/
Quelqu'un peut il m'éclaircir ? merci.
Partager