From 3be48211ad062297750f9e103c46f63d4f7ab1f3 Mon Sep 17 00:00:00 2001
From: Sarah CHERCHEM <sarah.cherchem@etu.univ-amu.fr>
Date: Fri, 6 Dec 2024 13:27:11 +0100
Subject: [PATCH] make MotorizedFireFighter extends Firefighter

---
 .../executionHistory/executionHistory.bin     | Bin 63629 -> 75831 bytes
 .../executionHistory/executionHistory.lock    | Bin 17 -> 17 bytes
 .gradle/8.10.2/fileHashes/fileHashes.bin      | Bin 28747 -> 34147 bytes
 .gradle/8.10.2/fileHashes/fileHashes.lock     | Bin 17 -> 17 bytes
 .../8.10.2/fileHashes/resourceHashesCache.bin | Bin 23427 -> 25161 bytes
 .../buildOutputCleanup.lock                   | Bin 17 -> 17 bytes
 .../java/main/app/SimulatorApplication.class  | Bin 3219 -> 3219 bytes
 .../classes/java/main/app/SimulatorMain.class | Bin 438 -> 438 bytes
 .../java/main/controller/Controller.class     | Bin 7423 -> 7430 bytes
 build/classes/java/main/module-info.class     | Bin 337 -> 337 bytes
 build/classes/java/main/view/Grid.class       | Bin 401 -> 401 bytes
 .../classes/java/main/view/ViewElement.class  | Bin 1693 -> 1644 bytes
 src/main/java/controller/Controller.java      |   3 +-
 .../model/Board/BoardFireFighterBehavior.java |  71 +++++++++---------
 .../java/model/Board/FirefighterBoard.java    |   6 +-
 ...trategy.java => CloudStrategyElement.java} |   6 +-
 .../ExtinguishFire/DefaultFireFighter.java    |   7 +-
 ...y.java => FireFighterStrategyElement.java} |  10 +--
 .../ExtinguishFire/FirefighterFactory.java    |   8 +-
 .../ExtinguishFire/MotorizedFireFighter.java  |   2 +-
 ...egy.java => MotorizedStrategyElement.java} |   6 +-
 .../{Strategy.java => StrategyElement.java}   |   2 +-
 ...Strategy.java => FireStrategyElement.java} |   6 +-
 23 files changed, 68 insertions(+), 59 deletions(-)
 rename src/main/java/model/ExtinguishFire/{CloudStrategy.java => CloudStrategyElement.java} (94%)
 rename src/main/java/model/ExtinguishFire/{FireFighterStrategy.java => FireFighterStrategyElement.java} (89%)
 rename src/main/java/model/ExtinguishFire/{MotorizedStrategy.java => MotorizedStrategyElement.java} (94%)
 rename src/main/java/model/{Strategy.java => StrategyElement.java} (87%)
 rename src/main/java/model/flammable/{FireStrategy.java => FireStrategyElement.java} (92%)

diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index 0d10cd15e6aa1d0ba21cc348a2fb3c9faf15cd82..459f04112a97c216770827ed0a626f1ff39e9127 100644
GIT binary patch
literal 75831
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
Pd;luEFKmOX)L#YwBN}eW

delta 1649
zcmdmffu;8&^8^t_=82-}jFuY%Pl!)U5Sc6~;ly-OdvmOWeu#bY?9yVRRFlf`)Kb%=
zqOyWQGZT}{?4+!m!mLDr4G*jCxrmf$O_^sRc2zF_r!9ua=F>S@jBIV8A#S=Blb!Ok
z7*9`r7-K71lv<o$T9lkxtY4OyTF%JW3Zf=A#@RWc%ILc!7G;NIq~@mTB^MVn3+y{_
zdzJdDofCdeKIVS<&k8Qa$smoWswN9|+u5KQ15%}zR*{>-EO2+?){7OB;<<`AIlubq
zx~4PsgCxQ30IOg;26CYk+yH@|vjLwZ*9ob7{(EJw$su#SNd-!bCni6PF_~O2o2?$M
zPCqv>Gmio65yn0gXER_pd&A=6)3zJE7H8}N*$uXq0mETS!HRYWGBXJ5IM33_R%*U|
z&%%t0&XzI9m>FQMVp93M`FVkVgrk1o?D90D(yZiClOof^oV?uRvRt#G^mL=j#Nu3m
zm0IRiv#hnG4y1CGoQ%v_zla4xX!653uA3jsso)h5Q0F{0J%Bl6-NmIjKDNnECS8}A
ztXaQsa@k7f$rBp68TF^9u``-5KA8M4#$$3qIO}vV4o2bW-`N?BCW~zL1dA-;U=*6(
z%E4&J_!_2a^6i^)Ld*h})ppEW(V7!c`!Orlozql&x&bGnHsf0)Rb12GaWaZcKg!8y
z&-e%?KD~*HQFMAT7o!Q|W4M?YH=~#kvw(DorPj{)?1>AcdLMKy4hWmh$<3&|`P+Ii
z#>s5)o|DTT@lWGpWSu^lhtY!Z1z0moD2|trXSx9|qZQ*TWN{_m{Ib;C)Vz{ny{yEt
zL}mf8$8Kv+Pt#*$J;QN+p#tYq#+8!`ABloY<%BDpTo~ptc|i;t$UYUf%%W7c%=C<s
z)FP-6xySdki@b4sW^vZ?wvC&I0OK-{5rXIn-@)85x%Gj#2(y5_<5Q1QdKs)+udy!-
z;fmhRxE7=hB+2*zu2gZ0q!6=!SA&45&h<-b{$^hBCMzF2oSgqie6r#eNyax&g_4tJ
zZsnc4<)IB+tA-G>z`6{<7cLSjF29<1%vK`w!N<w@j|>=L&XAb=dK;ezvp`g#H*2=f
zj1Bd(*!Mm@yHyhG3^|bG<k>Br)7^v_g(oj~tP71Vw<l7Qb)J|oJ^@?o_Jj{3K(iz+
z<$b?Xz>)iH%K!6ka=jQAPj+}B!T}4+$q&~0PyY6lfBIt)Mq_A%e|suD`OZ_*$)XXS
zlTXFjOlIA2Vlw-4vB__r8B8t<a|Q=J`*Xp`Yo7B>mlkKVocy&PEI9qBIHS;H!52D{
z-L`s8-uOav^7I$_lgqYyPCmQCZL?N_7xVN5GK?CN=OjA|w06zjQy-WyziQ5kaP^C}
zu9M#<PoEsUUx4N5*~5D#=kHIG3Kh#THCX*`-H+v7ix~_qh96$?dCzvE|CWq%rZciL
zicL016`w3~fZN4-isQry^;g>*C7iT*4sT~;Xv@t{NzGwsbIMOFN@45)Q+mlciN(bX
z0!O6zPFKAt;<jP%W__U|`~Uly!+W+H-I&~;Dk1)U!ax6xD^vE&Et(h2e_~Tz-&v5{
z>B;+2#iazAcs@*6a^J8y;dk;p{*<;=V7Ycy#`%*!u92L4_W--N^16>b3m+e<(LJuQ
zeBzhTviD&3c1#bDXH*s6vCOHW>DgPwG{HstZ!9|9ITfsb>Er`bq$Ko2H~vgGD%ZD>
z-{~pKVFlOOV7Zr!lP?^S(srtu@#zz5L~6A2=_~d9&W~<_O<m={%pkDv+0@x?&qWF+
b+&BJz{AP&U<aY;?rl%?}%5PTqn9B|TNJhcD

diff --git a/.gradle/8.10.2/executionHistory/executionHistory.lock b/.gradle/8.10.2/executionHistory/executionHistory.lock
index dc9b958a69a79966bb17ff7689c9022c15f91339..e2e0af4615507a280641a02a551948f25839bfd4 100644
GIT binary patch
literal 17
UcmZQRe96UU<&lZk7$Be;06tj-cmMzZ

literal 17
UcmZQRe96UU<&lZk7$6`A06t0uX#fBK

diff --git a/.gradle/8.10.2/fileHashes/fileHashes.bin b/.gradle/8.10.2/fileHashes/fileHashes.bin
index 87310951124d22132928c8af855e06a950b81eed..8b9850dbfcb79c223a9b6935bf38eb34a22633ca 100644
GIT binary patch
delta 7258
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
DV-)Wp

delta 344
zcmaFd#dP`s;|601A%?RJuO)+z{CsB100#cmlVc@jPF9mFpS)GlV6v!`$K+nAgvqAT
z9+Rg^OHAgK@tB+|BQbfajKSo;GKrJRWZfrUm6e#xDmP*BQMnb9TjeDtZ<RNk{7+tg
za;ZYaWM4(Y$<q||C*M_^IJr&9VDdSo^2xEv5|ewCB_{7xmY6K7A~D%l<;LV(Rl~{K
zR6Qn(sYy(BQ}dX-Oig0)JGK7FQ`HS7-&L2Gtg2x+IZvZ}vZ$uSWLHgz$)%bSlb32r
zPQIpjVDdUGgUR2t3?|!Y>rZag_L%%sTVk@Pj=|(u9nZ=8blfMK>UvC`s%tR$uI_=!
zTlFL+Kh-ms?5b}t`KrFeWL5)-$)*O9lhX|1C*L(Nm~3k(F?p_`$7E5X%E`-&JSMXl
zi%<47_L#iZSaR|`<M_#;CK8k9noOANYAP|g)KrN{*mI-e5Alr#7g#nsdT?m~0AZtl
AA^-pY

diff --git a/.gradle/8.10.2/fileHashes/fileHashes.lock b/.gradle/8.10.2/fileHashes/fileHashes.lock
index 20309a5ed04d71b4ec90a70520da51a1b0d06329..404b97867be6a0741d90503283928ce3074d4a4c 100644
GIT binary patch
literal 17
VcmZR+_F~glt9wx?3}C=w2LMF*1%Utn

literal 17
VcmZR+_F~glt9wx?3}C<<0RTl21)2Z=

diff --git a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin
index 475ab9df139928ba57d62937f467bbeed2e56065..8cbc23810fcce9a52779d9e11a796b0fbf43d578 100644
GIT binary patch
delta 1751
zcmZqP&Uo?&;|3E6#v_wWC2k0G?wGe&EJ-Yw0Sw|7PG*%<5a==0kSP)Rp#m0Ti1D8+
zD;dZat~`~es$35umN+>@(o$g7>UnWb>vv~C#NwY$o+_yzFxy=G)7iRq1&CnG&&g{g
z6&x1Irfr*h;(7=~FmCgIC|GQ}iO>1YjSh%-Vl7no|B_g~NyZ``vmoNpOD7+dR1jF<
zbp7qIaF2Y5V1nl4yOJ{mHU+MT2ud<2ga{^zPtKKU5ZKX?x#igV4LK0Ogs+pIN-6U5
zsW>K{KFkCWi#<B|uT+M>zWCFt<KqtLKm=p9PL7rSA#mo$a;XsM4=oVESlh|IG8r0|
zYP0;`IR9sZ3dX}+dO6g3-t+ngc@XjV!;{y_DDtx~E;ou*4uXiqO`LpGCP3r1)wSqN
z5^b9xf-#d}2HaC+?3jD35$e{&`IC8NGa_EQbH8~eV;2fh94ie|{5JQ@^Mvr7OCaJ&
ztZ?x~DG!dhOEE*l<E>%h?^aJLES~v-1tK1EeR8g>BEK&8pUdwpFG9rPzE5tIRpf7+
zaBF6n_j{<A@8r3%it2nP`@L(X?}La%zl53j+3e_<ix=}&Ld0VVCvTNi<X6g5a6cSq
z1r^hsd{$OL;M<qNrF}cM$3g_-I43`q&E!v$>hk<44^1-B$0xhWSqS{wD5$fq(wZHj
zFn00eQaJ?y2IGVGtTP^lLj)5KPVSYP$)9;N<C#O~WQbS-`(#=983F>oc`xtNH#-Iq
zjBT8}R(>Y`$w%8y71-85#FEq}+bSsX>+2@{4|D5+h$TLr9I6l?An~U)TC+O32O^ko
zdGcI^2Lc)^dBeK59&CjO#^p~gRa9`$xw|Cr`U8;{5W(nXSa9eb|7)>RRiqvw9(NTk
zerZemgnw<h5b=cE$-Rn!d@K*0&j0U>hls^&zM{C0QNZ`bB%f28IIchh<6|f1DhCJz
zGhWEN%Y0}%L@=R$@>XR_{=8{y)fetVofZ3h@>696ftX7>11GmOWk3|hOHTf)+#ry)
z^3gH*gSOC25vM)5R3($YviPXi|9q&zgpHH0ssv~h&YH@il=<~DM0cVk%<&~U3<1Ad
zE<!U)g7;)uRSSWt_;QcztGQDlisS1i`>J*^2^DTs{2{*4U<K=DM-M0A$<;vylM6kR
z1U}bp)%?-iz9;G2X}xn&K|Pa?dYDWu4o?#hl~71Kx60+;o9(}{Gjrb?PJS64CZKU+
zc@b0MqHiM0T76Fb%SoDC?PoIiZ>ZAb#0VDwi~6eS_(NA@({%rr{;mGBa<X8MaIoTr
zso^yVA6T|&<|k=>pUA+#AZN_Lz#z%Mz#s_10%ihJZp2Ny+&!b%jVZaf$pce`r{K@h
zBl}9~8WrRw8i#t$np_wm%)ctRlxupC%AZ{YC-c`&uAM9$X<}5S?k;<`=Ig&}%YPl)
z<Z|E<rcn*;5wRw>=I1J2&nOoCU0yl4F)~bmssF~svU~F;O-wbu)Z)x*I5{?2Z8C3^
z!Q}n^N|SA)Iwn8#SK`k<@t)P+@nm*NX;M{}>E+2!yi6z0_f?u4>)kQ=b(m89?7RJ;
z>&w>5HK_~ko7i)_3DfSSy%F0rcissN)mKz&j){=PRKY8G_ZVZN+^JjHjTg@(+ik^E
z@mhbcf6dwQckJPH6O<0FONOfeC2L4{DupaEiIh0S>k-DZzv@s6C>x=LxQw9w&q)$&
zVue2il_YxYKzRyH#gcpcPD^Tb&2yO}cC^I%OD)_QP>g}FK!11zvm@XAd73NsTb3Bu
c98$wna%Z>W>1W!9o<6szJj8f;o<B$h0Q;C^ivR!s

delta 192
zcmX?kgt2)$;|3E6#)*?nC2mYsm6VtqD(N|So235azmgJ@b)_UG_ex1j-YYd>a;kL2
z<ge0_lhtJ6C(o7nFnOtL!emo9$;oMQ?vwAzB}|?xFFE;~yu{>x@)DEX6eK2>DTq&A
zs*pHYPEmhys-nc?sfrUP+bQ)=eyTKaa-Xuq<bBHSlVw$IOy*UUn4GKXx%r&xbjHcG
z>K>EtsvAyL(-5B=s!=idsYc@DI8FD-S2YbL%W5?-@vhvc_(Oc7K>^ohM-L}q0A&?O
AEC2ui

diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 3ee9cf49c8538b4e500bb8adaf6d780e784aebb4..2ee3535aaefb3d8d72961472cca76fcfb5d51700 100644
GIT binary patch
literal 17
VcmZSn@!s@&$JN{N3}C=G9{@!A1?B(%

literal 17
VcmZSn@!s@&$JN{N3}C=m2>?XZ1;79R

diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class
index 8c667bcd48cc45a2d2c6b4306ef0f234f61bce68..74b875251a0cde725bd7e353d53f8ef10d36b6c1 100644
GIT binary patch
delta 94
zcmbO%Ia!k9)W2Q(7#J8FHgf2(3-YruOy**k!Z4McVHyv^bcPw5OWBzinFSbTO}1p0
z<(tFBz`-z=hoPIHM}VPcb2$eyi{vB*W`>yzvl-?w%x7R=;9_88SirD|VF`mI0C1HR
A+yDRo

delta 93
zcmbO%Ia!k9)W2Q(7#J9wHgf2(GYc?Gp6tURD?gQsfrDWh4?{OYj{rjtKO4hLE{0hQ
zv)LKu@G#6}n77%Tor!UCIR`U~<O~L8hDi)l7^XAKXJBC9Vqj!gz_5s634<g6V5Akq

diff --git a/build/classes/java/main/app/SimulatorMain.class b/build/classes/java/main/app/SimulatorMain.class
index 1d13229f73ef27c233a432bc89aa3dffc086246a..4530cc2971636d0c78bcf91139a4f699c2f20eb4 100644
GIT binary patch
delta 17
ZcmdnSyp5UT)W2Q(7#J8FHgc?E1OPu^24esK

delta 17
ZcmdnSyp5UT)W2Q(7#J9wHgc?E1OPv324w&M

diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class
index 5a96d3a3c13b10ed04af9a938a84854c793dd986..f89eb335ede47088370d807266be9cbff8011b7f 100644
GIT binary patch
delta 482
zcmexw*=EIY>ff$?3=9ko8#xTw8Pz9oh_bt+rX`l<lx+5AFW?g7XJho@V)SP8VQ2K^
zVf174-~3OIiBV60F_4i#T*D_Tu`DsILO-=EHLpb96+~KVhVip926HiRFoy6jIx#v6
zFgkA%wq;~gnrtWHz-h+7!eGw8!C*1DU8I25nt_AChCzkFmO+QXZZeCgKdU1HFN4$M
z2+<9yt_<7^ZVbW<?hJYi9t@TYo(zr*UJStu-V9+3J`4#Az6^N`ew%g0#2GaM8MqmO
z7{nNY8Dtqk7}OX-8T7%5LK%V>LKq?#!WohnA{Yu7A}8mH|8$IIkYb2oP-KW@P-Tc`
z&|yemFknbxFlR_+ux3bQaAHVjaAU}1@MXwm2xQ1*h+xQPh+!yXNM<NzNM|Tx$YLm;
zyj<ddXbl55LoI_4Lp_56Lj!{`LnDJVL(}9M$$ZvU26l$F$sZ)`Svwin8M-EakQABh
zA*I3E%fQ0WH@Q^GhIJwX3&W(z+ob#jr!ufGOk?0?n9d-~FoQvyVdi8p=_KB{415gp
z7}OZ%GiWg^nA|Eoi*qpp3&Roy4u++ZHDsJwS1@ohtejjR<HlGwdAp3hq$dM2V*q0i
WV<=-70|NsW10!QNV<clVgCqcxLS(oA

delta 474
zcmZp(`ftf`>ff$?3=9lT8#xTw#T0V$Q&MyET`Nj5^U_N*i!<CZi&FJBhp`uMu?sMI
zF*1m2Og_jdtZJ<p#?Q*=!^ObC=*z?C#ON%*=*-W?7{J9C$QZ=V7|g>M!Wg>wx*!wd
zW_Dp)Mn=WSt|AVcrVK0$W(*t*=9BwG3V5v;I2f!MR2Xa+bQo+WbBp@3Ixz4uI8Kfi
z-Jt5iz|G*wAk5&#pvU0OV9DUY;K<;~5X|7k5XRumkig)>kjLP=*+fj7Q8R#nn<0=v
zj3J0YmLZryjUj|VpCOdNharR^h#{CEf+36{i6NY!fFWXXiTF>)C<ZBpXa+@w7zR~_
zI0hYtcm@N8L<Vz)BnE4S6b2`TGzK?@3<h6@EQUaa9EJ#nJcbyC0)}LUB8GH^Qid#s
zvdQZt4v1DWa5K~}2r<+#C@|DB7&A05STi(EZkEhvZDC+%Xr26B(w?=0ft{gqvbB^A
zYYzhpL+|7oDI3-a3@i*2C-0T=7o5Vt!Z4MAn_(J*FvD~PafTU_Wu=pN=P>Xw%w<qx
zn8%>SFn@B7^eoOr3@i+b88{f0OxBliW?jy}&9Gu}xr`fQ?c{wj`jY+(%#5Cl-i&^X
TVGIlmTnvni;f#@t(F~FR&<bJO

diff --git a/build/classes/java/main/module-info.class b/build/classes/java/main/module-info.class
index a05e120336680c15a80138be7c30617ca4e5473c..7a769b70875d147512dd0dc3f725d1c113981548 100644
GIT binary patch
delta 21
dcmcb}bdibU)W2Q(7#J8FCUPV&8cfW50RUcC2s;1(

delta 21
dcmcb}bdibU)W2Q(7#J9wCUPV&8coc60RUcc2tNP-

diff --git a/build/classes/java/main/view/Grid.class b/build/classes/java/main/view/Grid.class
index c4fa5e96b46909e2a89e512f2ad9c2d4d042260c..3d42b97050079349780725b186452a4ef88502d2 100644
GIT binary patch
delta 17
ZcmbQpJdv5>)W2Q(7#J8FHga?_0suO81@r&_

delta 17
ZcmbQpJdv5>)W2Q(7#J9wHga?_0suOI1@-^{

diff --git a/build/classes/java/main/view/ViewElement.class b/build/classes/java/main/view/ViewElement.class
index 1e8628999cc6101c22f3f65568027fa8214a343a..8047aa8366eef1bb8ec486a30882d7f0e9354ea1 100644
GIT binary patch
delta 94
zcmbQs`-X?>)W2Q(7#J8F7_v8VwJ~pA%q+vm$T;}`i#0nFgD!(L1Jh()R(tVe1~vu|
p;9)RiFk)b4NMT@LU}8v}T*jKnoW_to`4;OIeu!8GLnc@*3jii^6A=Ia

delta 142
zcmaFEGnbd^)W2Q(7#J9w7;-jpwJ{3{_@<U*<fjBA7A5AUmZTOHZ|-B3V`OBSyq3jU
zD4BtQft8Vgp@D&ci9wgant^%pdlq}G6b3d15a3}jWH4f2W&kPUWoBRyV1Qr-28L7y
cke0N`uB?g7=?oc@SF&#5hlph|WP#<f0fuTDr~m)}

diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 053ab13..f0e6499 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -15,6 +15,7 @@ import javafx.util.Pair;
 import model.*;
 import model.Board.FirefighterBoard;
 import model.ExtinguishFire.Cloud;
+import model.ExtinguishFire.DefaultFireFighter;
 import model.ExtinguishFire.FireFighter;
 import model.ExtinguishFire.MotorizedFireFighter;
 import model.Obstacle.Mountain;
@@ -88,7 +89,7 @@ public class Controller {
   }
   private ViewElement getViewElement(List<ModelElement> squareState) {
     for (ModelElement element : squareState) {
-      if (element instanceof FireFighter) {
+      if (element instanceof DefaultFireFighter) {
         return ViewElement.FIREFIGHTER;
       }
       if (element instanceof Fire) {
diff --git a/src/main/java/model/Board/BoardFireFighterBehavior.java b/src/main/java/model/Board/BoardFireFighterBehavior.java
index 9a88252..5da4396 100644
--- a/src/main/java/model/Board/BoardFireFighterBehavior.java
+++ b/src/main/java/model/Board/BoardFireFighterBehavior.java
@@ -1,12 +1,15 @@
 package model.Board;
 
-import model.*;
+
+import model.ElementFactory;
+import model.ElementGenerator;
 import model.ExtinguishFire.*;
 import model.Obstacle.MountainGenerator;
 import model.Obstacle.Road;
 import model.Obstacle.Terrain;
+import model.StrategyElement;
 import model.flammable.Fire;
-import model.flammable.FireStrategy;
+import model.flammable.FireStrategyElement;
 import model.flammable.Rocky;
 import util.Position;
 import util.TargetStrategy;
@@ -24,30 +27,30 @@ public class BoardFireFighterBehavior implements BoardBehavior {
     private ElementFactory<Rocky> rockyFactory;
     private static  Map<Position, Terrain> terrainMap = new HashMap<>();
     private static int step;
-    static Strategy fireStrategy;
-    static Strategy fireFighterStrategy;
-    static Strategy cloudStrategy;
-    static Strategy motorizedStrategy;
+    static StrategyElement fireStrategyElement;
+    static StrategyElement fireFighterStrategyElement;
+    static StrategyElement cloudStrategyElement;
+    static StrategyElement motorizedStrategyElement;
     private ElementGenerator moutainGenerator;
 
-    public BoardFireFighterBehavior(Map<Position, List<Position>> neighbors, ElementFactory<Fire> fireFactory , ElementFactory<FireFighter> firefighterFactory,
+    public BoardFireFighterBehavior(Map<Position, List<Position>> neighbors, ElementFactory<Fire> fireFactory , ElementFactory<DefaultFireFighter> firefighterFactory,
                                     ElementFactory<Cloud> cloudFactory, ElementFactory<MotorizedFireFighter> motorizedFactory, ElementFactory<Rocky> rockyFactory) {
         this.step=0;
         this.neighbors = neighbors;
         this.rockyFactory=rockyFactory;
-        fireStrategy =new FireStrategy(fireFactory);
-        fireFighterStrategy =new FireFighterStrategy(firefighterFactory);
-        cloudStrategy =new CloudStrategy(cloudFactory);
-        motorizedStrategy =new MotorizedStrategy(motorizedFactory);
+        fireStrategyElement =new FireStrategyElement(fireFactory);
+        fireFighterStrategyElement =new FireFighterStrategyElement(firefighterFactory);
+        cloudStrategyElement =new CloudStrategyElement(cloudFactory);
+        motorizedStrategyElement =new MotorizedStrategyElement(motorizedFactory);
         moutainGenerator=new MountainGenerator();
     }
 
     public void initializeElements(int rowCount, int columnCount) {
-         fireStrategy.initializeElement(rowCount,columnCount);
-         fireFighterStrategy.initializeElement(rowCount,columnCount);
-         cloudStrategy.initializeElement(rowCount,columnCount);
+         fireStrategyElement.initializeElement(rowCount,columnCount);
+         fireFighterStrategyElement.initializeElement(rowCount,columnCount);
+         cloudStrategyElement.initializeElement(rowCount,columnCount);
         // Pompiers motorisés
-        motorizedStrategy.initializeElement(rowCount,columnCount);
+        motorizedStrategyElement.initializeElement(rowCount,columnCount);
         // Rocky
         rocky = new ArrayList<>();
         List<Rocky> rockies = rockyFactory.createElements(rowCount, columnCount);
@@ -65,7 +68,7 @@ public class BoardFireFighterBehavior implements BoardBehavior {
 
 
     public static void extinguish(Position position) {
-        fireStrategy.getPositions().remove(position);
+        fireStrategyElement.getPositions().remove(position);
 
 
 
@@ -74,7 +77,7 @@ public class BoardFireFighterBehavior implements BoardBehavior {
 
 
     public Set<Position> getFirePositions() {
-        return (Set<Position>) fireStrategy.getPositions();
+        return (Set<Position>) fireStrategyElement.getPositions();
     }
 
 
@@ -91,10 +94,10 @@ public class BoardFireFighterBehavior implements BoardBehavior {
 
     @Override
     public List<Position> updateToNextGeneration() {
-        List<Position> modifiedPositions = fireFighterStrategy.updateElements();
-        modifiedPositions.addAll(fireStrategy.updateElements());
-        modifiedPositions.addAll(cloudStrategy.updateElements());
-        modifiedPositions.addAll(motorizedStrategy.updateElements());
+        List<Position> modifiedPositions = fireFighterStrategyElement.updateElements();
+        modifiedPositions.addAll(fireStrategyElement.updateElements());
+        modifiedPositions.addAll(cloudStrategyElement.updateElements());
+        modifiedPositions.addAll(motorizedStrategyElement.updateElements());
         incrementStep();
         return modifiedPositions;
     }
@@ -103,10 +106,10 @@ public class BoardFireFighterBehavior implements BoardBehavior {
     public void reset() {
         this.step=0;
         // Vider toutes les positions stockées
-        fireStrategy.getPositions().clear();
-        fireFighterStrategy.getPositions().clear();
-        cloudStrategy.getPositions().clear();
-        motorizedStrategy.getPositions().clear();
+        fireStrategyElement.getPositions().clear();
+        fireFighterStrategyElement.getPositions().clear();
+        cloudStrategyElement.getPositions().clear();
+        motorizedStrategyElement.getPositions().clear();
         rocky.clear();
         terrainMap.clear();
 
@@ -123,10 +126,10 @@ public class BoardFireFighterBehavior implements BoardBehavior {
     public static void extinguishNearbyFires(Position firefighterPosition, List<Position> modifiedPositions) {
         List<Position> nearbyFires = getNeighbors().getOrDefault(firefighterPosition, Collections.emptyList())
                 .stream()
-                .filter(fireStrategy.getPositions()::contains)
+                .filter(fireStrategyElement.getPositions()::contains)
                 .toList();
         for (Position fire : nearbyFires) {
-            fireStrategy.getPositions().remove(fire);
+            fireStrategyElement.getPositions().remove(fire);
             modifiedPositions.add(fire);
             System.out.println("Feu éteint à : " + fire);
         }
@@ -142,12 +145,12 @@ public class BoardFireFighterBehavior implements BoardBehavior {
         }
 
         // Si la position est occupée par un feu et que le terrain n'est pas traversable par le feu
-        if(cloudStrategy.getPositions().contains(position))
+        if(cloudStrategyElement.getPositions().contains(position))
         {
             return false;
         }
         // Si la position est une montagne, aucun élément ne peut la franchir sauf les nuages
-        if (terrainMap.get(position) != null && !cloudStrategy.getPositions().contains(position)) {
+        if (terrainMap.get(position) != null && !cloudStrategyElement.getPositions().contains(position)) {
             return false;  // Impossible de franchir une montagne, sauf pour un nuage
         }
         if(rocky.contains(position))
@@ -231,18 +234,18 @@ public class BoardFireFighterBehavior implements BoardBehavior {
 
 
     public static Collection<Position> getFirefighterPositions() {
-        return fireFighterStrategy.getPositions();
+        return fireFighterStrategyElement.getPositions();
     }
 
     public Collection<Position> getCloudPositions() {
-        return cloudStrategy.getPositions();
+        return cloudStrategyElement.getPositions();
     }
 
     public List<Position> getMotorizedFighters() {
-        return (List<Position>) motorizedStrategy.getPositions();
+        return (List<Position>) motorizedStrategyElement.getPositions();
     }
 
-    public static Strategy getFireMovements() {
-        return fireStrategy;
+    public static StrategyElement getFireMovements() {
+        return fireStrategyElement;
     }
 }
diff --git a/src/main/java/model/Board/FirefighterBoard.java b/src/main/java/model/Board/FirefighterBoard.java
index f4d23f0..bde3e63 100644
--- a/src/main/java/model/Board/FirefighterBoard.java
+++ b/src/main/java/model/Board/FirefighterBoard.java
@@ -1,7 +1,7 @@
 package model.Board;
 
-import model.*;
 import model.ExtinguishFire.*;
+import model.ModelElement;
 import model.Obstacle.Mountain;
 import model.Obstacle.Road;
 import model.flammable.Fire;
@@ -63,7 +63,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     // Filtrage des éléments Firefighter (en transformant les positions en objets FireFighter)
     behavior.getFirefighterPositions().stream()
             .filter(pos -> pos.isAtPosition(position)) // Vérifier si la position correspond
-            .forEach(pos -> result.add(new FireFighter(pos))); // Créer un objet Firefighter à partir de Position
+            .forEach(pos -> result.add(new DefaultFireFighter(pos))); // Créer un objet Firefighter à partir de Position
     // Filtrage des éléments Cloud
     behavior.getCloudPositions().stream()
             .filter(pos -> pos.isAtPosition(position))
@@ -104,7 +104,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
   private void addElementToBoard(ModelElement element, Position position) {
     if (element instanceof Fire) {
       behavior.getFirePositions().add(position); // Ajouter un Fire
-    } else if (element instanceof FireFighter) {
+    } else if (element instanceof DefaultFireFighter) {
       behavior.getFirefighterPositions().add(position); // Ajouter un Firefighter
     } else if (element instanceof Cloud) {
       behavior.getCloudPositions().add(position);
diff --git a/src/main/java/model/ExtinguishFire/CloudStrategy.java b/src/main/java/model/ExtinguishFire/CloudStrategyElement.java
similarity index 94%
rename from src/main/java/model/ExtinguishFire/CloudStrategy.java
rename to src/main/java/model/ExtinguishFire/CloudStrategyElement.java
index f65b43b..be5f272 100644
--- a/src/main/java/model/ExtinguishFire/CloudStrategy.java
+++ b/src/main/java/model/ExtinguishFire/CloudStrategyElement.java
@@ -1,17 +1,17 @@
 package model.ExtinguishFire;
 
 import model.ElementFactory;
-import model.Strategy;
+import model.StrategyElement;
 import util.Position;
 
 import java.util.*;
 
 import static model.Board.BoardFireFighterBehavior.*;
 
-public class CloudStrategy implements Strategy {
+public class CloudStrategyElement implements StrategyElement {
     private  List<Position> cloudPositions;
     private final ElementFactory<Cloud> cloudFactory;
-     public CloudStrategy(ElementFactory<Cloud> cloudFactory) {
+     public CloudStrategyElement(ElementFactory<Cloud> cloudFactory) {
         this.cloudPositions = new ArrayList<>();
         this.cloudFactory = cloudFactory;
     }
diff --git a/src/main/java/model/ExtinguishFire/DefaultFireFighter.java b/src/main/java/model/ExtinguishFire/DefaultFireFighter.java
index e6897fa..e8e74d8 100644
--- a/src/main/java/model/ExtinguishFire/DefaultFireFighter.java
+++ b/src/main/java/model/ExtinguishFire/DefaultFireFighter.java
@@ -1,4 +1,9 @@
 package model.ExtinguishFire;
 
-public class DefaultFireFighter {
+import util.Position;
+
+public class DefaultFireFighter extends FireFighter{
+    public DefaultFireFighter(Position position) {
+        super(position);
+    }
 }
diff --git a/src/main/java/model/ExtinguishFire/FireFighterStrategy.java b/src/main/java/model/ExtinguishFire/FireFighterStrategyElement.java
similarity index 89%
rename from src/main/java/model/ExtinguishFire/FireFighterStrategy.java
rename to src/main/java/model/ExtinguishFire/FireFighterStrategyElement.java
index fd60dbe..18d7da3 100644
--- a/src/main/java/model/ExtinguishFire/FireFighterStrategy.java
+++ b/src/main/java/model/ExtinguishFire/FireFighterStrategyElement.java
@@ -1,7 +1,7 @@
 package model.ExtinguishFire;
 
 import model.ElementFactory;
-import model.Strategy;
+import model.StrategyElement;
 import util.Position;
 
 import java.util.ArrayList;
@@ -11,10 +11,10 @@ import java.util.Set;
 
 import static model.Board.BoardFireFighterBehavior.*;
 
-public class FireFighterStrategy implements Strategy {
-    private final ElementFactory<FireFighter> firefighterFactory;
+public class FireFighterStrategyElement implements StrategyElement {
+    private final ElementFactory<DefaultFireFighter> firefighterFactory;
     private  List<Position> firefighterPositions;
-    public FireFighterStrategy(ElementFactory<FireFighter> firefighterFactory) {
+    public FireFighterStrategyElement(ElementFactory<DefaultFireFighter> firefighterFactory) {
         this.firefighterFactory = firefighterFactory;
         this.firefighterPositions = new ArrayList<>();
     }
@@ -68,7 +68,7 @@ public class FireFighterStrategy implements Strategy {
     public void initializeElement(int rowCount, int columnCount) {
         // Pompiers
         firefighterPositions = new ArrayList<>();
-        List<FireFighter> firefighters = firefighterFactory.createElements(rowCount, columnCount);
+        List<DefaultFireFighter> firefighters = firefighterFactory.createElements(rowCount, columnCount);
         for (FireFighter firefighter : firefighters) {
             firefighterPositions.add(firefighter.getPosition());
         }
diff --git a/src/main/java/model/ExtinguishFire/FirefighterFactory.java b/src/main/java/model/ExtinguishFire/FirefighterFactory.java
index b45e236..bf2fa18 100644
--- a/src/main/java/model/ExtinguishFire/FirefighterFactory.java
+++ b/src/main/java/model/ExtinguishFire/FirefighterFactory.java
@@ -8,7 +8,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
 
-public class FirefighterFactory implements ElementFactory<FireFighter>, PositionGenerator {
+public class FirefighterFactory implements ElementFactory<DefaultFireFighter>, PositionGenerator {
     private final Random random;
     private int count;
 
@@ -18,11 +18,11 @@ public class FirefighterFactory implements ElementFactory<FireFighter>, Position
     }
 
     @Override
-    public List<FireFighter> createElements(int rowCount, int columnCount) {
-        List<FireFighter> firefighters = new ArrayList<>();
+    public List<DefaultFireFighter> createElements(int rowCount, int columnCount) {
+        List<DefaultFireFighter> firefighters = new ArrayList<>();
         for (int i = 0; i < count; i++) {
             Position randomPosition = generateRandomPosition(rowCount, columnCount);
-            firefighters.add(new FireFighter(randomPosition));
+            firefighters.add(new DefaultFireFighter(randomPosition));
         }
         return firefighters;
     }
diff --git a/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
index 8c76873..44d0945 100644
--- a/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
+++ b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
@@ -6,7 +6,7 @@ import util.TargetStrategy;
 
 import java.util.*;
 
-public class MotorizedFireFighter extends BoardElement {
+public class MotorizedFireFighter extends FireFighter{
     private final TargetStrategy targetStrategy = new TargetStrategy();
     public MotorizedFireFighter(Position position) {
         super(position);
diff --git a/src/main/java/model/ExtinguishFire/MotorizedStrategy.java b/src/main/java/model/ExtinguishFire/MotorizedStrategyElement.java
similarity index 94%
rename from src/main/java/model/ExtinguishFire/MotorizedStrategy.java
rename to src/main/java/model/ExtinguishFire/MotorizedStrategyElement.java
index 67e0dbf..167662b 100644
--- a/src/main/java/model/ExtinguishFire/MotorizedStrategy.java
+++ b/src/main/java/model/ExtinguishFire/MotorizedStrategyElement.java
@@ -1,7 +1,7 @@
 package model.ExtinguishFire;
 
 import model.ElementFactory;
-import model.Strategy;
+import model.StrategyElement;
 import util.Position;
 
 import java.util.ArrayList;
@@ -10,11 +10,11 @@ import java.util.List;
 
 import static model.Board.BoardFireFighterBehavior.*;
 
-public class MotorizedStrategy implements Strategy {
+public class MotorizedStrategyElement implements StrategyElement {
     private final ElementFactory<MotorizedFireFighter> motorizedFactory;
     private List<Position> motorizedFighters;
 
-    public MotorizedStrategy(ElementFactory<MotorizedFireFighter> motorizedFactory) {
+    public MotorizedStrategyElement(ElementFactory<MotorizedFireFighter> motorizedFactory) {
         this.motorizedFactory = motorizedFactory;
         this.motorizedFighters = new ArrayList<>();
     }
diff --git a/src/main/java/model/Strategy.java b/src/main/java/model/StrategyElement.java
similarity index 87%
rename from src/main/java/model/Strategy.java
rename to src/main/java/model/StrategyElement.java
index 83bf4c6..c448635 100644
--- a/src/main/java/model/Strategy.java
+++ b/src/main/java/model/StrategyElement.java
@@ -5,7 +5,7 @@ import util.Position;
 import java.util.Collection;
 import java.util.List;
 
-public interface Strategy {
+public interface StrategyElement {
     public List<Position> updateElements();
     public void initializeElement(int rowCount, int columnCount);
 
diff --git a/src/main/java/model/flammable/FireStrategy.java b/src/main/java/model/flammable/FireStrategyElement.java
similarity index 92%
rename from src/main/java/model/flammable/FireStrategy.java
rename to src/main/java/model/flammable/FireStrategyElement.java
index 11518f3..277779e 100644
--- a/src/main/java/model/flammable/FireStrategy.java
+++ b/src/main/java/model/flammable/FireStrategyElement.java
@@ -1,19 +1,19 @@
 package model.flammable;
 
 import model.ElementFactory;
-import model.Strategy;
+import model.StrategyElement;
 import util.Position;
 
 import java.util.*;
 
 import static model.Board.BoardFireFighterBehavior.*;
 
-public class FireStrategy implements Strategy {
+public class FireStrategyElement implements StrategyElement {
     private final ElementFactory<Fire> fireFactory;
     private Set<Position> firePositions;
 
 
-    public FireStrategy(ElementFactory<Fire> fireFactory) {
+    public FireStrategyElement(ElementFactory<Fire> fireFactory) {
         this.fireFactory = fireFactory;
         this.firePositions = new HashSet<>();
     }
-- 
GitLab