From f995e34e89ec039b94e5fa3894897c46254398d8 Mon Sep 17 00:00:00 2001 From: ZartaX0O3 <76948902+ZartaX0O3@users.noreply.github.com> Date: Fri, 7 Jan 2022 19:29:25 +0100 Subject: [PATCH] done --- code/ressources/fxml/MainPage.fxml | 10 + code/ressources/fxml/viewAvatar.fxml | 21 + code/ressources/fxml/viewGame.fxml | 63 +-- code/ressources/image/personnage/Perso2.1.png | Bin 0 -> 1082 bytes .../ressources/image/personnage/Perso2.10.png | Bin 0 -> 978 bytes .../ressources/image/personnage/Perso2.11.png | Bin 0 -> 970 bytes .../ressources/image/personnage/Perso2.12.png | Bin 0 -> 970 bytes code/ressources/image/personnage/Perso2.2.png | Bin 0 -> 1115 bytes code/ressources/image/personnage/Perso2.3.png | Bin 0 -> 1100 bytes code/ressources/image/personnage/Perso2.4.png | Bin 0 -> 1061 bytes code/ressources/image/personnage/Perso2.5.png | Bin 0 -> 1061 bytes code/ressources/image/personnage/Perso2.6.png | Bin 0 -> 1069 bytes code/ressources/image/personnage/Perso2.7.png | Bin 0 -> 1037 bytes code/ressources/image/personnage/Perso2.8.png | Bin 0 -> 1026 bytes code/ressources/image/personnage/Perso2.9.png | Bin 0 -> 1012 bytes code/ressources/image/terrain/arbre1b.png | Bin 0 -> 2938 bytes code/ressources/image/terrain/arbre1h.png | Bin 0 -> 2725 bytes .../controller/GameConfigMenuController.java | 2 +- code/src/controller/GamePlayController.java | 386 +++++++++++++++--- code/src/controller/MainPageController.java | 18 +- code/src/controller/MapController.java | 104 +++++ code/src/controller/PageGameController.java | 234 +++++++++++ code/src/controller/PersoController.java | 64 +++ code/src/launcher/Main.java | 34 +- code/src/model/DataTable.java | 65 ++- code/src/model/Database.java | 6 +- code/src/model/Map.java | 28 +- projetjavafx.iml | 53 +++ 28 files changed, 938 insertions(+), 150 deletions(-) create mode 100644 code/ressources/fxml/viewAvatar.fxml create mode 100644 code/ressources/image/personnage/Perso2.1.png create mode 100644 code/ressources/image/personnage/Perso2.10.png create mode 100644 code/ressources/image/personnage/Perso2.11.png create mode 100644 code/ressources/image/personnage/Perso2.12.png create mode 100644 code/ressources/image/personnage/Perso2.2.png create mode 100644 code/ressources/image/personnage/Perso2.3.png create mode 100644 code/ressources/image/personnage/Perso2.4.png create mode 100644 code/ressources/image/personnage/Perso2.5.png create mode 100644 code/ressources/image/personnage/Perso2.6.png create mode 100644 code/ressources/image/personnage/Perso2.7.png create mode 100644 code/ressources/image/personnage/Perso2.8.png create mode 100644 code/ressources/image/personnage/Perso2.9.png create mode 100644 code/ressources/image/terrain/arbre1b.png create mode 100644 code/ressources/image/terrain/arbre1h.png create mode 100644 code/src/controller/MapController.java create mode 100644 code/src/controller/PageGameController.java create mode 100644 code/src/controller/PersoController.java create mode 100644 projetjavafx.iml diff --git a/code/ressources/fxml/MainPage.fxml b/code/ressources/fxml/MainPage.fxml index 14124f6..241b027 100644 --- a/code/ressources/fxml/MainPage.fxml +++ b/code/ressources/fxml/MainPage.fxml @@ -17,6 +17,16 @@ AnchorPane.topAnchor="0.0"> + + + + + + + + diff --git a/code/ressources/fxml/viewAvatar.fxml b/code/ressources/fxml/viewAvatar.fxml new file mode 100644 index 0000000..4c77c9a --- /dev/null +++ b/code/ressources/fxml/viewAvatar.fxml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/code/ressources/fxml/viewGame.fxml b/code/ressources/fxml/viewGame.fxml index 52fa39f..4aca4fc 100644 --- a/code/ressources/fxml/viewGame.fxml +++ b/code/ressources/fxml/viewGame.fxml @@ -11,37 +11,38 @@ - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/ressources/image/personnage/Perso2.1.png b/code/ressources/image/personnage/Perso2.1.png new file mode 100644 index 0000000000000000000000000000000000000000..6b4f8f24678c7d518c115ac2372789c05f598b4b GIT binary patch literal 1082 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fgF(JSw#1%+8&E}fsEziKf z$nVIUb;?VdFZNY3gPnM7v)9&b3=9zr3}trf<`*Aum+6==VS>B6`<**?fV#eX`SS1I zzdwKe{JwMI=fSy~(=CC9yqaEa&cwEUgseSv@>F3JVMQ`T3=!q_nlQm6VjUw6yH(>>?v0d&N#`15M{I3GxdD(#Sx4`Qa@< zK4X%%yNg^AmjXx~XMsm#F#`kN5fEmas?8@26l5>)^mS!_%EQSorkQ^E#T<~P{35>) z#`BBHXE87^WqGA$#&d1*R$nCdbLoy-sdc_0M>d>n*duNh!XdCl_38A# zob7CZcbJvll)D6qh+JB@jzdq`spC=l#QPTcGbY%dRsG}f$p0L>){0!grgQVfS056- zG%B_4qE^Ya=$5`&!M(o(s2{ zxdj*4yx=blT`6!tG^nj>?ku5%vknOtW=3VRI%tMY<(VS7R+~YKN5c1RMeAv1uGeSP z*nEsyC+w^U&X=xV!h7vDZ>YeoHIp;jZZJv4ZD)IXC42MIuWl~)7I<*OrJ}J`j}^6pTBlSaUc61MH_#=oqxZHkiD4Qk@J7tLaSxKO>7%fr2X)pGX(-z|k>IJZ>DeYe+t zc3OV<=ch$>x_-|;XZ|#jW>3>U{q#-A&mTJu>~4vB$FrYt^T8y){|S71fk{xc#5JNM zC9x#cD!C{XNHG{07#Zps8tEEXh8UV!8CqBwm}wgrSQ!{R+j!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fgQ5WD7;tHhs9f1ZiI?d*a zU|=Y-TeppY!A`uk*=y^oWQO_02i#>kwE1G)-Q6clm~iLL9iaLzU%veN_s_w>L0(>d znz#I`>E%BU&i#Go1Ro!tj*iaebjvMUwoIQsT|`)fg_V_`pI=H!s<5z7TU*=1!$V0) zNlQyBGBVQ6&hG#J|FWi=F9J>EEeY}q2GR)d)}z7$$YV_Mc6ZS{wY^mZ$l)yTh%9Dc z;5!1sj8nDwq=AC$C7!;n>`!?(`DK~o=lo~{Y05A13t>FJsC*U!1CyAii(`n#@uO4U zmMt<6Xlw4u6BlL^Z#wAJ(De3i{6jyri>%fM|K0w+qUA}gk?~Ipu8;dwpZdpesm>KR z5ij&2xKdzSvFi0T=X`f5?~Gzpc>d+YyL6Yvmc>em4o_VJ4FZ+wbT(S({^bkbxV3b3 zaTTA#`x=(#%O9$4W(%mCarNa+p0ZqdX@^vC#juBeWdy(JJSi+XTCu;2!RcIi#lBs3 zTb=|f9k%%?-mpY<=G52I{2mI_sBZ|L6u#=`uLrXy)lXqzE7+{D=?vp64#ppB4Bw`A z$#gIFnz(bW_mW-x=Z!zb%53;p9LQ!VI(hYnF3FD$JMvqeK79G!oH<9xGqob=}5H;+*>RX*4DXPxW;vP zTPlly<`&%ua#dF?{^wZ?1j%3uGx`%m|; z?Oi+j{L6C7I4`}~!6&m>$J%fE`t`S`EX|y?^ycJ;`rTfBUzO)8n*)=JYKdz^NlIc# zs#S7PDv)9@GB7gKH8j#SunaLYwKB4>GBMFMFt9Q($Z6W}2t`9~eoAIqC2kF}_c`K# P8W=oX{an^LB{Ts5%Bg&( literal 0 HcmV?d00001 diff --git a/code/ressources/image/personnage/Perso2.11.png b/code/ressources/image/personnage/Perso2.11.png new file mode 100644 index 0000000000000000000000000000000000000000..260cf3efb9bd34472497fb7bc7f33ef8c05fdb51 GIT binary patch literal 970 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fg(HP(p;tHglW&^EY^ z-tw=em;XFC_xGI>o6{}%`1o{mbf!jpHu~@(Tvi$UuGh;VnQuW0JSKi&pTyEAxOH&H|6f zVg?4jBOuH;Rhv&5D9B#o>Fdh=l!udFR?NszCJUq~zsN6y@%*ClSquzJoSrU@As)w% zPI_B5+kmHy)ARDOw`q|qLOhJ>C4YDPm!6|Cn`y1j_x$&k3LEYppOlk+vwor?WB0zN zTlE-{7oXr2tJ^a9O-lrGrv8~Q`P54cQK7;1R)Hei)rm_TY|pa!7V2ElsfxVv@S``A zXNFL(4Rj87kY3Ya3X#w7VM1M3w=0X3bhWS;+A6Y>@3%{4Ua5&Xh3TenV#+mY)=LdGBK zhRSIQ0iKTk)^Y`i&tVa%XHrO#{@t)KU7()p#3vhpg+D)Re5O7%wNsF@Y{^8?1#A44 zuR7!@%0DIh-{+Y+KB1vMEar!I2r3A7AJ*D1x$6~c!1}9CVw_tSOeyNhf3+xU&gH+k z)tNHWwub2YhfaSn%lo#KZDaA;-P*5T88b6(;q%YqZ|JS`1cDS#|c=*F1{>%^hhaDI$^>CH&6~6aO5^tKK_-V=|miX2j zf7Xfr`MWu^wEUKAS$^^clljK9-UEB()28Qt_+9${-NSbWbb0<6wzS{1`tYU3V$Z(4 z`}gnt$Mx|0<^2ru@=OI4|Cs);3hayFW^gYq0HzSt64!{5l*E!$tK_0oAjM#0U}UIk zXryak8DeN^Wn^h(Xsm5uU}a#y$Nt(3MMG|WN@iLmZVmNO!CgQN44$rjF6*2UngIVq BYm)!~ literal 0 HcmV?d00001 diff --git a/code/ressources/image/personnage/Perso2.12.png b/code/ressources/image/personnage/Perso2.12.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ac4e17801f1f8056a8f1f1d764603b212ce170 GIT binary patch literal 970 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fg(HP(p;tHf07#R5-nVn{H z*@@RSdu@$iVAuv!oy@SR>yS2Ith-D{ncccy2Sw%=ADA#ojZ4cdcJ)5^6%fj zY2Na$rkDS|bK>X0xqN(lIyySjr%&IqWy|JtOA%oad3kvjR#tv~ekm!b!oosrZEX(^ z4<#ifEiJ9c$VfXoyZ`_Hw{FJsC*U!0~4pGi(`n# z@vBo`m#tP1Xf@5P>U_y~%E=GZjQ=zsGq-gnn+@OvEZgzD*xMAye7Rk z+MhisXoX|SG_SmyM_B|m@ts-JFXVM%#qWE5E+P!~&VO#T4d2XP;GXdH{Z1~;Ij)ob z^FO%1xb9w@(GNAHbi*xk_UoTIbzSI!`oRf1KOHvE68slXlJt0H;Ix`A?hNn6gP#UR z*8QC~;quZMbLY+Ih~RoxaLve6>~ur-o7g-2Q3p#o1e6v2F_iplX%TQpY*`fcOx)i{ zL6Ikc%hKO5&T*%+EpvWF^P{vWGZ;8zVqWe3plp=Hqj$(*m-O9#f=RPZ7c{Z|o7+)+ zQsM){9e0KXlTHBvkH&wo0tfUoI(dF5GYIXLJ+blg!uz83LMzp4KG!w3!|%jncW>i@VO{ zGBK=Of8u`cy4xS#f6v?DW_t3d^@pmey2_<;G8Q^(%6=d3?c%%n@h$H!xqn}`uU{Yi z|I?o>jw#3AR2+GJ;r_n;`L)wzr~S5{{5X{Lm6`WkU<_MwV8_2HFM&Rt5&Or@mc7(U6;;l9^VCTLaH@zbv2z22WQ%mvv4F FO#s!eeNg}a literal 0 HcmV?d00001 diff --git a/code/ressources/image/personnage/Perso2.2.png b/code/ressources/image/personnage/Perso2.2.png new file mode 100644 index 0000000000000000000000000000000000000000..df6126afb6ba630a25477562d51179cd319238ba GIT binary patch literal 1115 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fgF+ad3#1%+8&E}fsEziKf z$nVIUb;>IOs5F_uPQ13+YwMNcceXJwl-aHO|8cuEU#z=K$Nb_0p0eE&CQNX5cfWJz z4p94-FJJ!s`}gP1pWk;*{5&{!bGjwav{%#1*RPyp&cycr|9^fp!-LlTe0+R5Iy%#* zPv5d-i-@p@yu3UME32@ukcWpyVPT=Tm>54lzm$}ewzjsCl9HB|mYtnlWMrh(UE`qNj}07HavWFOqHH4jv*e$_fF0(zh%JFme@FL?V7u9PB_Ro zcNHr(Gw%KK|Nge{Z8sMlUG_KRsm$%p`^P8gq#FFF5}w39BjtCC-Si314<2dfSn_GV z&G$aLq6zyqr{o-plryYZ#_^z!ZGqm?z*>bVr}oMVZkgj2!|(KL^Gu82d10ML+LgkM z1)Z#xE-uLKQCSzlX&Ua;nq%Rx)TK+Ji1*V^8x`4i-Nlm%4_xKp`*XDYp1?k#z(bY+ zj{KQ3Yy`CDK3JCUw~3d_o_ildm&JrP4f?4cuQ?bLcvdj*b(#M)vijG@3Etc;(q?M|%_Fp$b)<{^En*GM-t(FHY2ws7CC8j^b@Q4hPO@NJ z7ks#ccgIIT%hZRj9^Sjuu+@}r*#(a}m70}ndtc99wpO?5_Kx}!y)O!)xBDhP=3A5d zMwcPDBxgZMXK{t{viD}Q`KN6(O7=gIs*HgUr{cK(ixqS*T4a%Ra)YGq_>WoV*pU|?lnaHq+&5Jf|7eoAIqC2kFC@Bcju)WG2B>gTe~DWM4fXEwrl literal 0 HcmV?d00001 diff --git a/code/ressources/image/personnage/Perso2.3.png b/code/ressources/image/personnage/Perso2.3.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b6847026ce66b4242f65e7e3cfeae088dc72eb GIT binary patch literal 1100 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fgF+ad3#1%+8&E}fsEziKf z$nVIUb;>I!GbMt7L7Ojj8v}!#cx|)S)>p|4tGW)k%XF04t^0LQWPb612@@u`ySv}H zbLY#KFF+Ii{rmUl&!69SPW(JLcXPTW(6m?6%h#`*WX{C)|Nnn}HN%6}{(O9VIyySj zr%&IqWs8Wgh`hW!3oEOzuux%Pp}3eBKR>^el$3{uhqku1l9G~^mX@8JU1Vfrny=_| zpanuDL4LtN8VyV>wzUTeF(!GtyC`hVwrv1%I14-?iy0XBj({-ZRBb+KpdfpRr>`sf zQyxx!Np_pLKj(ln(P?ybxabc-&M6Pm~4N;So($N z1l!J!bq%TVBARVns@4Bw8d(?*Je~CX$%z=1GI5sAib-3O_|N^;3p(1cx#nn%*BSXR zzvE(x8uioGf4-x1Ms>z>9XFmgGuK_;mr)-T65O)E_w@CW4;tpueXkf-FqpgC(LJ+O z&%>Z5$c;0{BV!wPvBQeeJASR-{|gHBD6s?;ecUPF->_EAr9j+4Yw4Eq>^ryrgt8nk z+TxJuo0uWk6wDgL+Tj01t)NPyO<-EE8B?7ZmmQNP1CtkH!z8f@TimTXd^3J=B-HG_ zyYMvghR+RrjLu3w%Ko$EN6)_`_I*y`fd>`*?wSQGWgBk4=KW

)V{V{sd5Ordsl69n!0>lHS2@P-khTQy=%(P0}8tmE5!~!)ic)I$ztaD0e0su6tvg-f< literal 0 HcmV?d00001 diff --git a/code/ressources/image/personnage/Perso2.4.png b/code/ressources/image/personnage/Perso2.4.png new file mode 100644 index 0000000000000000000000000000000000000000..86e9fe72bfd39f1ed4b3f0a24fc01e17e939d76a GIT binary patch literal 1061 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fgF(<$$#1%+8&F0EF<;CyF zygA*Hfq^k7GbMt7VG9F;yG+OY;sa%N>s}=@{5hj;CtiEy_?=$|MOJkk`u~27Hec+7 z2@~Ai-S6DF12p8zmoNYR{rmIh573a`cTW5~IQP}`@@d}k=1gqsS5D$rGyMPm|3Pbi z9UUD$KECPGr*GM^MMPLcUS6Jsm6e~LUrI`!$V0)DKawB&dyFtOY7jb!ka*& zMM{GFf`K#!aLj+W5Gcr)|rRctjR6Fz_7#VaBQ2e9}Nc_7YEDSN5ko zocxj|&Av0bK$`N4{6ZMdFDjqKz`*3<>EamTas23%n`N^N1RPYgS@d%+Et6_))Z+=jUfJv)$)L zr+4Ks`^>pbGMQ`lAKyOj{?!h-htbUAvnF zpRzI=%s;>PAZye7Y3n(xT6Xet9Ia?vC$>#8%Y|*mn}n9s1#BtTq{VGDBwKVgSI(1; zx0B^%XWnn(+r(rrjit)yLY%_%-fgefE>UR=ej=kIkiSN8@!#rzppyy<>~C>wV`_nPr_lni^ z^^Xk$n|LnXpY~1vi$=hYokdLC;VgnHrEfVuFt)Sj2>+L?q&i`H8IN?!yZ=i(CMLd- zOlRC(X|}|{l+xkaJT}o1G4-`My{-|n#K>y=8@8!4qn}6Tt-=TJS&c(*2jw310 zSffSeEDIM<`Zw`&N6b!*6>k}vet7CeJU>w&_P8#t<7v^$X{)Dddxt+1SQxS6>MD(} zbp>Aq79KieDK@R+tH9z%y@8P}>tCOBxBnk_HPzEEbiKLsoAU+k39-6j-IubZvX%Q literal 0 HcmV?d00001 diff --git a/code/ressources/image/personnage/Perso2.5.png b/code/ressources/image/personnage/Perso2.5.png new file mode 100644 index 0000000000000000000000000000000000000000..d6deb759d3056871b3783f6bc6366c183df4c1d2 GIT binary patch literal 1061 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fgu_C}H#1%+8&F0EF<;CyF zEG{OtIo*3@Ovn7<17&vWUL`a9IiqeTUfb-obye4)E64BrIw+#e z7dv6X1b27$J9q8?&H3`>%fEmB{`~m^H01Z46F(2meKoy&nzy_;6WjWgllavP|NsAg z(Ar-|M~9D(Z~FA`!?(`K4s$UQON%(v)B17s7acQTZ$e1}1Y)7sn8f<432wF1uyG(=azJ z`OdCw$zfBj-N?JHHX${|fb0GLw8=VLIZv*|U$uP5@?+nNq`4Yj85cI{t!-Q^KEL7G zNyRFSBXS>IgtmT~X!n?3$nwUC_?Q1HPBx#d`6L%7|5!d|@w)fUr~fy7OrIquyW;8P zCtq@QdA@(&@762u(!};-rbO5*wS3n&2|<|!2Le?D_AGH-Q0!arBINerW{!N>7^#b) z4XMpee7~yF6dtuY*h@G3tl^8A#c*>{TbIj>_6hFUOOz_NE;!e5lOfr4!e)oanBEIY z5wG`rUns%GxRh~6M88E>M1jf$)+m+_a;ee!v(yx)iOe$=IJc*;t>@NPJ7IyHYGQk4 zNAoY-6s5={c1PLHws1DbG?te;()K3{JyLkkpDxDm@}5-A1Lv+E!m=%gk1HtnpDD0C zdnnzG{r9I&If^P9O#JVO<%nujtW#`c77U5yi6}7pU}h8FaxDCqLSJ(0xp{{=FZ}3I zbk;O^*Rr{xx5h(I(L`!&-Ods z0nHyxIL@_x+s$ga=Ubx7v6RSZ&-ZnQzglh2qZzLw-n}O}z%{TX_=M&rJEv_rb<_5L z+7q$1%Wlshp4FesKSpkQrLMr4y6;pqm-+VBu90CKmQ!2IZCiF1?Yx<@s;m6*w*C*j zJY7fU-#heXLzU{i-d(K^GtA~reO($E`ubCqjZ~T144-AUuiq{E?j?Wu<&SFp#QnG5 zeg7TxP+wmnJ@lq*(0^chQY~?fC`m~yNwrEYN(E93Mg~TPx`sx&29_a)rdCE~Rt84e n1_o9J22(HYo`|9$H$NpatrE9}Cq2x%Kn)C@u6{1-oD!M!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fgF+ad3#1%+8&F0EF<;CyF zygA*Hfq^lCfnf^+gS$+}{Ne*;cI&2j%iD?9HhXPd)ph9CL6L0?4BC9L6DCY>cXz*Y z=MGT&moH!b{rmUl&mW-n-*-;@JUI8&^m3psb0)U+D<|=*8UFwO|Dd(Mj*bo=AK&!p z)3bU+kT^*N5NY+pS&xJ%8@HIdb3M zogekH4%vQUV%(7$t2L#E<@C|g&>}!!fB0(%IxX;8AH;W{PdJycv2)i} z?KhjEo3g|^JRj}R^8EG2r$d8_sWE(|OE;tI;^Py;%GfHIGs@Z|F4fpcf3dflc{y|c`UzQfv#lFm9*OZ=e){Gd{pXv1 zT1qh;DKRoV_UomYY=3=i<$wO8PRRjJf^&h%ib1u+HKHUXu_V9nO2Eg!}my;e?Sckp00i_>zopr04X)1 ArT_o{ literal 0 HcmV?d00001 diff --git a/code/ressources/image/personnage/Perso2.7.png b/code/ressources/image/personnage/Perso2.7.png new file mode 100644 index 0000000000000000000000000000000000000000..ca479151b5a328b757b8fb72c6a563398f959161 GIT binary patch literal 1037 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fgF(<$$#1%;MJ2GdT@^YFD zw1_b%Gv!q>!xjdH2nL4sEnDowYn#2cuIf5;<@lXn2Sv2`V$1B-%`ZOi|NR9}6q1yu7@Kun0dtzlVoMVPT<^l$4T^l9ra1ot<4|WaOoi6CyyP zMM{GFf`K#!aLj+W5Gcr)?NMQuIx{F zIQgZuyi1N}gEZwA`Gqi^UsOJefq_ZK)5S5wLi@6s& z3dpIncq-^xY3m%m>LtkdYNDgNzW$NyeJLll?-#oA;(8@lE!PJdNu^kB1>2Kl2mBqL zWNl?K_#$e;=Qw?`ZPR<7idAlmt?AuzFZ>H0B@3-%o^blJf}=>nB$bVYcXU=<>|Mjz zs3B+~knOpFO{zjaAh>g58;_Wf9$$u-+X?O#mAFVj6|TJtZn4PCX^99+h>QPtc9TJn zEZeLZECLVz>TkMmW_9$-P9+}47p>-7O4yd(;+11Ie8v%V>GyH>Gvyh=d3zbclqyy) zKfG1#&X0O2F%9K!Y3eL0sQ-o{!L< zb#^hm%af~|D?{o&Pug9VSQF3v#phRRwOG>ZWo0W2mWtn5_WI1nMZZ`}m#1aOemr+^ z78}Qr=X$4O0;jCgIqm55G$?#YX5fxetB&;o-ePmS4d08~nO~hYb<>l>U%583A32*A z{gfp=a%%lI$<6IM7u>AcdrouJ^!ew+E%^_IhF&e({@U(PiP7=DjXg(`{&^gGSn!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fgF)hF+#1%;MJ2E@X2HL_H zl$r7>nPCe9Lj(gu`<5+s;S8+#WHG zpFo=Oi~K?u&o3&U#lXO%<>}%W;&J@wr0nWj20X2ETTg3jQE<=e%&jVPQfS=z^#A{z zo@GwEC*HR6m3Nxg{`uJp51~i@MG8DMU;6e7vxqfNFgO{CF53j21`7O;Lxc~J|!(VkfwD|9C5pldLc)V4>@le@rR*#qZ z8Rr>lY_2e{sb32&Wp;3?U&J_p@dC@8R}-JwvDw;qupN_FUCMr7<#5*!UIYjqj7 zi3(ig=U?FI>A=GLB*BV@qoYPY;mb8C{t0r03=b4oGT2n!l>Nw&Z15-%o{=T=QTt6? z+(qWKRf50goltsuasm6iibVj|DL^>_nKcYJYs0z6*IY7RT%3q zBZqfF`!|-i3xyxtk^A5hE7tl#`2utJk!5$Q`~;5+@0w_`b>StE-(O-Tzq}IhN6T=@ zeBT!imYVT%O+Py(d@^R(llRN;F+*S0TaAV)qjRZ|$986V9B!Dg+vfiBb#j+E9Cn-u z{OK#=YREKW_oD)hIo5LhNA0Aq>A$<9c)CO5w9w{*wgL(g1?=IW%LTiIyPpcJRBew4 z3$2q&+z_+&hsvo>C01`&Up%nB#y?cojbZcES8}U=eQ9g_`6kgSHvIXfHRqncsxzyo zDd&IvHSP1ik3WAp_J2RSz?C^hPrT|5(|$&l_2Gf+b8_>5Nl3NCHKHUXu_V9nO2Eg!}EKVmOu>*p00i_ I>zopr0Kut=i~s-t literal 0 HcmV?d00001 diff --git a/code/ressources/image/personnage/Perso2.9.png b/code/ressources/image/personnage/Perso2.9.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a75189ea8eebf926017eac5937906924fb777b GIT binary patch literal 1012 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 literal 0 HcmV?d00001 diff --git a/code/ressources/image/terrain/arbre1h.png b/code/ressources/image/terrain/arbre1h.png new file mode 100644 index 0000000000000000000000000000000000000000..7962c8a9821c63ba2d881a5e03309bdfe6d063b6 GIT binary patch literal 2725 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 U$9LKC(uY~V%*YyEW8fV7AIL-)ApigX literal 0 HcmV?d00001 diff --git a/code/src/controller/GameConfigMenuController.java b/code/src/controller/GameConfigMenuController.java index 66c736e..0fda1df 100644 --- a/code/src/controller/GameConfigMenuController.java +++ b/code/src/controller/GameConfigMenuController.java @@ -73,7 +73,7 @@ public class GameConfigMenuController implements Initializable { void launchGame(MouseEvent event) throws Exception { AnchorPane pane = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/viewGame.fxml"))); GamePlayController gm = new GamePlayController(); - AnchorPane gp = gm.mapInitialisation(this.difficulty); + AnchorPane gp = gm.mapInitialisation(this.difficulty, this.personnage); levelRoot.getChildren().addAll(gp, pane); } diff --git a/code/src/controller/GamePlayController.java b/code/src/controller/GamePlayController.java index 7fa0234..449b16a 100644 --- a/code/src/controller/GamePlayController.java +++ b/code/src/controller/GamePlayController.java @@ -1,100 +1,347 @@ package controller; +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; import javafx.fxml.Initializable; -import javafx.scene.Scene; -import javafx.scene.canvas.Canvas; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.image.WritableImage; import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; import javafx.scene.paint.Color; -import javafx.scene.shape.Rectangle; -import javafx.scene.text.Font; -import javafx.scene.text.Text; -import javafx.stage.Stage; +import javafx.util.Duration; +import model.Case; +import model.Map; +import java.io.IOException; import java.net.URL; +import java.util.Objects; import java.util.ResourceBundle; public class GamePlayController implements Initializable { - private final int tileSize = 20 ; + private final int tileSize = 20 ; - private AnchorPane FirstAnchor; + public ImageView persoImageView; + @FXML public AnchorPane levelRoot; - @Override - public void initialize(URL url, ResourceBundle resourceBundle) { + PageGameController pageGameController; - } + private final Image w = new Image("/image/terrain/chemin.png"); + private final Image b = new Image("/image/terrain/herbe.png"); + private final Image a = new Image("/image/terrain/arbre1h.png"); + private final Image c = new Image("/image/terrain/arbre1b.png"); - public AnchorPane mapInitialisation(int difficulty){ + private final PersoController persoController = new PersoController(); + Case caseActuelle; + MapController mapController; + Case caseAncienne; + String pathPerso; + Image imagePerso; - if(difficulty == 1){ - Image w = new Image("/image/terrain/chemin.png"); - Image b = new Image("/image/terrain/herbe.png"); + @FXML + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + } - Image[][] grid = { - {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, - {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b} - - }; + public AnchorPane spawnPlayer(int difficulty, int perso) throws NullPointerException, IOException { + persoController.createPerso(difficulty, perso); + + mapController = persoController.getMapController(); + caseActuelle = mapController.getStartCase(); + pathPerso = persoController.getPath() + "2.png"; + System.out.println(pathPerso); + AnchorPane test = new AnchorPane(); + persoImageView = new ImageView(new Image(pathPerso)); + test.getChildren().add(persoImageView); + return test; + + /* + persoImageView.setLayoutY(persoController.getY()); + persoImageView.setLayoutX(persoController.getX()); + persoImageView.setFitHeight(32); + persoImageView.setFitWidth(32); + persoImageView.setImage(new Image(pathPerso)); + */ + } - GridPane gridPane = new GridPane(); + public void movePlayerNextCase() throws InterruptedException { + Map map = persoController.getMap(); + caseAncienne = caseActuelle; + caseActuelle = mapController.getNextCase(caseActuelle); + Timeline timeline = new Timeline(); + timeline.setCycleCount(1); + + //animation déplacement vers la droite + if(caseActuelle.getCoordX() > caseAncienne.getCoordX()){ + System.out.println(pathPerso + "7.png"); + Image imagePerso7 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "7.png")).toExternalForm()); + Image imagePerso8 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "8.png")).toExternalForm()); + Image imagePerso9 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "9.png")).toExternalForm()); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { + persoImageView.setImage(imagePerso8); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { + persoImageView.setImage(imagePerso7); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { + persoImageView.setImage(imagePerso9); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { + persoImageView.setImage(imagePerso7); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { + persoImageView.setImage(imagePerso9); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { + persoImageView.setImage(imagePerso7); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { + persoImageView.setImage(imagePerso9); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { + persoImageView.setImage(imagePerso8); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.play(); + } + //animation déplacement vers la gauche + if(caseActuelle.getCoordX() < caseAncienne.getCoordX()){ + Image imagePerso4 = new Image(getClass().getClassLoader().getResource(pathPerso+"4.png").toExternalForm()); + Image imagePerso5 = new Image(getClass().getClassLoader().getResource(pathPerso+"5.png").toExternalForm()); + Image imagePerso6 = new Image(getClass().getClassLoader().getResource(pathPerso+"6.png").toExternalForm()); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { + persoImageView.setImage(imagePerso5); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { + persoImageView.setImage(imagePerso4); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { + persoImageView.setImage(imagePerso6); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { + persoImageView.setImage(imagePerso4); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { + persoImageView.setImage(imagePerso6); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { + persoImageView.setImage(imagePerso4); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { + persoImageView.setImage(imagePerso6); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { + persoImageView.setImage(imagePerso5); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.play(); + } + //animation déplacement vers le haut + if(caseActuelle.getCoordY() < caseAncienne.getCoordY()){ + Image imagePerso10 = new Image(getClass().getClassLoader().getResource(pathPerso+"10.png").toExternalForm()); + Image imagePerso11 = new Image(getClass().getClassLoader().getResource(pathPerso+"11.png").toExternalForm()); + Image imagePerso12 = new Image(getClass().getClassLoader().getResource(pathPerso+"12.png").toExternalForm()); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { + persoImageView.setImage(imagePerso11); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { + persoImageView.setImage(imagePerso10); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { + persoImageView.setImage(imagePerso12); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { + persoImageView.setImage(imagePerso10); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { + persoImageView.setImage(imagePerso12); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { + persoImageView.setImage(imagePerso10); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { + persoImageView.setImage(imagePerso12); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { + persoImageView.setImage(imagePerso11); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.play(); + } + //animation déplacement vers le bas + if(caseActuelle.getCoordY() > caseAncienne.getCoordY()){ + Image imagePerso1 = new Image(getClass().getClassLoader().getResource(pathPerso+"1.png").toExternalForm()); + Image imagePerso2 = new Image(getClass().getClassLoader().getResource(pathPerso+"2.png").toExternalForm()); + Image imagePerso3 = new Image(getClass().getClassLoader().getResource(pathPerso+"3.png").toExternalForm()); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { + persoImageView.setImage(imagePerso2); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { + persoImageView.setImage(imagePerso1); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { + persoImageView.setImage(imagePerso3); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { + persoImageView.setImage(imagePerso1); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { + persoImageView.setImage(imagePerso3); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { + persoImageView.setImage(imagePerso1); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { + persoImageView.setImage(imagePerso3); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { + persoImageView.setImage(imagePerso2); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.play(); + } + } - // for visualizing the different squares: + public void lancerDe(ActionEvent actionEvent) throws InterruptedException { + movePlayerNextCase(); + System.out.println("lancer de"); + } - gridPane.setStyle("-fx-background-color: grey;"); - for (int y = 0 ; y < grid.length ; y++) { - for (int x = 0 ; x < grid[y].length ; x++) { - ImageView imageView = new ImageView(grid[y][x]); - imageView.setFitWidth(tileSize); - imageView.setFitHeight(tileSize); - gridPane.add(imageView, x, y); + public AnchorPane mapInitialisation(int difficulty, int perso) throws IOException { + + if(difficulty == 1){ + + Image[][] grid = { + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b} + + }; + + Image[][] grid2 = { + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,a,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,c,b,b,b,b,b,b,b,b,b,b,b,b,b,b,a,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,c,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b} + }; + + GridPane gridPane = new GridPane(); + + // for visualizing the different squares: + + gridPane.setStyle("-fx-background-color: grey;"); + + for (int y = 0 ; y < grid.length ; y++) { + for (int x = 0 ; x < grid[y].length ; x++) { + ImageView imageView = new ImageView(grid[y][x]); + imageView.setFitWidth(tileSize); + imageView.setFitHeight(tileSize); + gridPane.add(imageView, x, y); + } } - } - AnchorPane FirstAnchor = new AnchorPane(); - FirstAnchor.getChildren().add(gridPane); + for (int y = 0 ; y < grid2.length ; y++) { + for (int x = 0 ; x < grid2[y].length ; x++) { + if(grid2[y][x] == b) continue; + ImageView imageView = new ImageView(grid2[y][x]); + imageView.setFitWidth(tileSize); + imageView.setFitHeight(tileSize); + gridPane.add(imageView, x, y); + } + } - return FirstAnchor; + AnchorPane FirstAnchor = new AnchorPane(); + FirstAnchor.getChildren().addAll(gridPane,spawnPlayer(difficulty, perso)); + return FirstAnchor; } else if(difficulty == 2){ - Image w = new Image("/image/terrain/chemin.png"); - Image b = new Image("/image/terrain/herbe.png"); - Image[][] grid = { {w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, @@ -147,8 +394,11 @@ public class GamePlayController implements Initializable { AnchorPane FirstAnchor = new AnchorPane(); FirstAnchor.getChildren().add(gridPane); + System.out.println("difficulty : " + difficulty); - return FirstAnchor; + spawnPlayer(difficulty, perso); + + return FirstAnchor; } else{ @@ -207,6 +457,10 @@ public class GamePlayController implements Initializable { AnchorPane FirstAnchor = new AnchorPane(); FirstAnchor.getChildren().add(gridPane); + System.out.println("difficulty : " + difficulty); + + spawnPlayer(difficulty, perso); + return FirstAnchor; } diff --git a/code/src/controller/MainPageController.java b/code/src/controller/MainPageController.java index 3f78b2c..fbbb4f7 100644 --- a/code/src/controller/MainPageController.java +++ b/code/src/controller/MainPageController.java @@ -7,7 +7,9 @@ import javafx.scene.control.Button; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; +import launcher.Main; +import java.io.IOException; import java.net.URL; import java.util.Objects; import java.util.ResourceBundle; @@ -29,11 +31,6 @@ public class MainPageController implements Initializable { @FXML private ImageView loadGame; - @FXML - void exitGame(MouseEvent event) { - System.exit(0); - } - @Override public void initialize(URL url, ResourceBundle resourceBundle) { @@ -50,4 +47,15 @@ public class MainPageController implements Initializable { AnchorPane pane = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/GameConfigurationMenu.fxml"))); mainRoot.getChildren().setAll(pane); } + + @FXML + void exitGame(MouseEvent event) { + try{ + Main.serialize(); + } + catch(IOException e){ + //System.out.println("Could not save the progress :("); + } + System.exit(0); + } } diff --git a/code/src/controller/MapController.java b/code/src/controller/MapController.java new file mode 100644 index 0000000..dde907c --- /dev/null +++ b/code/src/controller/MapController.java @@ -0,0 +1,104 @@ +package controller; + +import javafx.fxml.Initializable; +import model.Case; +import model.Map; + +public class MapController implements Initializable { + + public Map map; + + @Override + public void initialize(java.net.URL location, java.util.ResourceBundle resources) { + + } + + public void createMap(int difficulty) { + System.out.println(difficulty); + if (difficulty == 1) { + + this.map = new Map(32,30); + Case case1 = new Case(1,2,2, true, false,map); + Case case2 = new Case(2,3,2, false, false,map); + Case case3 = new Case(3,4,2, false, false,map); + Case case4 = new Case(4,5,2, false, false,map); + Case case5 = new Case(5,5,3, false, false,map); + Case case6 = new Case(6,5,4, false, false,map); + Case case7 = new Case(7,5,5, false, false,map); + Case case8 = new Case(8,5,6, false, false,map); + Case case9 = new Case(9,5,7, false, false,map); + Case case10 = new Case(10,5,8, false, false,map); + map.addCase(case1); + map.addCase(case2); + map.addCase(case3); + map.addCase(case4); + map.addCase(case5); + map.addCase(case6); + map.addCase(case7); + map.addCase(case8); + map.addCase(case9); + map.addCase(case10); + } + if (difficulty == 2) { + map = new Map(32,30); + Case case1 = new Case(1,2,2, true, false,map); + Case case2 = new Case(2,3,2, false, false,map); + Case case3 = new Case(3,4,2, false, false,map); + Case case4 = new Case(4,5,2, false, false,map); + Case case5 = new Case(5,5,3, false, false,map); + Case case6 = new Case(6,5,4, false, false,map); + Case case7 = new Case(7,5,5, false, false,map); + Case case8 = new Case(8,5,6, false, false,map); + Case case9 = new Case(9,5,7, false, false,map); + Case case10 = new Case(10,5,8, false, false,map); + map.addCase(case1); + map.addCase(case2); + map.addCase(case3); + map.addCase(case4); + map.addCase(case5); + map.addCase(case6); + map.addCase(case7); + map.addCase(case8); + map.addCase(case9); + map.addCase(case10); + } + if (difficulty == 3) { + map = new Map(32,30); + Case case1 = new Case(1,2,2, true, false,map); + Case case2 = new Case(2,3,2, false, false,map); + Case case3 = new Case(3,4,2, false, false,map); + Case case4 = new Case(4,5,2, false, false,map); + Case case5 = new Case(5,5,3, false, false,map); + Case case6 = new Case(6,5,4, false, false,map); + Case case7 = new Case(7,5,5, false, false,map); + Case case8 = new Case(8,5,6, false, false,map); + Case case9 = new Case(9,5,7, false, false,map); + Case case10 = new Case(10,5,8, false, false,map); + map.addCase(case1); + map.addCase(case2); + map.addCase(case3); + map.addCase(case4); + map.addCase(case5); + map.addCase(case6); + map.addCase(case7); + map.addCase(case8); + map.addCase(case9); + map.addCase(case10); + } + if (difficulty != 1 && difficulty != 2 && difficulty != 3) { + System.out.println("Difficulty not found"); + } + } + public Map getMap(){ + return this.map; + } + public Case getCaseStart(){ + return map.getStartCase(); + } + public Case getNextCase(Case c){ + return map.getNextCase(c); + } + public Case getStartCase(){ + return map.getStartCase(); + } +} diff --git a/code/src/controller/PageGameController.java b/code/src/controller/PageGameController.java new file mode 100644 index 0000000..840e19f --- /dev/null +++ b/code/src/controller/PageGameController.java @@ -0,0 +1,234 @@ +package controller; + +import javafx.animation.Animation; +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; +import javafx.animation.Transition; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.util.Duration; +import model.Avatar; +import model.Case; +import model.Map; + +import java.net.URL; +import java.util.ResourceBundle; + +public class PageGameController implements Initializable { + + @FXML + private ImageView map; + + @FXML + private Button boutonDe; + + @FXML + private ImageView persoImageView; + + PersoController persoController; + Case caseActuelle; + MapController mapController; + Case caseAncienne; + String pathPerso; + Image imagePerso; + + public void spawnPlayer(ImageView ImageView, int difficulty) { + if(persoImageView != null) { + System.out.println("persoImageView is null"); + }else { + System.out.println("persoImageView is not null"); + } + this.persoImageView = ImageView; + persoController = new PersoController(); + persoController.createPerso(difficulty, 1); + mapController = persoController.getMapController(); + caseActuelle = mapController.getStartCase(); + pathPerso = persoController.getPath(); + imagePerso = new Image(getClass().getClassLoader().getResource(pathPerso+"2.png").toExternalForm()); + persoImageView.setLayoutY(persoController.getY()); + persoImageView.setLayoutX(persoController.getX()); + persoImageView.setFitHeight(32); + persoImageView.setFitWidth(32); + persoImageView.setImage(imagePerso); + + } + + public void movePlayerNextCase() throws InterruptedException { + mapController = persoController.getMapController(); + Map map = persoController.getMap(); + caseAncienne = caseActuelle; + caseActuelle = mapController.getNextCase(caseActuelle); + Timeline timeline = new Timeline(); + timeline.setCycleCount(1); + + //animation déplacement vers la droite + if(caseActuelle.getCoordX() > caseAncienne.getCoordX()){ + Image imagePerso7 = new Image(getClass().getClassLoader().getResource(pathPerso+"7.png").toExternalForm()); + Image imagePerso8 = new Image(getClass().getClassLoader().getResource(pathPerso+"8.png").toExternalForm()); + Image imagePerso9 = new Image(getClass().getClassLoader().getResource(pathPerso+"9.png").toExternalForm()); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { + persoImageView.setImage(imagePerso8); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { + persoImageView.setImage(imagePerso7); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { + persoImageView.setImage(imagePerso9); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { + persoImageView.setImage(imagePerso7); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { + persoImageView.setImage(imagePerso9); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { + persoImageView.setImage(imagePerso7); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { + persoImageView.setImage(imagePerso9); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { + persoImageView.setImage(imagePerso8); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.play(); + } + //animation déplacement vers la gauche + if(caseActuelle.getCoordX() < caseAncienne.getCoordX()){ + Image imagePerso4 = new Image(getClass().getClassLoader().getResource(pathPerso+"4.png").toExternalForm()); + Image imagePerso5 = new Image(getClass().getClassLoader().getResource(pathPerso+"5.png").toExternalForm()); + Image imagePerso6 = new Image(getClass().getClassLoader().getResource(pathPerso+"6.png").toExternalForm()); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { + persoImageView.setImage(imagePerso5); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { + persoImageView.setImage(imagePerso4); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { + persoImageView.setImage(imagePerso6); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { + persoImageView.setImage(imagePerso4); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { + persoImageView.setImage(imagePerso6); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { + persoImageView.setImage(imagePerso4); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { + persoImageView.setImage(imagePerso6); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { + persoImageView.setImage(imagePerso5); + persoImageView.setLayoutX(persoImageView.getLayoutX()+4); + })); + timeline.play(); + } + //animation déplacement vers le haut + if(caseActuelle.getCoordY() < caseAncienne.getCoordY()){ + Image imagePerso10 = new Image(getClass().getClassLoader().getResource(pathPerso+"10.png").toExternalForm()); + Image imagePerso11 = new Image(getClass().getClassLoader().getResource(pathPerso+"11.png").toExternalForm()); + Image imagePerso12 = new Image(getClass().getClassLoader().getResource(pathPerso+"12.png").toExternalForm()); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { + persoImageView.setImage(imagePerso11); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { + persoImageView.setImage(imagePerso10); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { + persoImageView.setImage(imagePerso12); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { + persoImageView.setImage(imagePerso10); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { + persoImageView.setImage(imagePerso12); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { + persoImageView.setImage(imagePerso10); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { + persoImageView.setImage(imagePerso12); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { + persoImageView.setImage(imagePerso11); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.play(); + } + //animation déplacement vers le bas + if(caseActuelle.getCoordY() > caseAncienne.getCoordY()){ + Image imagePerso1 = new Image(getClass().getClassLoader().getResource(pathPerso+"1.png").toExternalForm()); + Image imagePerso2 = new Image(getClass().getClassLoader().getResource(pathPerso+"2.png").toExternalForm()); + Image imagePerso3 = new Image(getClass().getClassLoader().getResource(pathPerso+"3.png").toExternalForm()); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { + persoImageView.setImage(imagePerso2); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { + persoImageView.setImage(imagePerso1); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { + persoImageView.setImage(imagePerso3); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { + persoImageView.setImage(imagePerso1); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { + persoImageView.setImage(imagePerso3); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { + persoImageView.setImage(imagePerso1); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { + persoImageView.setImage(imagePerso3); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { + persoImageView.setImage(imagePerso2); + persoImageView.setLayoutY(persoImageView.getLayoutY()+4); + })); + timeline.play(); + } + } + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + } + + public void lancerDe(ActionEvent actionEvent) throws InterruptedException { + movePlayerNextCase(); + System.out.println("lancer de"); + } +} diff --git a/code/src/controller/PersoController.java b/code/src/controller/PersoController.java new file mode 100644 index 0000000..6769098 --- /dev/null +++ b/code/src/controller/PersoController.java @@ -0,0 +1,64 @@ +package controller; + +import model.Avatar; +import model.Map; + +public class PersoController { + + Avatar avatar; + MapController mc; + private int test = 2; + + private Map map; + + public void createPerso(int difficulty, int perso) { + mc = new MapController(); + mc.createMap(difficulty); + this.map = mc.getMap(); + System.out.println(map); + test = 14; + if (perso == 1) { + avatar = new Avatar(1, "image/personnage/Perso1."); + System.out.println("Perso 1"); + } + if(perso == 2){ + avatar = new Avatar(2, "image/personnage/Perso2."); + System.out.println("Perso 2"); + } + if(perso == 3){ + avatar = new Avatar(3, "image/personnage/Perso3."); + System.out.println("Perso 3"); + } + if(perso != 1 && perso != 2 && perso != 3){ + System.out.println("Perso non reconnu"); + } + if (avatar == null) { + System.out.println("Erreur avatar"); + } else { + System.out.println("Avatar créé"); + } + } + + public Map getMap() { + System.out.println(test); + return this.map; + } + + public MapController getMapController() { + return mc; + } + + public String getPath(){ + System.out.println(avatar.getImage()); + return avatar.getImage(); + } + + public int getX(){ + return avatar.getCoordX(); + + } + + public int getY(){ + return avatar.getCoordY(); + } +} diff --git a/code/src/launcher/Main.java b/code/src/launcher/Main.java index b6859ae..cf6c039 100644 --- a/code/src/launcher/Main.java +++ b/code/src/launcher/Main.java @@ -23,6 +23,8 @@ public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception { + deserialize(); + Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MainPage.fxml"))); primaryStage.setTitle("The Adventurer"); primaryStage.setScene(new Scene(root, 900, 600)); @@ -42,39 +44,15 @@ public class Main extends Application { song.addList(song3); song.addList(song4); song.play(); - //fin musique - //début map - //Map map = new Map(30,5,5,20,20); - Map map = new Map(32,30); - Case case1 = new Case(1,2,2, true, false,map); - Case case2 = new Case(2,3,2, false, false,map); - Case case3 = new Case(3,4,2, false, false,map); - Case case4 = new Case(4,5,2, false, false,map); - map.addCase(case1); - map.addCase(case2); - map.addCase(case3); - map.addCase(case4); - Avatar avatar1 = new Avatar(1, "/image/personnage/Person1.2.png"); - avatar1.setCoord(map.getCoordStartX(), map.getCoordStartY()); - //fin map - - - - - - //fin map - } - /* + @Override public void stop(){ System.out.println("Stopping"); song.stop(); } - */ - public static Database getDatabase() { @@ -85,7 +63,7 @@ public class Main extends Application { try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("database.txt"))) { out.writeObject(currentd); } finally { - //System.out.println("Saved!"); + System.out.println("Saved!"); System.exit(0); } } @@ -100,5 +78,9 @@ public class Main extends Application { currentd = new Database(); } } + + public static void main(String[] args) { + launch(args); + } } diff --git a/code/src/model/DataTable.java b/code/src/model/DataTable.java index c46f41d..d608263 100644 --- a/code/src/model/DataTable.java +++ b/code/src/model/DataTable.java @@ -6,33 +6,74 @@ import java.io.IOException; import java.io.Serializable; public class DataTable implements Serializable { - private static int id=0; + + private static int id = 0; private int gameId; - private int score; + + private String playerName; + private int Maxscore; private int rounds; + private double timeElapsed; + public DataTable(int levelNumber) { + id++; + this.gameId = id; + } - public DataTable(){ + public DataTable() { id++; - this.gameId=id; + this.gameId = id; + this.Maxscore = 0; + this.timeElapsed = 0; + this.playerName = ""; + this.rounds = 0; //this.score=score; Calcul du score avec la difficulté ! } //Function update + public void update(int score, String name, double time, int rounds) { + this.Maxscore = score; + this.playerName = name; + this.timeElapsed = time; + this.rounds = rounds; + } - public void saveGame(){ + public void saveGame() { Main.getDatabase().getDatabaseFiles().add(this); - try{ + try { Main.serialize(); + } catch (IOException e) { + System.out.println("Cant close stream"); } - catch (IOException e){ - //System.out.println("Cant close stream"); - } } - public String toString() - { - return " Valeur a mettre"; + public double getTimeElapsed() { + System.out.println(this.timeElapsed); + return this.timeElapsed; + } + + public int maxScore() { + System.out.println(this.Maxscore); + return this.Maxscore; + } + + public String playerName() { + System.out.println(this.playerName); + return this.playerName; + } + + public int getRounds(){ + System.out.println(this.rounds); + return this.rounds; + } + + public int getGameID(){ + System.out.println(this.gameId); + return this.gameId; + } + + public String toString() { + return this.playerName + " : " + this.Maxscore; } } \ No newline at end of file diff --git a/code/src/model/Database.java b/code/src/model/Database.java index b6fb485..8e6495e 100644 --- a/code/src/model/Database.java +++ b/code/src/model/Database.java @@ -11,7 +11,7 @@ public class Database implements Serializable { private final ArrayList databaseFiles; public Database() { - this.maxScore = 1; + this.maxScore = 0; databaseFiles = new ArrayList(); } @@ -19,8 +19,8 @@ public class Database implements Serializable { return maxScore; } - public void setMaxScore(int maxLevel) { - if (this.maxScore < maxLevel) this.maxScore = maxLevel; + public void setMaxScore(int maxScore) { + if (this.maxScore < maxScore) this.maxScore = maxScore; } public void addData(DataTable d) { diff --git a/code/src/model/Map.java b/code/src/model/Map.java index 2a8acda..e256464 100644 --- a/code/src/model/Map.java +++ b/code/src/model/Map.java @@ -16,23 +16,18 @@ public class Map { public void addCase(Case c) { this.map.add(c); } - public void removeCase(Case c) { this.map.remove(c); } - public ArrayList getMap() { return this.map; } - public int getSizeTile() { return this.sizeTile; } - public int getSizeMap() { return this.sizeMap; } - public int getCoordStartX(){ for(Case c : this.map){ if(c.isStart == true){ @@ -41,7 +36,6 @@ public class Map { } return 666; //code erreur } - public int getCoordStartY(){ for(Case c : this.map){ if(c.isStart == true){ @@ -50,7 +44,29 @@ public class Map { } return 666; //code erreur } + public Case getNextCase(Case c){ + int i; + int j; + for(i = 0; i < this.map.size(); i++){ + if(c == this.map.get(i)){ + j=i+1; + System.out.println("i : "+i+" j : "+j); + return this.map.get(j); + } + } + return c; + } + public Case getStartCase(){ + for(Case c : this.map){ + if(c.isStart == true){ + return c; + } + } + return null; + } } + + diff --git a/projetjavafx.iml b/projetjavafx.iml new file mode 100644 index 0000000..3f59aa3 --- /dev/null +++ b/projetjavafx.iml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file