From 342cb9d8bb521afb481cdc882d71743d194414aa Mon Sep 17 00:00:00 2001 From: mohamed Hebbache <mohamed.hebbache@etu.univ-amu.fr> Date: Thu, 23 Nov 2023 20:45:22 +0100 Subject: [PATCH] factorisation --- .../8.4/executionHistory/executionHistory.bin | Bin 66955 -> 66789 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/8.4/fileHashes/fileHashes.bin | Bin 28397 -> 28397 bytes .gradle/8.4/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.4/fileHashes/resourceHashesCache.bin | Bin 25297 -> 25841 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/buildOutputCleanup/outputFiles.bin | Bin 19649 -> 19577 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes build/classes/java/main/model/Board.class | Bin 461 -> 606 bytes .../java/main/model/BoardElement.class | Bin 252 -> 522 bytes .../java/main/model/Builder/GameManage.class | Bin 1380 -> 1380 bytes .../java/main/model/EmptyElement.class | Bin 708 -> 1392 bytes .../model/ExtinguishFire/ExtinguishFire.class | Bin 426 -> 156 bytes .../model/ExtinguishFire/FireFighter.class | Bin 5867 -> 5899 bytes .../java/main/model/Flammable/Fire.class | Bin 3842 -> 4113 bytes .../java/main/model/Flammable/Flammable.class | Bin 411 -> 141 bytes build/classes/java/main/model/GameBoard.class | Bin 6191 -> 6191 bytes .../main/model/Visitor/CrossMountain.class | Bin 1207 -> 1207 bytes .../java/main/model/Visitor/CrossRoad.class | Bin 1195 -> 1195 bytes build/classes/java/main/module-info.class | Bin 337 -> 339 bytes .../compileJava/previous-compilation-data.bin | Bin 22217 -> 22218 bytes src/main/java/model/Board.java | 3 + src/main/java/model/Builder/GameManage.java | 7 +- src/main/java/model/ExtinguishFire/Cloud.java | 5 - .../model/ExtinguishFire/FireFighter.java | 167 +++++++----------- src/main/java/model/Flammable/Fire.java | 114 ++++++------ src/main/java/model/GameBoard.java | 2 +- .../java/model/Visitor/CrossMountain.java | 4 +- src/main/java/model/Visitor/CrossRoad.java | 6 +- 29 files changed, 121 insertions(+), 187 deletions(-) diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin index d9a265d716e9f4309d7c4835cee4acfe1c269eff..ef3814db707d3311a601ee242faa1484aadf300d 100644 GIT binary patch delta 1648 zcmeC~W_jAlvcc0s!;67|#cOs}S*lruX<<>7X<~U!dR1XkiD^n%UTI2cB?AQLZZ7o5 zVw`+F*PQXxWW@*rCL`m?=6UjrH(;FhJRim@Fb+$;E8|fZrz+o#@i>h0G2ce({iJ!@ z_Z$9@VC*W(OfA<-tH{k^5U}i0zB27wkhX)T-rryK<#k^`iYA8_=rM+GepqsyeRFY$ zQ@4&b1B0qE2+z(<%q}p=%Pq)DODZl(%c?L+GB3(XuQE%6x|qdo^TYd%Y@5x?n^-3+ zL>Ph`{HjK8a>pBe#_KTGysD9zyy3X<<cv75d_$eoWc?F@ljpwGVSENt(@>YocoD`4 zj1ZmtE{sREt@-M&*SR+$D$aeJv?_4-2gZrH`6;P6`cC<YMJba%CYXV&11Vm)M0m3E zd(Fw4AT9t2<u`InHdz|P_!`+zkl@v&{F5C{^G<H~U^n?nEZ9X5^<I;8mvK+lj!=V{ z`oB?9;K&Bo2|o*rBIIw{F=lE<8BW$)E<gEO0#uvW<h~}M$u6HX86P05F_?V$lOf|v zgn-KA4b7sHi$7Z-yc-yyGC6LgkiauZUh{8nf~U4fv6h-f9QB#puu`4zJ+junE2SqN z{o=rQ3nnPIT4D0MRxSbS`A)K~PbDP&>@`#U8^5t@GJmu*%tL~!^(TM*YA~586zWjX zNihNf=jEq)G~W<ikhjM1BGcvNT9XxG#3o;E1uJQcm7A>B&Oe#+yB;haK|;IQ1t!n_ zu0Od6Vo+mjFylj*Lkic+PLA(noqVB#U*M0j(WT!)-QRDCDR&>zn&&l{ah=lSsx{n` z@3n%16QWi?fW7X+w$JZR?^aEI{&K;a2kDdRJLO>Zfz<q8=P=nU2JE83_2GyVVV&SS zIk^oizCOVn5f~S`wI+Z5tvz{j7g+8>x5(tI9`4D-e-s%HfZVBQWE@jmlpK?rn3)%o zl~|T2aPQ7ft-{0aB%T;5$h<E9qd58hMh!$}v+K2%;J%pi;qa0fiHCHrxfO;89J+IK z)|35)n<OVs>{Vy^v8Cbh<fDJxS!TaG`gXFwKVz0DyBi))cK@d<5vj&KW6d#zrsqrk z2o)_2VtoGY=-d5<_gE&++bkwAYtJ&Sc`t0!XEJFf@66xvc_Ub|i)Hf0J~OU)A3!P_ zxfth7HasmcS?Iqw%f=5!-%i&3ugSU?BsV#*UtIf2%bFEmYr>ThY_4pp;VV{I4U#c@ z!o|!WkR#}!*>gQg?%?7B3dR!i*(RUADJD_)jr(JIIak|-MBCOpPrbf9VD%rkCLipV zpZw~-0L!)aN8e8V_g{x)_xq!7r|L0EN(5<KJNv+lS!BbWRR{OoVz{#PJ;-6*dXp#K zlABt~C?Ne0EU-j_nL$AJUHZv<m+cOF)(dWvRJtlVdENv`iO>yRZobk9VpTeO79ZU) z?L{+K{X~VSHyM?k`oNrCMrH<qeSb>s>a_Z1T>Ql5xPPVHEXE1$iMgrZe65$9lUQ8L zARyKHM^B?XVoOf0;{~Vd%Fz$s9eq39j*-!TqZ{mzmx7ZYrYf^e0C6T?xUI-?V^_oD z>4zB^%|-8CP!p9|zPemDMufY+bgJnguo}lZVxp~q=YuqEsIf{ga;Dt4*1Y))SSII= zI_qUHYsMWFy$|51`NqV|ATaywlskX5if^&)I_VlEet7{igFs)h*Ui|N4V8Vu3Qa2w z=6s#JZjvf%%g3W{_fPgs*Jk;&z2Wh6L1sobmR}!^zMUS;%&5e&0_5^WW=1K2Ti4<> zZ98~fR%Ob4y*U4+<K%^tH5p%k5-O<7DagoVyo2CKPF^>~4pC%0$TpJ??V2Lm5xm-& aXTp=V{uhb|pMmT(JhhgQg^__l)c^p_tHIg; delta 4928 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 diff --git a/.gradle/8.4/executionHistory/executionHistory.lock b/.gradle/8.4/executionHistory/executionHistory.lock index 6cb3367eb4c3d56d4fffd97fc1ec060b4e89b8c5..90be8bbe46872fb2c2dfaa16c2b1debc3585b0e8 100644 GIT binary patch literal 17 VcmZP$`TwJ1B6D^Y0~jzi0{}Qj1jGOU literal 17 UcmZP$`TwJ1B6D^Y0|a~o064P+F#rGn diff --git a/.gradle/8.4/fileHashes/fileHashes.bin b/.gradle/8.4/fileHashes/fileHashes.bin index 8da2ea643297ea24ebe448d0705eed4fb283bf80..3777e2fb75188a80f5ef02b487efb22b1d596b5c 100644 GIT binary patch delta 3182 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 delta 3613 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 QSW|y%WkVy0`!&dS05mS91poj5 diff --git a/.gradle/8.4/fileHashes/fileHashes.lock b/.gradle/8.4/fileHashes/fileHashes.lock index 7fac77118eba4edc0e99d909d5e8cd8dcea24a08..7b333d1b1b3ec72096d6acd1269ec9a0c55f1011 100644 GIT binary patch literal 17 VcmZSXX1VC#`|)8R0~qk~001(+1Wf<{ literal 17 VcmZSXX1VC#`|)8R0~m0a0su1I1aSZW diff --git a/.gradle/8.4/fileHashes/resourceHashesCache.bin b/.gradle/8.4/fileHashes/resourceHashesCache.bin index ab3e0a4676e0148a19681f3824f31fdc9e02de08..aa0feb0429a70db3fd0c1501c8b605824d233c01 100644 GIT binary patch delta 4103 zcmcb3l=0(9#tkMCjyIb4H?*D=)z4x81Fxn3p`ckivvm)9<_oYeLxLt$_<wW%zP;wb zn!*tAWb?_T5&;^m&vW?#G!5FJg8N~L+kB;${@T2;03x2?J^8AH!em}aN&XavZFZ;r zctXUZ?I)W`S~yIQHy3yKk@+1Wm>dZ+WTMEi^;HZ>6%g^*qcHJFZ`kg&eDqlX5l@^y zd8%Z<<iC<08ncQ_Zul!FcS9uNv|$=%`ybFLzj|5>A|78q*;Yz%a+#FAz`U?YGYb}f zdkm3?^PN0bN|E0!XH%q<@n48o?BdB=r84=InYn8Hw%>w?B|e@kDjg89dg@fm#QGQ8 zAcFCdFx%D`*=o&`I`s)6o)`@mFZ@>hQr0CHA|5LZ6JM*h(P91<WqpWvLhj^VX@$v0 zr7I_g$&?H156t-}`~T!=h-A#x$wy@rG!9+xxnH@yfej*<q6#zVXq)kJ0cn~05b=cm z$+ohV>cVC}JS_N2AY$>>Ftumqy-zHQF3pCB#}rO(mCX>ixV@zF;FG(zA%d~-lb_03 zI9&Rmdc9ja(-9&V^&4iwRrTmpwR!eNQ1L*xxJKuexk>+dq2l_JMdcJUu0?g;*OYgi z1rdyog(<$i`RWVpox7o_FnZ}^S2+cNn+>YTAsK#KAc|AYPcD^Hn7md_lK*yc<@16^ zK@jn{{K<ReEClY%e_ZZ6YnB;AFzNGTR(S=D`?7^A&xZY43K2}SgjsjLZAnq0>jGnl zcpT?sU-<xmCkJ;X+L!aZh6qMCPo64oG5M*y!DL+pNqcdVhe6k-oPo&2U4<F+E`FB2 z#}n39Q1S0@@#1L533INoL&TFVPPSE0m|UtL$<J(1{7CDd8&sTia;t*H<f{sXljRgW zCf6xS)bG9j&E-lKH0t6H!_51BTgy23>?uEpz8HU)_|N4@+vMdtp-DPvJxu)1r+q?u z5;Lbm)&GQv|I;?u=UC9l0ufIZg^NEv@NhXZr}gB&ikg${lswekom`WYU;cuqi<<~j z$FgMU_FjI;2N3b(hm&iS6ef!*OK5P_vp>;p*sBhah?a$E;0Y3mo10hI1QCzgJ~>o5 zkbh%f+2!dEp(!Rhaq?Vci^*@54Kzgl^u6^nm-B%rj?sk~BI+$VPqMNVn(vZ&CyS~m z+F#uGt;Ep57NRzR9i~>|ucwTAZa*~NMis-vCHoHdbiP<{4Wd3Jb8@MQ!sMeWhWx(f z*0LJgqafnR)stCO6$F%iwrr_SUa12SjD0>?R@HKHo~pQj`bQW2_<df`_(@@&T&rp^ z`K)S!hRGs#V@1K;oe&+-FJac2_LVR&m-b0O#8bK_hpH(=Se_8R=V)3a3K2}W3{z~a zu6coJwm-CNP1pz*pL4siZbg>|M19P4n7D1Hi0=Hk`Kuw~Q8y>&swoKAFB3WJlfm-? zBA9q^a;usmzviqtl1k3}5V54}$#c~#)l<~dOcP^2K*Zvo!VGn9d0D8YFLD_wzHstc zH46tX4(}qt+tXDcf+=fZioJB|+$Ch(U}bY7T>R(7Wz(lBPJpOS_&QlvUBSWocN3HT zJZEU8NO6ZL_Ni$!T7Ab8T98K{hl{`KnzVJ3#7u}GiQ<!8)fEK%xhu;QCWpR(2u4kv zT&kWinO7rWa;t_R|BRTj1#3RmL*(K%PhP8`F!`y5ghO0Wv(%B+YmyL	EjQ@kbr* zG2Gg`2qGTC4HM5?^rLqJj|j9XinX2mRYSocx8g*sN0lYC2u)IlDb7n4;=IBwcot$v zk|#{Opjgv1Y*i{OHBX)#s(C`7O0!=z{#va!L~-)m$)Z|;lk2o3Ca=>9WD*J7sQ5#C zqrnO0&5j;_1nW=SXLsSSKKiBXm+YPBd%B?LlLM7mAb$ulFfa%TNEPXE^;sooewSAj z^otOVWME)GQ}O=!_Xl|a{<{08K4@;)@a+<&3a%d)H~KxFt}k{X=*t|oDHGu;tU*?Q zu)tsUcb9)|d$z|UvD<=i)#P5d5|Ati3#9rk-4SwU(?5OQqbED3HY}X17%a?R=wI`& z()g`v-Thv>_nH2aHDgTbm0m_vvzJYHz53(XS$P)=LDe9di`$y7{(7BzBckHm$4RRK zcY_irnu@;fx4ijxS0DR1YyOJclHY7Fox@lBe(FDw<N2K5V!wWwvJKP#ftWGbDuk>4 z_7SC%d|g|<rT-JC4PJ@G366&fJp|`{yH~wnid2K!XHYu@q8;Q{5EfA8PF+*wtuNCg z&?dWnq7ta2KvOZpjYD#e{RdBJ=M?rCZ(46694W!T0ExZtH_FbQ;&E%vYZAGi_tR|q z<je$<$$OJTCT~m#5_s>o^tbYKm7eUy(z9=Tv3fE2exk`_%Q&UUs)<UIXD2C5u8mWg zY?`DrxjRuw;Jo}akLDYq3-Z=DUSztwTx;^)M3c#n<CG?^k9Vo>_%$PFZO@*PTCXP+ z->#hmRbpsvmE-s{@z>%oX#w6-7teH9Vew6le!i}jRO+JtPfs4UNL+9i;TxD|R>o8^ znH@AKzvlmI)r81{pkxoRWinS1SN#mN?5|U9q;9?!rT^kqvn;0eNVCmfs_UEh{=_e- zziG$PkE!DH!z(QNo$H=@=tgAkwbBPQdmt8oA_Rm56nOo&S=Qd#%G-7Q!g)g*0fZU# zFjr2zwl0`WOyB*!^YiXmsZOy7B`_7%?OpdjrWq<t_golq=~_%CrizrO1{HcHCu(1_ zR|&j*y(th=g+=M~_W9}^{x&tm%IiWzJ~B*R6fMMmE#qdXl;K&1k9#*cSWaY_>=-Is ze<t>}=l=xjM$-f0>EQ?UFpc`7Y;@_jQ1|y+V#?izwB~tXs+cm}*Yf&;wz#k>Qiiu~ z9-M)xf+gT_y@EmR70y0Wb+=#V5)dlj;Ud@~dG?QTrgF~tcY7-8UV*Afw7@OC*tsLp znz7h*r{*r}mYpdGLtr5{^Iz%ifJtH3WNz$<n%DPK7gGg?rM{ENpEEq~U+*{bmwx=8 zp&p~Wil1Y{UlGwGRs84hJ&x7sSW*gu?Yr5N4<wstCCV+0^qj<nX$^bbhi#wVpWdyS z{QTvDHxJS=Rh<92`fQ1J!o7Ntx9=}Xzmu-SRHFGf$jm~;rK&?KX`xz^!%j>UlauD} zQ`nsHaYcAZch14>OqeR_zO9=yVNQC>`rt#0ZBr}CF;vtGMDuK4a490~iOc6FYgF|e z5G55TMT4+F=&P2*BhwSA9FFAny*hfa4Z{!tgDtC9%~clp-?k|Azx^$Pg_tTN*m+)S zeZTIs)q3N}$Je{>!Bo^Es*+pzZx=l5doXq9gY}jLt{*@RBD56n=craCw|79eS>+PV z_=hDgVTK^g*kSdyXJ^RMXU92X1%3Y%#9*q>n?H53bjXW~7tKD1O>19O{~uF{l*5#p z$7-hhYhSN+je+BS1Ez{uM+`QLt?Un6GV{nwgZ)QVVye)v&_2-mO6}qky@&e+re3>( zsbY)Ix0@6H*H^v2Sb1&2rA<MrFqPP>-)_g(HkT<RcfJ|7gx*I?6#<b!j-2zvKB-D3 zJd#j+GX+zH^?WB;*QXK^fA*TG{*B+*g{GpGK~SKZ`S^Fv`VZ3n;XQo6n<KCkIB)kw zu6inW%&UrRPXFA$Oi$1ZVGtBJvcYx2&jO<e`I~l(nc7i?m@1x0@|u5p6Fjv=inY`< J;wZRy1^~nSe6s)m delta 2325 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 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 9c9ba6e9ea216ef5653e61d1501e8703235f0cef..c77e84520038f8c47d14db5cb911ea630ec7b10d 100644 GIT binary patch literal 17 VcmZR!o;x%Ck-On^1~6c@1pqI31O)&9 literal 17 VcmZR!o;x%Ck-On^1~6b!1^_Qz1L^<( diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index 88df6d9bca121586e9b1df41d8989494bb6915f7..66b61460c12daabc04660b12d21a0c7ec81e4a0b 100644 GIT binary patch delta 471 zcmX>&lkw*a#tkMCj5d=^B@6_*E=m5ovv)=!0~q)iPVSXZ5STvcZn%Pm<V~;`gOB{= zy%Gun^RF-~yf2;J4-xdvo_tk8VX~@Z!sNM<5(3-jmDW{UZ&8Ly9-VwtQbA)+anOPl z2ahB}1bx!~L%~6IkH>0`Gv7kQy<bkgE2%J9RH|a~QYjCPH<1_AtEA)qO;(k55cqVw zQ`DQsZYNab!pX7H3X`WwOH4j0EfK+6$b7~pY?(kB#Z`hWgn>jY<q%c>A@Z+Dou zgv`zR(TAG8L&f`H;xfBepL)@AMIIvV<2;#FMq#q8jD&#dE3@G3CN9??65h3wQ)Mg! zOmEm9_LY0{2P*h`@>H3h{0@dobP_uwp<<DfTV)j{@0FF9%qk}lQgQQzn(q%oHmIa2 z%-YKR!PoYcH7taRZ-$9iJ=WdzrQne}MBIlLCJv(+7+5!MRQw^n(I7);v!h2e^W+a6 FcL7A}zB2#- delta 541 zcmex4gYn=@#tkMCj1H4cB@8tBe@ydH+r-nv00utY|Dj;2WshasE%#$!VFsVd$)yqs z0<#|&{5_bvG6Ev#Z8~|Wgu>*z5)vAV6_0EWE!TVvk?>g$HRS*DnJX*3IPTtph<is) zek+k7uts$2?6b^|mqG>mC;Lh&2yBxtZron)r~(o637uRksWADhq=dkc8wP3#%TBOD zB)r`x-<50-xD&9uVyV|*h!}%U`s7fl0E?G;8J{Y(o^OPRdcTA@;?+Ns`nC{WeyI3D znD~bvk*!(MJ4z<6m2#NODlH-KThW)>`(e=^h(e#alSQQ!1UPrDI5k<c=LJO2yLPg! zw1S4ntZ6OH&*a}j1buj6M#^}~F7fR9Q4bY2oV-+8K|pqk)SJ6?G9Ms<-kT@yl~xeY ztvIo8;tl--h@g-2<hRlmlWk=_PIi+O7sv{e<dXfzJ_jl(KRHxZL8CAvblTJnJ1rrC z-q|oa3t#TOxZ}w@Zm9Ut$+@x$Ds|WHv}MXz<v|61!xY141_n04jfy|SHyUsVZFcmC LX5K8|rOF5ZI6BcX diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index e2a27b4fa137df29ad7ad2b30eb568a77facaacd..349a7660edc0174109e0bb6d9f10eadb1c99c724 100644 GIT binary patch literal 8 PcmZQzVC?=oM`#-W31<TC literal 8 PcmZQzVC?>B>GB@{2-^b! diff --git a/build/classes/java/main/model/Board.class b/build/classes/java/main/model/Board.class index a78d2b182c87683650b0972590097ab4611719be..274aa8a242bf589f0f4a711ca9a0ca7df89faab3 100644 GIT binary patch delta 192 zcmX@he2<0e)W2Q(7#J8F7$i4xNio(7rKgs-=A`DP=9L8G7iX4a=I1doh-zs1WF?j* z>X(*e=IDDQ7H9Y-7FaVf1Y#4n@d2xX>9$7F=~z^hSm~2lTw>#so1c=JqwkcTSd;>_ v&f3n}&U&&EV*n$^<YGn-B^E{oVFnQfMh12U1_mYuQ3fU`ON>DrEFu8_^@=tp delta 48 zcmcb|a+aCv)W2Q(7#J8F7{oSmNij}d%IL?)KKToyhY$l313Lo)0~3QVg9w-w1prp7 B3F80& diff --git a/build/classes/java/main/model/BoardElement.class b/build/classes/java/main/model/BoardElement.class index b7da37d481527392ebf91688895cc27b0ede2413..f3817965c6f2c20d18493e32d39eaa14f4eeb86e 100644 GIT binary patch delta 329 zcmeyv*u}zi>ff$?3=9ko41yE6me#YC7NjJWq%tyiYxv~mr=;fSyC>$RI^`!8rC9rv zmSpDW2jmxLmSpDVS^H!qmL=+g#XJ&=Gkg;ZkcAwJiV`b*GK)*BHNzMgID<3O^Abx+ zi&7aGX5cZo9+%NJxGjg<WCL|E*tM=Xsky0nCDwM<c37Q-ZlE35ofFq<8MCl3GO#kR nF)*+&GO#mnfN4$!E-=l_z{9}Ez{|kEz{J4Ez{tQ4W(fcQ#yDf* delta 58 zcmeBT`NPO{>ff$?3=9ko47?M$mQG&FsHM!z!pOkNz{bG9!pOkRzyYQ?8Mqi27#JD2 K85kIt7<d4N1_(+3 diff --git a/build/classes/java/main/model/Builder/GameManage.class b/build/classes/java/main/model/Builder/GameManage.class index 6d31614caa77c363eb0fe85b398c1f6367eabe9c..fd32c7f35a06865312c88379a1bd57794de41293 100644 GIT binary patch delta 218 zcmaFD^@M9fA0wmGWJV^@$qyJgMRj=?^cd6_8Ccwd93#0Hv=}tl84M@?V>IwH=3y`a z$*}ncIr_P~axoZy<jffv#B=jgQgihElZs0clXFt_ee+B6N)j{kI2n`}EO{8LK$=*c zg8ak%xERbpdTbdP6hIcrxMdclx@D$kl%y7c6x;JKIDizhIQfLSZZ2dx&d4XQh(TmG zgI44w2A%B;`jZn`gvAUZH!&D(XD|(KVPstX{}r>1wAK~|$;tUFQjENlyI2w!^(Mb& GsRRIA)-v}1 delta 204 zcmaFD^@M9fALC?uCRGVt9tJ%IHAV&&C!bJPE(R?I4R!`YMh2<L4osqo&N=y|DVz*S z48}YRCSX<WL5`7J3<e-o=8O!QAXSrZF-nMA@-SF|6tMXRIr_P~axs{Jl-N$@WRl~v z=V5RF$+0>G`G@;$E@V2+XwJKcL1Z_BR^%oIo$U<z;Vq1e%m2S(wvpD_!XN;aGKk#7 fV6>gV6h%sSaz2aH<UAI($^9(RjQW#bvs3~A@bfMD diff --git a/build/classes/java/main/model/EmptyElement.class b/build/classes/java/main/model/EmptyElement.class index 5069ea14ef0a85701717a0b7537a043f6dcdd4af..44f98af2e977e4cd4c5b4d4e026c4b3fcddd20e8 100644 GIT binary patch delta 723 zcmX@Y`hkn<)W2Q(7#J8F81y!B^)lA8l@_EVmZUN=cx(9N=BK3Q=({K8raI*(7NuDG zl$K=X=m+E%XO?8<=UMw?C6*=XgT*`&i!*!^3y_5zi;5B}eKLzntTn?J8938nrZ6%H zVi?TGz)=7(wLXuLfgjBtMh2n0)N<FH)ZEm(5}56b48mCKXJimcttiRNOE1kV&Oj&? zMN*1z7bAn1PkwS@PFP}5W@1uKYDi^4YJCWZ#mL}~qyy?X8#HGjseqel1N9m>yr3?& zwzIagW@J#qt{xnGFqc}})mt+%a0X|l=Ovbu7Ns&W%pfBcC~>GJ)+j_b(au^kZ1Pk_ zJx12aM;L$C%P}x92r@7*<TEfZure?(Fm7aEU|?ntVqjokV_;-pV31`HW?*12fk-ll zFo-gM03(Aug92EdkwK9`iGc~El|h+7g@GB&Qe{wMU|~>aU|<k~%W1&nG#OYJv=|r| Pm>9UV85kLKz)W2LotM$4 delta 35 rcmeysb%d4c)W2Q(7#J8F800r{^)gQ0$E?H1GWj+0Z&n5dCI&eG=QRr4 diff --git a/build/classes/java/main/model/ExtinguishFire/ExtinguishFire.class b/build/classes/java/main/model/ExtinguishFire/ExtinguishFire.class index a4d622e74ad0dac8a1e1ee24f055fadd19df68df..567d4a02a156b9d882a255fecd3f2f6fec4a11ed 100644 GIT binary patch delta 34 qcmZ3*Jcp6%)W2Q(7#J8F7&s?#MNUp+)Z=DgU}RutU|?Wk-~a%x8wU~q literal 426 zcmX^0Z`VEs1_lQPUUmj1Mh4~F{FKxjeb<VT%)Io{%;F5U%%W5@E;|DYBZELzVp*bo zPGVlVzJF3yYH|rX0~;fQ5JbCEeqvFIYffrzYF-H=16yf9N@7VWBZIew4@BNQF*g;g z#@eT}Br``pAip@XBr`wH+6QbZSj;1_IKwxw09nYfs3@`0C$qT3S~HB1fipNWJuk7O zv?!I4VFno{+u*hvZjlYt!C=QiJ!EZXZHLuW=my$>oyirPUs{x$>Xw<4%E%y$8nAjG q@3Jv6FfuSRFfy<*FfcH(Ffy<+a4;}3a56A3Ffnj3Ffwq1Sv&w|a)i|Y diff --git a/build/classes/java/main/model/ExtinguishFire/FireFighter.class b/build/classes/java/main/model/ExtinguishFire/FireFighter.class index 8b3434fcf26e4a650c3fe23173ef74be5ad47abd..c0e51cda8547a4be38648418a2a9a1e46ff831f1 100644 GIT binary patch delta 3101 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 Bo%;X) delta 3340 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 GgCqd#4&n&_ diff --git a/build/classes/java/main/model/Flammable/Fire.class b/build/classes/java/main/model/Flammable/Fire.class index 84d78d98efd0addb56edbf98e7743f38a0792525..920c2cf21bcd5dc894beef5a8c621fe2b112a4dc 100644 GIT binary patch delta 2281 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 C)6pdW delta 2158 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 O#q)FqMur(+)=U8Qf6;~j diff --git a/build/classes/java/main/model/Flammable/Flammable.class b/build/classes/java/main/model/Flammable/Flammable.class index bf120cd5de3e083cfef4bb7079bfbbbd2f05fb97..91181ac215dd52d55daf7d5430d885160fda1cd7 100644 GIT binary patch delta 34 qcmbQu+{?&y>ff$?3=9ko44f0W{3nMqYH~9$Ffy<+FfcGNZ~y?Qyaw9< literal 411 zcmX^0Z`VEs1_lQPUUmj1Mh3~;{FKxjeYc#%+}y;ZoKyshoq>gsK_Dx!EKxrvF)v-; zKPf9UxrCj8jgdhJqRA;gu_(ngCp9-UuY{3-t+XH|u_Tp|!CS)zBJZA<n+jHA?NeHk znWG<&Uz}NznV)Cv12z>b=8;&O;hR{1EaX^JlvwGLSzKbR8OF%K8JwA(msnC-l*-63 zgA9{xaN7;H$Oh_Quw$VfvbM9f!|Ez@1MR@h<O<F&ElN&x%gjk-WZ;7bryj_sY>W(y l49pCS46F<c42&#{4D1XX42%q%3=9lR3|tJ14BTKA4*-4Kem?*J diff --git a/build/classes/java/main/model/GameBoard.class b/build/classes/java/main/model/GameBoard.class index 8942affab3e8e68908afa81fa9853f48e4eb1d1f..6c8872b744c5e2a38f940a8d23806e30f1ac6e64 100644 GIT binary patch delta 42 ycmZ2)u-;(923|&~%^P`>xunGzm>51YFfcGNd|~*?z`(%8z{n8B@QvXI8z%q&eF~KT delta 42 ycmZ2)u-;(923|(V%^P`>xuj(nm>51YFfcGNd|~*?z`(%8z{n8B@QvXI8z%q&;tH7n diff --git a/build/classes/java/main/model/Visitor/CrossMountain.class b/build/classes/java/main/model/Visitor/CrossMountain.class index 69f63f7cd3d38ef2cee410a9416eee60dd7cfd4f..7b4862c1b9895e8a2c0cdf166c848cd182415ef9 100644 GIT binary patch delta 23 fcmdnaxt(*vX6DKH%z~4TFqco>%q%$Bhb0>TY`O?` delta 23 fcmdnaxt(*vX6DJ(EP|7dFqcoxXBM37!;%dEXW$3_ diff --git a/build/classes/java/main/model/Visitor/CrossRoad.class b/build/classes/java/main/model/Visitor/CrossRoad.class index 6846553e8ac3d3e4fee6d99e85266f45c4b7a798..033a517b18b7e6f6b664e07fe3378f4c73fd0256 100644 GIT binary patch delta 31 ecmZ3@xteoBGV^44X2HoN%*J4P2bBK9ydD6VnF-JU delta 31 ecmZ3@xteoBGV|nO7Qx9S%*J4P2bBK9ydD6khYHUC diff --git a/build/classes/java/main/module-info.class b/build/classes/java/main/module-info.class index 7a769b70875d147512dd0dc3f725d1c113981548..228b8be064ecf35c69bb788937ce7ff8ab50174e 100644 GIT binary patch delta 17 Ycmcb}beU;F8as!Pfu4b$(ZuX$05SmuumAu6 delta 15 Wcmcc2bdhO78Y`QTfu6y{+-CqOT?I}6 diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index b581eed029bcd9d3ac0e02103362957d29c9dab3..37b3b8ba1f9900d28aabf3f9453e8536c2a212b8 100644 GIT binary patch delta 2084 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 delta 2086 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 diff --git a/src/main/java/model/Board.java b/src/main/java/model/Board.java index 469590d..a2ebb06 100644 --- a/src/main/java/model/Board.java +++ b/src/main/java/model/Board.java @@ -2,6 +2,8 @@ package model; import util.Position; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; /** @@ -61,5 +63,6 @@ public interface Board<S> { * @return The current step number or generation. */ int stepNumber(); + HashMap<Position, ArrayList<BoardElement>> getElementPosition(); } diff --git a/src/main/java/model/Builder/GameManage.java b/src/main/java/model/Builder/GameManage.java index c75cc37..c544874 100644 --- a/src/main/java/model/Builder/GameManage.java +++ b/src/main/java/model/Builder/GameManage.java @@ -31,9 +31,6 @@ public class GameManage { for(int i=0;i<fires;i++) { new Fire(Color.RED); } - for(int i=0;i<firefighters;i++) { - new FireFighter(Color.BLUE); - } for(int i=0;i<clouds;i++) { new Cloud(Color.GRAY); } @@ -43,7 +40,9 @@ public class GameManage { for(int i=0;i<mountains;i++) { new Mountain(Color.BROWN); } - // TODO: 15/11/2023 la suite .... aussi l'initialisation va changer dans fire et firefighter + for(int i=0;i<firefighters;i++) { + new FireFighter(Color.BLUE); + } } } diff --git a/src/main/java/model/ExtinguishFire/Cloud.java b/src/main/java/model/ExtinguishFire/Cloud.java index e8b51c0..e55461c 100644 --- a/src/main/java/model/ExtinguishFire/Cloud.java +++ b/src/main/java/model/ExtinguishFire/Cloud.java @@ -65,10 +65,5 @@ public class Cloud implements ExtinguishFire{ newElementPosition.put(newCloudPosition,boardElements); } extinguishPosition.add(newCloudPosition); - /*List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream() - .filter(firePositions::contains).toList(); - for(Position firePosition : neighborFirePositions) { - extinguishPosition.add(firePosition); - }*/ } } diff --git a/src/main/java/model/ExtinguishFire/FireFighter.java b/src/main/java/model/ExtinguishFire/FireFighter.java index 4dd87bd..ba92948 100644 --- a/src/main/java/model/ExtinguishFire/FireFighter.java +++ b/src/main/java/model/ExtinguishFire/FireFighter.java @@ -4,6 +4,7 @@ import javafx.scene.paint.Color; import model.BoardElement; import model.GameBoard; import model.Visitor.CrossMountain; +import model.Visitor.CrossRoad; import model.Visitor.FireFinder; import model.Visitor.Visitor; import util.Position; @@ -12,14 +13,14 @@ import java.util.*; import static model.GameBoard.elementPosition; + public class FireFighter implements ExtinguishFire { private final Color color; public FireFighter(Color color) { this.color = color; - initialize(); + initialize(); // est une bonne idée ? } - @Override public Color getColor() { return color; @@ -32,131 +33,81 @@ public class FireFighter implements ExtinguishFire { @Override public void initialize() { - CrossMountain crossMountain = new CrossMountain(); - boolean canInitialise; Position position = GameBoard.randomPosition(); - if (elementPosition.containsKey(position)) { - for (; ; ) { - canInitialise = true; - for (BoardElement element : elementPosition.get(position)) { - if (element.accept(crossMountain)) { - canInitialise = false; - break; - } - } - if (canInitialise) { - break; + while(!canInitialise(position)){ + position = GameBoard.randomPosition(); + } + addElementToElementPosition(elementPosition,position); + } + + private void addElementToElementPosition(HashMap<Position, ArrayList<BoardElement>> elementPosition, Position position) { + if (elementPosition.containsKey(position) ) { + elementPosition.get(position).add(this); + + } else { + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + elementPosition.put(position, boardElements); + } + } + + private boolean canInitialise(Position position) { + if(elementPosition.containsKey(position)){ + for (BoardElement element : GameBoard.elementPosition.get(position)) { + if (element.accept(new FireFinder()) || element.accept(new CrossMountain())) { + return false; } - position = GameBoard.randomPosition(); - if (!elementPosition.containsKey(position)) break; - } - if (elementPosition.containsKey(position)) - elementPosition.get(position).add(this); - else { - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - elementPosition.put(position, boardElements); } - } - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - elementPosition.put(position, boardElements); + return true; } @Override public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) { - - List<Position> firePositions = new ArrayList<>(); - for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()) { - for (BoardElement element : entry.getValue()) { - if (element.accept(new FireFinder())) { - firePositions.add(entry.getKey()); + List<Position> firePositions = firePosition(); + Position newFirefighterPosition = gameBoard.neighborClosestToFire(position); + extinguishPosition.add(position); + if(canMove(newFirefighterPosition)){ + moveAndExtinguish(newElementPosition,newFirefighterPosition,extinguishPosition,firePositions,gameBoard); + }else { + List<Position> neighbors = gameBoard.neighbors(position); + for (Position positionNeighbour : neighbors) { + if(canMove(positionNeighbour)){ + moveAndExtinguish(newElementPosition,positionNeighbour,extinguishPosition,firePositions,gameBoard); + return; } } + moveAndExtinguish(newElementPosition,position,extinguishPosition,firePositions,gameBoard); } - Position newFirefighterPosition = gameBoard.neighborClosestToFire(position); - if (elementPosition.containsKey(newFirefighterPosition)) { - boolean canMove = true; + } + private void moveAndExtinguish(HashMap<Position, ArrayList<BoardElement>> newElementPosition, Position newFirefighterPosition, ArrayList<Position> extinguishPosition, List<Position> firePositions, GameBoard gameBoard) { + addElementToElementPosition(newElementPosition,newFirefighterPosition); + extinguishPosition.add(newFirefighterPosition); + List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream() + .filter(firePositions::contains).toList(); + extinguishPosition.addAll(neighborFirePositions); + } + private boolean canMove(Position newFirefighterPosition) { + if(elementPosition.containsKey(newFirefighterPosition)){ for (BoardElement boardElement : elementPosition.get(newFirefighterPosition)) { if (boardElement.accept(new CrossMountain())) { - canMove = false; - break; + return false; } } - if (canMove) { - if (newElementPosition.containsKey(newFirefighterPosition)) { - newElementPosition.get(newFirefighterPosition).add(this); - } else { - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - newElementPosition.put(newFirefighterPosition, boardElements); - } - extinguishPosition.add(newFirefighterPosition); - List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream() - .filter(firePositions::contains).toList(); - for (Position firePosition : neighborFirePositions) { - extinguishPosition.add(firePosition); - } + } + return true; + } - } else { - List<Position> neighbors = gameBoard.neighbors(position); - for (Position position1 : neighbors) { - canMove = true; - if (!elementPosition.containsKey(position1)){ - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - newElementPosition.put(position, boardElements); - extinguishPosition.add(position1); - List<Position> neighborFirePositions = gameBoard.neighbors(position1).stream() - .filter(firePositions::contains).toList(); - for (Position firePosition : neighborFirePositions) { - extinguishPosition.add(firePosition); - } - break; - } - for (BoardElement boardElement : elementPosition.get(position1)) { - if (boardElement.accept(new CrossMountain())) { - canMove = false; - break; - } - } - if (canMove) { - newFirefighterPosition = position1; - if (newElementPosition.containsKey(newFirefighterPosition)) { - newElementPosition.get(newFirefighterPosition).add(this); - } else { - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - newElementPosition.put(newFirefighterPosition, boardElements); - } - extinguishPosition.add(newFirefighterPosition); - List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream() - .filter(firePositions::contains).toList(); - for (Position firePosition : neighborFirePositions) { - extinguishPosition.add(firePosition); - } - break; - } - } - if (!canMove) { - if (newElementPosition.containsKey(position)) { - newElementPosition.get(position).add(this); - } else { - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - newElementPosition.put(position, boardElements); - } + private List<Position> firePosition(){ + List<Position> firePositions = new ArrayList<>(); + for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()) { + for (BoardElement element : entry.getValue()) { + if (element.accept(new FireFinder())) { + firePositions.add(entry.getKey()); } - } - - } - else{ - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - newElementPosition.put(position, boardElements); } + return firePositions; } } diff --git a/src/main/java/model/Flammable/Fire.java b/src/main/java/model/Flammable/Fire.java index f294189..6b3a2fd 100644 --- a/src/main/java/model/Flammable/Fire.java +++ b/src/main/java/model/Flammable/Fire.java @@ -11,6 +11,8 @@ import util.Position; import java.util.*; +import static model.GameBoard.elementPosition; + public class Fire implements Flammable{ private final Color color; @@ -19,97 +21,81 @@ public class Fire implements Flammable{ this.color = color; initialize(); } - @Override public Color getColor() { return this.color; } - @Override public Boolean accept(Visitor visitor){ return visitor.visit(this); } - @Override public void initialize() { - FireFinder fireFinder=new FireFinder(); - CrossMountain crossMountain = new CrossMountain(); + Position position = GameBoard.randomPosition(); - boolean canInitialise; - if(GameBoard.elementPosition.containsKey(position)) { - for (;;) { - canInitialise=true; - for (BoardElement element : GameBoard.elementPosition.get(position)) { - if (element.accept(fireFinder) || element.accept(crossMountain)) { - canInitialise=false; - break; - } - } - if(canInitialise){ - break; + + while(!canInitialise(position)){ + position = GameBoard.randomPosition(); + } + addElementToElementPosition(elementPosition,position); + } + + private boolean canInitialise(Position position) { + if(elementPosition.containsKey(position)){ + for (BoardElement element : GameBoard.elementPosition.get(position)) { + if (element.accept(new FireFinder()) || element.accept(new CrossMountain())|| element.accept(new CrossRoad())) { + return false; } - position = GameBoard.randomPosition(); - if(!GameBoard.elementPosition.containsKey(position))break; - } - if(GameBoard.elementPosition.containsKey(position)) - GameBoard.elementPosition.get(position).add(this); - else{ - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - GameBoard.elementPosition.put(position,boardElements); } } - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - GameBoard.elementPosition.put(position,boardElements); + return true; } @Override public void update(GameBoard gameBoard , Position position,HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) { - if(extinguishPosition.contains(position)){ - return ; + if(extinguishPosition.contains(position)) { + return; } - if (gameBoard.stepNumber() % 2 == 0) { - List<Position> newPositions = new ArrayList<>(); - newPositions.addAll(gameBoard.neighbors(position)); - if(newElementPosition.containsKey(position)) - newElementPosition.get(position).add(this); - else { - newElementPosition.put(position,(new ArrayList<>())); - newElementPosition.get(position).add(this); + if(canMove(position,newElementPosition)) + addElementToElementPosition(newElementPosition,position); + if (gameBoard.stepNumber() % 2 == 0 ) { + List<Position> positionsNeighbours = new ArrayList<>(gameBoard.neighbors(position)); + for(Position positionNeighbour : positionsNeighbours){ + if(!extinguishPosition.contains(positionNeighbour)&& canMove(positionNeighbour,newElementPosition)){ + addElementToElementPosition(newElementPosition,positionNeighbour); + } } - for(Position newPosition : newPositions){ - if(extinguishPosition.contains(newPosition)) - continue; - if(GameBoard.elementPosition.containsKey(newPosition)) { - for(BoardElement boardElement : GameBoard.elementPosition.get(newPosition)){ - if(boardElement.accept(new FireFinder()) || boardElement.accept(new CrossRoad()) || boardElement.accept(new CrossMountain())){ - break; - } - else if(!boardElement.accept( new FireFinder())&& !boardElement.accept(new CrossRoad()) && !boardElement.accept(new CrossMountain())){ - newElementPosition.get(newPosition).add(this); - } - } + } + } + private void addElementToElementPosition(HashMap<Position, ArrayList<BoardElement>> newElementPosition, Position newFirePosition) { + if (newElementPosition.containsKey(newFirePosition) ) { + newElementPosition.get(newFirePosition).add(this); + } else { + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + newElementPosition.put(newFirePosition, boardElements); + } + } + private boolean canMove(Position newFirePosition,HashMap<Position, ArrayList<BoardElement>> newElementPosition) { + if(elementPosition.containsKey(newFirePosition)){ + for (BoardElement boardElement : elementPosition.get(newFirePosition)) { + if (boardElement.accept(new CrossMountain())||boardElement.accept(new CrossRoad())) { + return false; } - else{ - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - newElementPosition.put(newPosition,boardElements); - } - } } - else{ - if(newElementPosition.containsKey(position)) - newElementPosition.get(position).add(this); - else { - newElementPosition.put(position,(new ArrayList<>())); - newElementPosition.get(position).add(this); + if(newElementPosition.containsKey(newFirePosition)){ + for (BoardElement boardElement : newElementPosition.get(newFirePosition)) { + if (boardElement.accept(new FireFinder())) { + return false; + } } } - + return true; } + + } diff --git a/src/main/java/model/GameBoard.java b/src/main/java/model/GameBoard.java index 9a4d9e1..01565fa 100644 --- a/src/main/java/model/GameBoard.java +++ b/src/main/java/model/GameBoard.java @@ -20,12 +20,12 @@ public class GameBoard implements Board{ private int step = 0; static Random randomGenerator = new Random(); + public static HashMap<Position, ArrayList<BoardElement>> elementPosition=new HashMap<>(); public HashMap<Position, ArrayList<BoardElement>> getElementPosition() { return elementPosition; } - public static HashMap<Position, ArrayList<BoardElement>> elementPosition=new HashMap<>(); public GameBoard(int columnCount,int rowCount,int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialMotorizedFireFighterCount,int initialMountainCount) { this.columnCount = columnCount; diff --git a/src/main/java/model/Visitor/CrossMountain.java b/src/main/java/model/Visitor/CrossMountain.java index 79fdb61..6b0da04 100644 --- a/src/main/java/model/Visitor/CrossMountain.java +++ b/src/main/java/model/Visitor/CrossMountain.java @@ -18,7 +18,7 @@ public class CrossMountain implements Visitor { return false; } @Override - public boolean visit(Cloud cloud) {return true;} + public boolean visit(Cloud cloud) {return false;} @Override public boolean visit(MotorizedFireFighter motorizedFireFighter) { return false; @@ -26,7 +26,7 @@ public class CrossMountain implements Visitor { @Override public boolean visit(Mountain mountain) { - return false; + return true; } @Override diff --git a/src/main/java/model/Visitor/CrossRoad.java b/src/main/java/model/Visitor/CrossRoad.java index b886335..40f1eb8 100644 --- a/src/main/java/model/Visitor/CrossRoad.java +++ b/src/main/java/model/Visitor/CrossRoad.java @@ -15,15 +15,15 @@ public class CrossRoad implements Visitor { @Override public boolean visit(FireFighter fireFighter) { - return true; + return false; } @Override - public boolean visit(Cloud cloud) {return true;} + public boolean visit(Cloud cloud) {return false;} @Override public boolean visit(MotorizedFireFighter motorizedFireFighter) { - return true; + return false; } -- GitLab