summaryrefslogtreecommitdiff
path: root/src/main/java/modele/Calcul.java
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-07-02 00:14:17 +0200
committerpolo <ordipolo@gmx.fr>2026-07-02 00:14:17 +0200
commit0c2c3ee5a55f36d270171f2f67938542e251fdc5 (patch)
tree8ea4d6a7ad09a5b1389b829980a7a5476982e754 /src/main/java/modele/Calcul.java
downloadppe_javafx-0c2c3ee5a55f36d270171f2f67938542e251fdc5.tar.gz
ppe_javafx-0c2c3ee5a55f36d270171f2f67938542e251fdc5.tar.bz2
ppe_javafx-0c2c3ee5a55f36d270171f2f67938542e251fdc5.zip
fork utilisant maven
Diffstat (limited to 'src/main/java/modele/Calcul.java')
-rw-r--r--src/main/java/modele/Calcul.java302
1 files changed, 302 insertions, 0 deletions
diff --git a/src/main/java/modele/Calcul.java b/src/main/java/modele/Calcul.java
new file mode 100644
index 0000000..0ae1832
--- /dev/null
+++ b/src/main/java/modele/Calcul.java
@@ -0,0 +1,302 @@
1package modele;
2
3public class Calcul {
4 private int[] tabdegat1;
5 private float degat_moyen1;
6 private float mort_moyen1;
7 private int[] tabmort1;
8
9
10 public Calcul(int[] tabdegat1, float degat_moyen1, float mort_moyen1,int[] tabmort1) {
11 super();
12 this.tabdegat1 = tabdegat1;
13 this.degat_moyen1 = degat_moyen1;
14 this.mort_moyen1 = mort_moyen1;
15 this.tabmort1 = tabmort1;
16 }
17
18 // getter set setter
19 public int[] getTabdegat1() {
20 return tabdegat1;
21 }
22 public void setTabdegat1(int[] tabdegat1) {
23 this.tabdegat1 = tabdegat1;
24 }
25 public float getDegat_moyen1() {
26 return degat_moyen1;
27 }
28 public void setDegat_moyen1(float degat_moyen1) {
29 this.degat_moyen1 = degat_moyen1;
30 }
31 public float getMort_moyen1() {
32 return mort_moyen1;
33 }
34 public void setMort_moyen1(float mort_moyen1) {
35 this.mort_moyen1 = mort_moyen1;
36 }
37 public int[] getTabmort1() {
38 return tabmort1;
39 }
40 public void setTabmort1(int[] tabmort1) {
41 this.tabmort1 = tabmort1;
42 }
43
44 // 1er jet de dé : jet pour toucher une figurine , résultat en fonction de CC ou CT
45 public static boolean jet_de_touche(boolean jet,int C){
46 // simulation lancer de dé
47 int d1 = (int) ((Math.random() * (7 - 1)) + 1);
48 switch(d1){
49 // si 1 echec critique
50 case 1 :
51 jet=false;
52 break;
53 // si 6 reussite critique
54 case 6 :
55 jet=true;
56 break;
57 // comparaison du dé avec CC ou CT
58 default :
59 if( d1 >= C){
60 jet=true;
61 }
62 }
63 // return booléen pour continuer ou non attaque
64 return jet;
65 }
66
67 // 2eme jet de dé : jet pour blesser une figurine , résultat en fonction de force de fig attaquante et de endurance de figurine attaquée
68 public static boolean jet_de_blessure (boolean jet,int fo,int end){
69 // simulation lancer de dé
70 int d2 = (int) ((Math.random() * (7 - 1)) + 1);
71
72 switch(d2){
73 // si 1 echec critique
74 case 1 :
75 jet=false;
76 break;
77 // si 6 reussite critique
78 case 6 :
79 jet=true;
80 break;
81 default :
82 //Comparaison entre force et endurance pour savoir si attaque blesse
83 if(fo >2*end) {
84 if(d2>=2) {
85 jet = true;
86 }
87 }
88 if(fo>end && fo<2*end) {
89 if(d2>=3) {
90 jet = true;
91 }
92 }
93 if(fo==end) {
94 if(d2>=4) {
95 jet = true;
96 }
97 }
98 if(fo>0.5*end && fo<end) {
99 if(d2>=5) {
100 jet = true;
101 }
102 }
103 if(fo <=0.5*(float)end) {
104 if(d2>=6) {
105 jet = true;
106 }
107 }
108
109 }
110 // return booléen pour continuer ou non attaque
111 return jet;
112 }
113
114 // fonction pour determiner le nbr d'attaque d'une arme
115 public static int chgt_a (String a){
116 int attaque =0;
117 int d1 = (int) ((Math.random() * (7 - 1)) + 1);
118 int d2 = (int) ((Math.random() * (4 - 1)) + 1);
119 switch(a) {
120 case "D6":
121 attaque = d1;
122 break;
123 case "D6+1":
124 attaque = d1+1;
125 //System.out.println("test");
126 break;
127 case "D6+2":
128 attaque = d1+2;
129 break;
130 case "D6+3":
131 attaque = d1+3;
132 break;
133 case "D6+4":
134 attaque = d1+4;
135 break;
136 case "D3":
137 attaque = d2;
138 break;
139 default :
140 attaque = Integer.parseInt(a);
141 }
142 return attaque;
143 }
144
145 // fonction pour determiner le nbr de dégats d'une arme
146 public static int chgt_d (String d){
147 int degat =0;
148 int d1 = (int) ((Math.random() * (7 - 1)) + 1);
149 int d2 = (int) ((Math.random() * (4 - 1)) + 1);
150 int d3 = (int) ((Math.random() * (9 - 1)) + 1);
151 switch(d) {
152 case "D8":
153 degat = d3;
154 break;
155 case "D6":
156 degat = d1;
157 break;
158 case "D6+1":
159 degat = d1+1;
160 break;
161 case "D6+2":
162 degat = d1+2;
163 break;
164 case "D6+3":
165 degat = d1+3;
166 break;
167 case "D6+4":
168 degat = d1+4;
169 break;
170 case "D3":
171 degat = d2;
172 break;
173 default :
174 degat = Integer.parseInt(d);
175 }
176 return degat;
177 }
178
179 // 2eme jet de dé : jet de sauvegarde , pour savoir si l'armure d'une figurine la protège d'une blessure
180 public static boolean jet_de_sauvegarde (boolean block,int pa,int sv){
181 // simulation du jet de dé
182 int d3 = (int) ((Math.random() * (7 - 1)) + 1);
183 switch(d3) {
184 //echec critique la figurine adverse n'a pas réussie à se protéger
185 case 1:
186 block = false;
187 default :
188 //comparaison entre pénétration d'armure et sauvegarde
189 if ( d3 + pa < sv ){
190 block = false;
191 }
192 }
193 //// return booléen pour finaliser ou non attaque
194 return block;
195 }
196
197 // fonction simulant des battailes entre 2 unités
198 public static Calcul bataille(modele.Unit u1, modele.Unit u2){
199
200 // Déclaration des variables
201
202 int complet_degat = 0;
203 float degat_moyen;
204 float mort_moyen = 0;
205 boolean dflag = false;
206 int[] tabdegat = new int[50];
207 int[] tabmort = new int[50];
208
209 // boucle simulant 10 000 batailles
210 for (int k=0;k<10000;k++){
211
212 int sum_degat = 0;
213 int adv = 0;
214 int pvE=u2.getFigurines().get(adv).getHP();
215 int mort = 0;
216
217 // boucle parcourant les figurines d'une unité
218 for (int j=0; j<u1.getFigurines().size();j++){
219 // si figurine non morte
220 if(u1.getFigurines().get(j).getHP()>0) {
221 int attaque = chgt_a(u1.getFigurines().get(j).getSelectedWeapon().getA());
222
223 // Condition permettant d'attaquer une nouvelle figurine
224 while(pvE <=0 && adv+1<u2.getFigurines().size()) {
225 adv=adv+1;
226 pvE=u2.getFigurines().get(adv).getHP();
227
228 }
229
230 // boucle correspondant au nbr d'attaques par armes
231 for(int i=0 ;i<attaque;i++ ){
232 dflag = false;
233 boolean jet1=false;
234 boolean jet2=false;
235 boolean block=true;
236
237 // fonction pour jet de touche
238 jet1=jet_de_touche(jet1,(u1.getFigurines().get(j).getSelectedWeapon().getC()));
239
240 // si attaque touche
241 if(jet1==true){
242 // fonction pour jet de blessure
243 jet2=jet_de_blessure(jet2,u1.getFigurines().get(j).getSelectedWeapon().getF(),u2.getFigurines().get(adv).getE());
244 }
245
246 // si blessure
247 if(jet2==true){
248 block=jet_de_sauvegarde(block,u1.getFigurines().get(j).getSelectedWeapon().getPA(),u2.getFigurines().get(adv).getSV());
249
250 // si jet de sauvegarde echec et fig adverse à des HP
251 if(block==false && pvE >0){
252
253 int degat= chgt_d((u1.getFigurines().get(j).getSelectedWeapon().getD()));
254 pvE=pvE - degat ;
255
256 // Calcul des dégats effectués par une attaque
257 if(pvE<0) {
258 sum_degat = sum_degat + degat + pvE;
259 complet_degat = complet_degat +degat +pvE;
260 }
261 else {
262 sum_degat = sum_degat + degat;
263 complet_degat = degat+complet_degat;
264 }
265
266 // booléen pour indiquer une mort possible
267 dflag = true;
268 }
269
270 // compteur du nbr de mort
271 if(pvE <=0 && dflag == true ) {
272 mort = mort+1;
273 mort_moyen = mort_moyen+1;
274 }
275 }
276 }
277 }
278 // si fig mort changement de prochaine cible
279 if(pvE <=0 ) {
280 if (adv+1<u2.getFigurines().size()){
281 adv=adv+1;
282 pvE=u2.getFigurines().get(adv).getHP();
283
284 }
285 }
286 }
287 // compteurs des sommes des dégats et du nbr de mort par bataille
288 tabdegat[sum_degat] ++;
289 tabmort[mort] ++;
290 }
291
292 //calcul des degat et mort moyen
293 degat_moyen =(float)complet_degat/10000;
294 mort_moyen = (float)mort_moyen/10000;
295
296 // Instanciation de Calucl (données pour histogramme )
297 Calcul c1 = new Calcul(tabdegat,degat_moyen,mort_moyen,tabmort);
298 return c1;
299 }
300
301}
302