From 79f03a3ffee1f0310f5212c53c8906994250a815 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Tue, 6 Dec 2016 00:10:58 +0100 Subject: [PATCH] started working on ui --- bin/de/deadlocker8/roadgame/logic/Board.class | Bin 4254 -> 4495 bytes bin/de/deadlocker8/roadgame/logic/Game.class | Bin 2053 -> 1739 bytes bin/de/deadlocker8/roadgame/logic/Tile.class | Bin 2399 -> 2922 bytes .../roadgame/ui/Controller$1.class | Bin 1071 -> 1071 bytes .../deadlocker8/roadgame/ui/Controller.class | Bin 2556 -> 6340 bytes bin/de/deadlocker8/roadgame/ui/GUI.fxml | 45 ++++++- src/de/deadlocker8/roadgame/logic/Board.java | 13 ++ src/de/deadlocker8/roadgame/logic/Game.java | 35 +++-- src/de/deadlocker8/roadgame/logic/Tile.java | 28 ++++ .../deadlocker8/roadgame/ui/Controller.java | 126 +++++++++++++++++- src/de/deadlocker8/roadgame/ui/GUI.fxml | 29 +++- 11 files changed, 249 insertions(+), 27 deletions(-) diff --git a/bin/de/deadlocker8/roadgame/logic/Board.class b/bin/de/deadlocker8/roadgame/logic/Board.class index 67c2f435d1d683a1649aed224b3d0b63b7b447c8..bc6431984802150d760a1933700b1e41077c6048 100644 GIT binary patch delta 1096 zcmbQI*sm;b>ff$?3=9k=49nOVm>3z9Cp$9AZPfE&=4Ve&EeXlYNo8cv(D3xsocw@A zW%EpCA;!s7%<_|0vV0PV=V6Fsh~i?<W=P~=NMcByyqeWQB9(_BjUkzlfh9e)B$$gK zgCUEZA(N3o4P>mLYf5@*NM%7P4?{MCF(U(8YGG+&PBF-YTporzm^N3CKmiX!Aw%+J zFE&+1fodLxXoeUr1_6dz9)>!G`pNa|K5Q)vZR`xKlP|IhGq*EzOn%PZ%QBgfL42|S zr?@N!!&F8FUZ?!Tq7;SblFXdcVp}eTNet6@7`Pc`OkTqw#W9It77xR0hB=eZaai-u zV`N~A1u0kn5?eS~g42j&62oF1h6xN4CkJubGIDR8z!}HLr@KLtWhX-bBg3r!R~R=; z{=-!;c>`Cppgw~*gCT=HgE5%2W-y;D!|lTx%@D)D#K6wLz`(>1JGqqGm_Ke7gR1s6 zh6J5$3@O_f(kE}{Rse}9Yj0!7(b>k34-$LEEoTQ+m!h+cAz>Rs`b-9K-Q5hTk)kZ^ zqO2?l?b{jDw=o!mYl*V3q=>R^V}L5p*V)F912V#iN2A_`frG)0L5RVgL59JJL6gCS z!JNU3!JEOGA%ek|A%!7;p@JcVp_L(wVKPGm!*YgLhAj;742KvJ8Lly;GRQG7FxWA$ zF)%RPV321}U;u#|3`Gp442)p0Vg^$NCI$|M3k)R;Yz)i{LJY?kLKs3BSQum&_ArDo zgqkz3GL$kfFz_%iLY0*<Ff&9jFfi~ku>522W@iv!WYp2qV_;+`XQ+S&Q{`j@UgP?z zZ45Qx@PK}-vw?wufrUYqfq_Acft7)QA&Y^7A%{VpA&)_eA&0?)p%Cm|Ed~|_1_m>@ zd(EKk<zUcbXkcJtU}BJG;ARMCFlAsyavDgkjDZR4G;s!|{|q7wlP~d#FgG$ZP5#Jd zI9ZC%(5zV|fhA!L0|Nsy*b!<BoD2*MAWh{AEDV(l(hSuM>I}6E1`G`hHVjP+t_+n7 z{tRuC8~Mb!I~hV57#Ua?LKwOxujcn=?gks1gx$z)1}26c1{Q`s25E)~4C)M%7z`Mu zGT1OoXK-ccWAJB~4K}g|Ze%am$UcVt$v^ouYZfqYGAsm#gct)80|NsWJS4cFA;Abr z&J2tUybKHs&J4`pxRl(@Fey@K%65inT3Z-|w=v8Vn!Al*{x*h1pg?B=`<D%@a2eQW SP<%2lNJ5QfWLN@D-Ae(pnA#iw delta 991 zcmeBIo~I~q>ff$?3=9k=3`^J<m>3z9Cp$9AZPfE&p1hw$e)C#pA;!rMSUw2E@-SF3 zSaC6EGsN>SBrqgSe!yxWk<7!8!jQ<wz>=O?63oSr#*o3zkj}`U1~Ou@9~+l?CWA2} z16yigX<|+>NN+X|Lk>)XD@Y)ZhasOKadSPJDx*Lp4?`qF6c>X4Lp2XW4MXkZE$lur zO$;sU49$!Td|8QQiTXK-dFlGTi6t3446O`plVv!187EF&#UUd-nUR6lDL=6&MIpK* zGbgp!mWyEm!&DvyZiZ=-A96@>OkkM7!!VO!)?{W*YyLTm42-c{3=<gUfyCxd_T@C< zn82`*hoO(5e{wsgEhE?FqnvS!lkaoOPIll<<YZ!CXJBApVu+rc#$(JMGmAl0dmBTX z&NhamZ49ZCSMVr+#FVwSF=Xj%W5@-GUFVSliGkE5>1<<&1BtQlg4Kb<a&@*bWP!wt zc{S?w88{dW8H5;&7-Ses88jKp8O#|h8N3<n7$O)P7*ZIV87dgu8Cn@U874D$Gc0Ea zVA#SC#Bhiqgy9-P1cMv{1A`p{8v_Hw4F-7z1qKkf!BD_p%D@N~D`YTbU}E54xWG`v zz{bGLAjEKtA%r26frUYaVGlzXL#Pk~D?>2@0|O5OBUD+*<Ttz$yrm3f3^0$EPZs1e zW~tc5P&L_uPbM&yfrBBQL7pLzL5m@t!Gs|N><TRg76t|eGq@|vpswIx&||1$U}Ion zkZ0g#2xl;5U`DbKBv&$dE1wc`JwwCfTYO0ojWP)=32PV_7?>Gk85kJU7&sXi7%~}{ z7_t~x7;+e-8S)s^844H-7>XHe7)lvj8FCo>87h&S5CL@p6GIq7J3}Y~BLfRV2t&u@ zIRf6yonT80CkqQ0Vz;P{fr+7>frX)wL7JhNL7kzM!GNKI!G@uW!Ihzr!JnZIhecg* zi@L!U^)U2KekGt;Gns*tVG3A}7y}an0|OV-aUd2XmKZ_Fj)9SZmw|!7nSmJ`Z<4zi zCPWHN+RiXVYYT($Hiqd!v$rwK-NvwB12`dq!i5d2a3<JjP~0&vNJ5QfWLN}NwHN?_ CQ@o4- diff --git a/bin/de/deadlocker8/roadgame/logic/Game.class b/bin/de/deadlocker8/roadgame/logic/Game.class index 44f929ab90a24829c036ba5aa5cab17c2606bf18..1b7aa0c47a98c7a231997e703bd1be0a04c04cee 100644 GIT binary patch delta 875 zcmZn_IL*s->ff$?3=9k=3=R{yHgIw$mlhSJ=9Pp@c4XF3VYA81%Pg^DWMJ0N3}a+q zan4Uk<zirF;OAlBX5e9G5M*Rfo+uzE<&>XTl)}Xzz`)PRz{nuN!@$bG#?Bzd$e=w@ zKyKnHUVbhHQHY!*4+A>`$K=b5;d~tFsU={Ij11};nv)G#<XOSo$?8m2s-g_aJPaxf zii`}r>8T|_iFqmcxgnW3sf-MK#i=FE5JyhdWYH4`*{H$8z{$YH$iSD5kSk?6z%Rg{ z&%>a_pv}m@Qj(dIIysv;kj;d_jGe)BBCq1)02UTj9tLv;i^*@8^@Ri&tauo#8PpgV z*b`GyKz2<IXVIM8%&Jh&%)kWl5d#AQ6Ug;onv;Qxfq{XYfe{oE42%rC3=9l`49pCS z3=9m?TH6`;w01KHL~dsg+R7lTwVOdSayx_gRtAZUV9int3=BdHEDQ_`ybLT1{0#gI z0t`|Nf(+6O3=BLFBN${DWEmJ37#ZXk>gA#4>oYKdC0Vt$FbHpeo5Thd6h+d_3fHZ` zpa|7$1l7!;wS_@q8-o(MekmmV9B}=r3~CJZ5Z~D`FflMOFfg!bX>VmvM|gw_EGo~y z%Af!?LJZ7jgBroWzy^vNu;rR?#~}Me9o;1=U}GTR0P;yaBp|dHv>BKfbim%$1&6mS z)J2@2@X+4IpoeafCfFp1gE-+1;$$#j-~v0ykO34bpr{LBU}9iqU|`_W*4f5j3^mUZ v;z?&vbn$_u^%z(g^ci>=48R5}fW`RW2J=A;W?<lBuwekXj*-C*>|T2SPO@W2 literal 2053 zcmX^0Z`VEs1_l#`WOfE7Mh2ynRQ;6H#FU);<m}WU3;m+}#FX^J+*JLX{PfIZefPxN zRCWdyMh1bb#Ii*FoW#6zegCAa)Z`LI2G*qf#G({N22~&YW;lVASu-;57UUNfXC~#O zhGgcX7Be#F63`cbtlXNBfz2i}FSEpsk%3u5GmMde#W_DEm5YIyftQDYlYxt!fuE5< znFyC~G4L_)axyS72=OqmGO)2Th%ho}<JX7c5-tW|h<<S%26hGxP6kN^X?6xFlpqSO zEG|jS<zbLvkY!|G&Mz%tWDxZMhhS#Den3%XUP*9CQEFnYH5Y?CgCaYF0waSk7HJ*^ zB?e_i2KEAwj+{J322l-&DM;~P4GIf>pUk{eztY^K)S{5Yq?}Yn1|gsP<iwn?#G*_P zA1cUFl95@=$e=<X;6agY&B(x=o?7CUT2TUuE=C454NU^tK<cbPp`*>ipu?ca$iSPP zS`w6)my(|gl44{KNlz_-1trLNC7Jno#f%Kr8pIf^3GsPpNoJ0|V^L9JrB7yYi8Uhw zXK-eEUSdgUQ7R)t82KjIfQ?V9&`(dz&rK~Us?-n2&&(?^a<R6v2BjDy9tK?oJw^tW zl1xzW5(+|)he3`j$Vp5Fr*}pM2cjH@(;1p!TnrWrR_qLx1T!tjavlb21{+2O?qYC| zXM%#7kwFHMe6aZvWIP{(9S?&&g99T2dtyoo$P`8fb)sAiN`o8)`NdFsByswJk%1*Q zF*A>mK};hWtO!!11eX+L=A~PM9Kp!I%f-OR;LgLK!Jr9Z8G(Y|i-*CR!H1E7BR#bw zJTs*v16&Gtg0hbvD3|y%GO%cPg7ot-1oAKhfz)!Qr<Qo6W~OJ9a5021gt0S(!g3jE zBI02PXNX{AU`|g3Wm64LXi7uQW9$r3j11zS9Ev6EK#q*zVK8MdV`N}SEJ`nCWDv&U zIYtJ?bVdfo5=I8D;QZ2}<Wx6sO5z0NHa(Eh42lel49pA+3``76ppps9VrSrBU|?Wn zU<8$M42%ri3=9nM49pCS3=9maTH6_Tw01M_MQ&#h*vcTNwVOdWayx_QRtB+63=&#f z7zDR5$ZZ50qr$+zAjZJTz`(%6z{0@Cz|X+XAjKfSpu!-?pb8cR8_1x>pw7U+zz7O^ zsAWbBj9|++w6-vaZDY{d05^{fEG~+qp98L6mqCw#i9sK%)&T5iTd=nn7&t-h(%!~k zh;EP+*dQ?mCI$uuPN+d3mNA0~*a@Z#W>6=EFff6`iBDT+8-qF2JX?fE`M|RB46F<a z47?1AU~?6~VtjCO`4}MPGBEHlI5IdfFfnj4I5W6FZMe$70#={Dn}IQMJA<o__BIAL z-%Sh>I@=iJHZe$mEcSph!NKggjR7RB4dw)FWAN410jpu&#t?jfA#xi-G)Na%7OWr4 z!q9~9f*v@`R2e`a%FCe6Ai|)*AkU!5pu?cWV9B7v;KiWJ5W=9(kjP-bkjG$%<i&i3 lScW(T1_lm>bcT2abp}QTUWO!w1O^iZCI&`^L~x8G0RXN<=Pv*N diff --git a/bin/de/deadlocker8/roadgame/logic/Tile.class b/bin/de/deadlocker8/roadgame/logic/Tile.class index 92941ac05dd70be679e86675dcf9ce735231ae5b..5347d9b7f579065c7f814af569c2ae146b3adc09 100644 GIT binary patch delta 532 zcmcaF^h!+N)W2Q(7#J8#7;@Mdm>3z9CMPn<ZPc5`BF|frADoe2R1#cLl$n>#!4S;I zz`)56$`H=Z5XQ)$HaU?=t)7P=f`N^ZfhEY_(S?g4lp%_TA(|nEk%29>urx8Jn2|wL z!zU}TEKxrvF)v-;KPf9Uxx`vCii;tRA%UGCo{>QSAq%mGhar(6iIIW5EHS4v)jy4q zK@FP;P(vr%v2a;ib1<-SFtBqlaBwhiGBU6gr52awlrS;~K^1{)hL~;5$iN$1l9-(B zn^+K%n3R(``4o!}BhO}WR%e!aGX_QmJ_ZJcPYlcqObiSRokBrAT3Z-|HZg>3V~Cu| zAikTyJW_iHL+o}2YoX+A3@+Ok{6PvtuqsGFC=kP{AQhoN0;HfG!;Unl3hfOH3=GT+ ziVO@4S`1ta3=H86%nVTs0t_(>Dh%-qh75@et_&#*K@4dOX$+YR#SGaD?F@MgN(>AP xVi2D&C^M*l&1hptXUJe+WXNP-VBlt8`NN>X&Jd@dpuoV$z@Ejxz`(?i4FEM_ed_=K delta 46 zcmaDQc3()~)W2Q(7#J8#7=qaum>3z9CMPn<ZPc5`GWj~I7bEv(B{pXkRt5$ph9Ce? C^b5)W diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$1.class b/bin/de/deadlocker8/roadgame/ui/Controller$1.class index 6489cff44a9491fc482bbe5eddc63c26ad3efa3d..5e27e9312bd188b813fcce42367f59a46350480a 100644 GIT binary patch delta 27 icmZ3_v7Tc?Iy0m8<P2tePJISu1_K6m2E)l4nCk&yJqB6; delta 27 icmZ3_v7Tc?Iy0lh<P2teP8kMf23ZDn2D!-_nCk&u(*_Oz diff --git a/bin/de/deadlocker8/roadgame/ui/Controller.class b/bin/de/deadlocker8/roadgame/ui/Controller.class index fe9c35711b75ca7ca7d52b80ea86f37e5c539782..36f07da706d31af0c70cae8682b27df53499c715 100644 GIT binary patch literal 6340 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 Mz+Z-6j9w0s0PGjEtN;K2 delta 1220 zcmX?N_(z!Q)W2Q(7#J8#7^Y3+a-J;3n5oESlbM%UV#mn9tf3jk$iU*9pOVVOz|6qU z!@$kJ!_FW$`4^)si!dXD)<gk`$;M0~90ClYAUUzg{!B7F5<Cp-3>+K`Qj83;AO-zQ z>~b;;a_kJUj0^%<iDilUr6rj;`ab!|i8-k}4Dt*LleaJ_aw;*Xurnw#GDu7|WR_s% zVNhjIoBW$8m`#I+fs=u2atL!Rj{y$@D+3!lgApTx`a}U$9u-3_215oDkkzJ>`B?N7 z%o!}%87vqXgh1A$Rp=L&B&Mh82ZKl+1}g^Z$+0Y^+>8vYiAnjTCF~4#lP7XW2sq}X z7L{-^I50S|GdMCbs7wyzQ(@&{aAt6sY|m%OVawnKvcP?E1D`GvgXiS+e9{^W-i!=v zhvy`v7AbHscrb`^F!(Vta3mHK=;bBmrgAYTF$C~11Tq9o{={d-$>6~d!ov{C5H{J6 z--?gHgCT;4A(A1Ak%6NmfAU^V*?KMpTZR}OhFAtMMh1@J)RK_QlAKhKU_1{)0!Waz zIJLwhH8CZ%C?vI_go7c8k%2cXwWv5VKhH`51UMK{7#VoVAVOd_a4@7XGVt+oxg?g9 z=0X%Ha4=*bsY*#KN#$V3Vq}>7k6%UEmLZ3SAs1vBUvX-QbADb)YF-J*Hjq2=c^C>9 z3Mab?m~$}{GnBG3lrS>LPyWa&I=MiAi<O6=jG=t;DgjkRhDwHNc7`gX@J~+7OVtks zkvt4F47HO#2xthKGt~1iG%z$WGH|4)mUt%T=M_(GW7XnpW@u$+XklbfoZQ2z$jZae z#?U_bKC6PVIYTE8Ll*-NBLiP@YF<fdk$+xra#3n(9>{4uJPf@IeUk$O=hrhcFoKc? z0|NsiC;>7sFbIND4g&)NNQRq%hk=oSmw|yHgn@;Dk%56hPHQ^@pVn>$fk+{t?F=GY z8N{`OBsVcg?_f~e%AmfHfq{XEL6d=jL5P8cfq{XKfrUYkL6AX+L6(7!L5qO_Y#sxH z9D_E44#>`W23-a{s1<$;EDTH_ty<b!8T7SxGZ;o{ZD%mv#$bjpmXCp%fq_Acft5jm zL6AWKY@`@O7t~0Q)vOF`42%qn3^rivK+b=~zyj9Uvzx&-aub97b_Q1;?cEF>^^rne z+ZlYcwlJs*`EFzI-^LKUjUjv+L$o%MP#j2Qq);MEVKPLaQ0g{@V6d`us6Zx6d$#sA zhP-VIMcWuE4ltPe>TF}E)7ruyzLTMei6LBP8$*ZoHiqu-jSLKB(BM*I;ACK6P+{O^ zP-ReOP-8G*P-jSE&|oNG&}3+0&|+v~&}Qgn&;k2b0pb&=f4LbN8TuI}FfcNdFi0>= iWME@pVqjvJ1dfQw3{ybi$-u;5$N&Kj47LnY9V7u`GV9y` diff --git a/bin/de/deadlocker8/roadgame/ui/GUI.fxml b/bin/de/deadlocker8/roadgame/ui/GUI.fxml index 8dff393..466a000 100644 --- a/bin/de/deadlocker8/roadgame/ui/GUI.fxml +++ b/bin/de/deadlocker8/roadgame/ui/GUI.fxml @@ -1,6 +1,47 @@ <?xml version="1.0" encoding="UTF-8"?> +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.Button?> <?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.ColumnConstraints?> +<?import javafx.scene.layout.GridPane?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.RowConstraints?> +<?import javafx.scene.layout.StackPane?> +<?import javafx.scene.layout.VBox?> - -<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.roadgame.ui.Controller" /> +<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.roadgame.ui.Controller"> + <children> + <HBox layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> + <children> + <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS"> + <children> + <GridPane AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> + <columnConstraints> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + </columnConstraints> + <rowConstraints> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + </rowConstraints> + </GridPane> + </children></AnchorPane> + <VBox alignment="TOP_CENTER" prefHeight="572.0" prefWidth="124.0"> + <HBox.margin> + <Insets left="20.0" /> + </HBox.margin> + <children> + <StackPane fx:id="stackPaneCurrentTile" prefHeight="137.0" prefWidth="124.0" /> + <Button fx:id="buttonRotate" mnemonicParsing="false" onAction="#rotateRight" text="rotate right"> + <VBox.margin> + <Insets top="14.0" /> + </VBox.margin> + </Button> + </children> + </VBox> + </children> + </HBox> + </children> +</AnchorPane> diff --git a/src/de/deadlocker8/roadgame/logic/Board.java b/src/de/deadlocker8/roadgame/logic/Board.java index 784dd28..c384a7e 100644 --- a/src/de/deadlocker8/roadgame/logic/Board.java +++ b/src/de/deadlocker8/roadgame/logic/Board.java @@ -29,6 +29,19 @@ public class Board return tiles; } + public Tile getTile(int x, int y) + { + for(Tile currentTile : tiles) + { + if((int)currentTile.getPosition().getX() == x && (int)currentTile.getPosition().getY() == y) + { + return currentTile; + } + } + + return null; + } + public boolean containsTileAtPosition(int x, int y) { for(Tile currentTile : tiles) diff --git a/src/de/deadlocker8/roadgame/logic/Game.java b/src/de/deadlocker8/roadgame/logic/Game.java index 73e7707..ced0539 100644 --- a/src/de/deadlocker8/roadgame/logic/Game.java +++ b/src/de/deadlocker8/roadgame/logic/Game.java @@ -8,12 +8,17 @@ public class Game { private Board board; private PossibleTiles possibleTiles; + private Tile currentTile; public Game() { board = new Board(); - possibleTiles = new PossibleTiles(); - System.out.println(board); + possibleTiles = new PossibleTiles(); + } + + public Board getBoard() + { + return board; } public Tile getNextTile() @@ -21,6 +26,16 @@ public class Game return possibleTiles.getRandomTile(); } + public void setCurrentTile(Tile currentTile) + { + this.currentTile = currentTile; + } + + public Tile getCurrentTile() + { + return currentTile; + } + public ArrayList<Point2D> getPossibleLocations(Tile tile) { return board.getPossibleLocations(tile); @@ -31,20 +46,4 @@ public class Game tile.setPosition(position); board.addTile(tile); } - - public static void main(String[] args) - { - Game g = new Game(); - Tile t = g.getNextTile(); - System.out.println(t); - System.out.println(g.getPossibleLocations(t)); - System.out.println(g.board.getWidth()); - System.out.println(g.board.getHeight()); - - g.placeTile(t, g.getPossibleLocations(t).get(0)); - System.out.println(g.board); - - System.out.println(g.board.getWidth()); - System.out.println(g.board.getHeight()); - } } \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/logic/Tile.java b/src/de/deadlocker8/roadgame/logic/Tile.java index 297fed9..b78a6b7 100644 --- a/src/de/deadlocker8/roadgame/logic/Tile.java +++ b/src/de/deadlocker8/roadgame/logic/Tile.java @@ -81,4 +81,32 @@ public class Tile { return "Tile [N=" + N + ", E=" + E + ", S=" + S + ", W=" + W + ", position=" + position + "]"; } + + public String toShortString() + { + String result = ""; + + + if(N.equals(EdgeType.ROAD)) + { + result += "N"; + } + + if(E.equals(EdgeType.ROAD)) + { + result += "E"; + } + + if(S.equals(EdgeType.ROAD)) + { + result += "S"; + } + + if(W.equals(EdgeType.ROAD)) + { + result += "W"; + } + + return result; + } } \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/ui/Controller.java b/src/de/deadlocker8/roadgame/ui/Controller.java index 3b04b6f..0efae05 100644 --- a/src/de/deadlocker8/roadgame/ui/Controller.java +++ b/src/de/deadlocker8/roadgame/ui/Controller.java @@ -1,26 +1,45 @@ package de.deadlocker8.roadgame.ui; +import java.util.ArrayList; import java.util.Locale; import java.util.ResourceBundle; +import com.sun.org.apache.bcel.internal.generic.IfInstruction; + +import de.deadlocker8.roadgame.logic.Board; +import de.deadlocker8.roadgame.logic.Game; +import de.deadlocker8.roadgame.logic.Tile; import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.geometry.Point2D; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; +import javafx.scene.control.Button; +import javafx.scene.control.Label; import javafx.scene.image.Image; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; import javafx.stage.Stage; import javafx.stage.WindowEvent; import tools.Worker; public class Controller { - public Stage stage; - public Image icon = new Image("de/deadlocker8/roadgame/resources/icon.png"); - public final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/roadgame/main/", Locale.GERMANY); - + @FXML private AnchorPane anchorPaneGame; + @FXML private StackPane stackPaneCurrentTile; + @FXML private Button buttonRotate; + + private Stage stage; + private Image icon = new Image("de/deadlocker8/roadgame/resources/icon.png"); + private final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/roadgame/main/", Locale.GERMANY); + private GridPane grid; + private Game game; + public void init(Stage stage) { this.stage = stage; - + stage.setOnCloseRequest(new EventHandler<WindowEvent>() { public void handle(WindowEvent event) @@ -29,8 +48,105 @@ public class Controller System.exit(0); }; }); + + anchorPaneGame.setStyle("-fx-border-color: #333333; -fx-border-width: 2px"); + stackPaneCurrentTile.setStyle("-fx-border-color: #333333; -fx-border-width: 2px"); + + grid = new GridPane(); + anchorPaneGame.getChildren().add(grid); + AnchorPane.setTopAnchor(grid, 0.0); + AnchorPane.setRightAnchor(grid, 0.0); + AnchorPane.setBottomAnchor(grid, 0.0); + AnchorPane.setLeftAnchor(grid, 0.0); + + game = new Game(); + + updateGrid(game.getBoard(), null); + + nextTile(); + } + + private void updateGrid(Board board, ArrayList<Point2D> possibleLocations) + { + grid.getChildren().clear(); + + int width = board.getWidth(); + int height = board.getHeight(); + + //fill outer rim with void + for(int x = 0; x < width + 2; x++) + { + for(int y = 0; y < height + 2; y++) + { + if(x == 0 || y == 0 || x == width + 1 || y == height + 1) + { + Label label = new Label("X"); + if(possibleLocations != null) + { + //TODO x , y is alwasy positive, but possible locations can be negative --> transform coordinates + if(isInPossibleLocations(possibleLocations, x, y)) + { + label.setStyle("-fx-background-color: red"); + } + } + + grid.add(label, y, x); + + } + else + { + Tile tile = board.getTile(x-1, y-1); + if(tile != null) + { + grid.add(new Label(board.getTile(x-1, y-1).toShortString()), y, x); + } + else + { + Label label = new Label("X"); + if(possibleLocations != null) + { + if(isInPossibleLocations(possibleLocations, x, y)) + { + label.setStyle("-fx-background-color: red"); + } + } + + grid.add(label, y, x); + } + } + } + } + } + + private boolean isInPossibleLocations(ArrayList<Point2D> possibleLocations, int x, int y) + { + for(Point2D currentPoint : possibleLocations) + { + if((int)currentPoint.getX() == x && (int)currentPoint.getY() == y) + { + return true; + } + } + + return false; + } + + private void nextTile() + { + game.setCurrentTile(game.getNextTile()); + + stackPaneCurrentTile.getChildren().clear(); + stackPaneCurrentTile.getChildren().add(new Label(game.getCurrentTile().toShortString())); + + System.out.println(game.getPossibleLocations(game.getCurrentTile())); + updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile())); } + public void rotateRight() + { + + } + public void about() { Alert alert = new Alert(AlertType.INFORMATION); diff --git a/src/de/deadlocker8/roadgame/ui/GUI.fxml b/src/de/deadlocker8/roadgame/ui/GUI.fxml index 8dff393..c1199ad 100644 --- a/src/de/deadlocker8/roadgame/ui/GUI.fxml +++ b/src/de/deadlocker8/roadgame/ui/GUI.fxml @@ -1,6 +1,31 @@ <?xml version="1.0" encoding="UTF-8"?> +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.Button?> <?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.StackPane?> +<?import javafx.scene.layout.VBox?> - -<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.roadgame.ui.Controller" /> +<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.roadgame.ui.Controller"> + <children> + <HBox layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> + <children> + <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS" /> + <VBox alignment="TOP_CENTER" prefHeight="572.0" prefWidth="124.0"> + <HBox.margin> + <Insets left="20.0" /> + </HBox.margin> + <children> + <StackPane fx:id="stackPaneCurrentTile" prefHeight="137.0" prefWidth="124.0" /> + <Button fx:id="buttonRotate" mnemonicParsing="false" onAction="#rotateRight" text="rotate right"> + <VBox.margin> + <Insets top="14.0" /> + </VBox.margin> + </Button> + </children> + </VBox> + </children> + </HBox> + </children> +</AnchorPane> -- GitLab