From bdac9f40397cb4ae269b539a88aec8e5a98cce0f Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Mon, 5 Dec 2016 23:27:00 +0100 Subject: [PATCH] logic --- bin/de/deadlocker8/roadgame/logic/Board.class | Bin 0 -> 4254 bytes .../roadgame/logic/EdgeLocation.class | Bin 0 -> 1190 bytes .../deadlocker8/roadgame/logic/EdgeType.class | Bin 0 -> 1067 bytes bin/de/deadlocker8/roadgame/logic/Game.class | Bin 0 -> 2053 bytes .../roadgame/logic/PossibleTiles.class | Bin 0 -> 1700 bytes bin/de/deadlocker8/roadgame/logic/Tile.class | Bin 0 -> 2399 bytes src/de/deadlocker8/roadgame/logic/Board.java | 155 ++++++++++++++++++ .../roadgame/logic/EdgeLocation.java | 6 + .../deadlocker8/roadgame/logic/EdgeType.java | 6 + src/de/deadlocker8/roadgame/logic/Game.java | 50 ++++++ .../roadgame/logic/PossibleTiles.java | 41 +++++ src/de/deadlocker8/roadgame/logic/Tile.java | 84 ++++++++++ 12 files changed, 342 insertions(+) create mode 100644 bin/de/deadlocker8/roadgame/logic/Board.class create mode 100644 bin/de/deadlocker8/roadgame/logic/EdgeLocation.class create mode 100644 bin/de/deadlocker8/roadgame/logic/EdgeType.class create mode 100644 bin/de/deadlocker8/roadgame/logic/Game.class create mode 100644 bin/de/deadlocker8/roadgame/logic/PossibleTiles.class create mode 100644 bin/de/deadlocker8/roadgame/logic/Tile.class create mode 100644 src/de/deadlocker8/roadgame/logic/Board.java create mode 100644 src/de/deadlocker8/roadgame/logic/EdgeLocation.java create mode 100644 src/de/deadlocker8/roadgame/logic/EdgeType.java create mode 100644 src/de/deadlocker8/roadgame/logic/Game.java create mode 100644 src/de/deadlocker8/roadgame/logic/PossibleTiles.java create mode 100644 src/de/deadlocker8/roadgame/logic/Tile.java diff --git a/bin/de/deadlocker8/roadgame/logic/Board.class b/bin/de/deadlocker8/roadgame/logic/Board.class new file mode 100644 index 0000000000000000000000000000000000000000..67c2f435d1d683a1649aed224b3d0b63b7b447c8 GIT binary patch literal 4254 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 NYBVFmB5;MU7ywFj*kb?y literal 0 HcmV?d00001 diff --git a/bin/de/deadlocker8/roadgame/logic/EdgeLocation.class b/bin/de/deadlocker8/roadgame/logic/EdgeLocation.class new file mode 100644 index 0000000000000000000000000000000000000000..2e30acec68827afdaa3753d490563845c18a33b3 GIT binary patch literal 1190 zcmX^0Z`VEs1_l!bGj;|hMh2~vRQ;6H#FU);<m}WU3;m+}#FX^J+*JLX{PfIZeb<!q zRG<9h#FEVXJaz^aMh3pD#Ii*FoW#6zeb>CwTt)^~KmVW*4@L$ZAL322W@KP-bqo$+ zWMB>U4+ZIF33ml?xn2E2eO1C7eL`J>85wk=Ni&nfCOIcFFSEpsk%3u5GmMde#W_DE zm4ktmi-D0rkcUBtL70(&%?7GOOv4A^m*A43%)E4KPt7n+21W)^9tKthHVy`M5J!TC zfgQx*0CA*w7&t&2P7p_qhk=uU4a8F5Vc=rmW@O;^$;?ajE6q(xEec6Y%1LEp5CVl> zPFP}5CWsFf<YHiE5M*RvDaptzW@KP1OUx-vEoNlU*U%)%zg!F&3|j0Anv4trNdBlS zE=kShVbEsKVPxP;EGkN@OwKQ;WMt4n_N{+XR%&vIwI@;lz=S+O;l>VjlYbf`g9EZQ zXdr2l5-T9j8t^daG8i&4m?9hIoRe5wY>ngsxakPrfKr$>BLi1(erZv1s#_)~Kn0PL zq#j5uBLin}W_n&?Noi3kBZD21ks$pxq`213+QE>4k%5_kfq~UQ5|juS7#t))@eigs z7}&rxCx{l10>wE40|N^K2LlfSF9Rb39|HqJ1p^BM2!!lrV2l*vXWq^ru$e&w%n@S& zbHu?MNmejN3e1sV19N2A_cAa>GH+rK365mh#2_9V$-0R_DmapD6N7B<W(N6<3=9lR z42ld43|tIMAU86YFfcPHfki<wLJY!CR~RxdgMGoSr7g3aK^dWuje(JY0jh}y%w}g$ z0eOdklR=e14XWLYffcM>Y!icgq&KtHzDOI8%Y2!ocQB~yYyevbat6dSMz|9=8FU%+ jpk`<>FoDhI5@OWa!JvPDff2VpCI%z0nZ^tzVA>P_YC#EO literal 0 HcmV?d00001 diff --git a/bin/de/deadlocker8/roadgame/logic/EdgeType.class b/bin/de/deadlocker8/roadgame/logic/EdgeType.class new file mode 100644 index 0000000000000000000000000000000000000000..182bf379e3f568a0046606bc46906f13cdebc40b GIT binary patch literal 1067 zcmX^0Z`VEs1_l!bJ$42rMh3N%RQ;6H#FU);<m}WU3;m+}#FX^J+*JLX{PfIZeb<!q z)R4-8RCWdyMh3pD#Ii*FoW#6zeb>CwTt)^~_aMjMU`7TFAL2~0W@KOq@^^G$WZ-u7 z3-whAbMy&y4Q6D}j3(Xy4x8kh%)HDJJ4Oa(4b3n{1{UZ1lvEA|RxSoc27Vp}0R}-v z1~wb05-|-QgrkE?iZb)ktvxlvI2jljgn1ZP8Q3@&*g+gI9tL&>HV{jKhk=8ElaYbn zCo?bAuQWF)wJ0PpDJPYYLC7aRIWZ?Ju_zP72McmBFf;HoGO(0nWEL|ru$3j|l%^Il zGH7cM?;|b-1qLN{21P~&0VJ1J7MG;v@-Qefs4y~cCKeSXRwm~cR5CJXA^XQaDJwO( z#M%?di!dQiP{^=@-Q%Ce$Y6u44H^uZ#D+P@lNvk>stlTp45r8iIp-u67h5CQ4mTO$ z6Hr32W@O+B&Mz%WPIb!!1tc#lRq27$F*0xlXQt;RmXsEyGBQ{p83)p9L#!+9tQ`y) z7#Wxu7#NrxBtcQjz~CSWid6;%0Vz<NGB7Z(FmNz%F>o_5GVm}kFa$BMFo1yGZU)9k zAztR~41AjzguomT7BEMYbuR;BB=aT)q2NfCO$?&Jn;FD6GB7YOF-S5nFmN$2F)%Q& zGDtBnGf06&K{5gif>84f8JNNDVb{`@+0G!1(8$KX2y!M^6Azfp&LG3U#=yY9$so%h z2i0!IzzWtbwuwPJ(wkXpU!)DlHNMQ!I~e43Hh?VzIRj!EBiJ;MgE$#f8PuR=XfZH> d&F2zg)Y`$Iet>}yw>~BYEwGu|3_4(17XS~=?_B@@ literal 0 HcmV?d00001 diff --git a/bin/de/deadlocker8/roadgame/logic/Game.class b/bin/de/deadlocker8/roadgame/logic/Game.class new file mode 100644 index 0000000000000000000000000000000000000000..44f929ab90a24829c036ba5aa5cab17c2606bf18 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/bin/de/deadlocker8/roadgame/logic/PossibleTiles.class b/bin/de/deadlocker8/roadgame/logic/PossibleTiles.class new file mode 100644 index 0000000000000000000000000000000000000000..62a871ec775db2b0725cba3a1219ed35a6d928ae GIT binary patch literal 1700 zcmX^0Z`VEs1_l!bZ*~SIMh5MaRQ;6H#FU);<m}WU3;m+}#FX^J+*JLX{PfIZ{eb-9 z;>@I+)R4@a)M9o97Dfhvti-ZJ{hY+SbbbG%tkmQZMh4yjWL1m|qCQ|Xr6rj;`i@0K ziIqN?#U<8^44lE4>3NAIrA4WX4A$7x*!bXg4agPNcGipxY&MyBnI(3N49psuVT=qc z&iN^+Tnx+%ygUq?3|#CC{EQ63SlqzHz{kML$-u}U#KXYKz{buX!pNXR*h)?YF$M{C z2609PHT;TQQ_@pIDhpD17$g~_7#UcC{2g5w88is^3Z}~%WRDCFgDgldt9y`Ra4;8x zFoQhEPYR3-i-|UeSo^50PBRP?z)Cy}$_y%u49tlsDU1xF8jy%aN-)-%QH%`yKACx` zex<odsYM})Nja&E3_?En$%#2(iA9+pK2(sUBqOt!kwKS$Q&EzsH6w#SdTI%Z7$bwY zh9<-%7|GHWyA08ZkvBcHBq%X2B|jIGJ{cL*G&Bh~7o^Ubok1U#o4`(j7{SG$$G{5; zMk5{uV+IpO2A1N?s#I`7_XNqA@i3S(STHiM=cQJZc;=NbGO%cPYI=fnSn)7eGuSXP zFsG-MfCAnV>S5%d2PG&w9tL{`E=C6KqWqG?lGLEg^o$Zl2DT!w7eMiV$T<)<Su--Q zX6B`&RxmO!dNMMwlw^Y9ONAIug3JZm!pOjw$;iMPT#}fa?VDHtjb5(c{L-T2R5!4J zLIKFdh#trl42lel49pA+42%p+pd8D<$iU9Pz`(@7!NAPG2+HdWj11fi3=H!b*cliZ z7#I?@wlnZ(?PlPM+|D4dl|fKz3xnWp2I0s}45DBpy@^43JA>Rd2E}j`DQSo-HYun^ zsMJQV^{NaE3{nhi3=9lh3@i*h4Ezjy3|b5V46Y193<(Uv3~CGv3_K7AF{m?WfIXne zpvAxhb-p&((fSOGU^T2Dr)+>5%mx+|M>2#JZio(pF4V^t8JNHhu-(m|7rC9mz(*To z$~FeWZ49QiAg0VV2Fn8s!hYIp+ZasESeVUNmosqbZey@*VPzC$6=hlY|En&@Qf3B_ zZ<H7~7#J927&sVY8AKT57!(*38Ppk+7<3s_7z`Pd7_1r8!49&6SPFFz2ZJet1A`+2 zBZCNoCW8}$GXoQY0)s4r3xg{IGlM#V7=s&wGXo2Q7K0#zJA*R=D}x6E1A`a?(|-nC ZQ2EQq&Y;K0&LGUl$iM*dwkJ3cyZ~bapo#zh literal 0 HcmV?d00001 diff --git a/bin/de/deadlocker8/roadgame/logic/Tile.class b/bin/de/deadlocker8/roadgame/logic/Tile.class new file mode 100644 index 0000000000000000000000000000000000000000..92941ac05dd70be679e86675dcf9ce735231ae5b GIT binary patch literal 2399 zcmX^0Z`VEs1_l#`V0H#3Mh2ynRQ;6H#FU);<m}WU3;m+}#FX^J+*JLX{PfIZ{gBL@ zRCWdyMh1bb#Ii*FoW#6zegCAa)Z`LI21Y+d1`Qwl`dw4fQ$s2XQmq*o7+o0|7=sxZ z7{eJEI12KMGfOh_^B5T<eLyCsRp_Uu=I5rC6jka6<Y(rU7`a$8GO*cX=4F=HF)}PA z+8$!vLv3}Qo|<8d3@pz1DXClx%nSlN3_J{ij10^gnqiy_j10m&46F=nAeJZ(13QEz z&cna~VM+2Za5Av5Ge|Qsh~o$iE(R$ES&*S}j0~(AE-nyb6?ho97`Pc3_<b_-QvFJE zlTwR95|eUL85x9p@{<#D!V-%zL42qnOG!p%F(ZQt0ndXX9TZ^|j0}vPj0}vGj0}qh zeFT7mKRva?kC8!3Lz93Hk&-1#dTNO)BLj#EhEU;*4BY9dB?0gxDy^Z3Cy{a&Bde9s zz^N4ELhhpclEjkKpv?4)5=I7=lGNM+Mg}g3pigRA2_pkXNq%riQD$B`BZCOkUP!is zh+4BVSU^(=vanNWW==|K5eI`6BLfF0{uHA9Y`GZB8Eiml#+H#m6yh#qJ=U6GAQkpJ z3=RyAj0|jv1qG>jDU1xd$VwrZ-5L@A$hx66T5~WsGcvH~D7b>Ha|IdZhGquT<@n6- z0GknP%fa9UW`)~wF!(SsaO)_*N(x&J20umy##oS(19%ur8O#_NxPtRbi;`2_GC?Vx z6Xb0@Q1)R^WME`qW?*1oWncnjI|c>@CQzmW(;N(JV44$3b1`r;Ffed4Ff#Bk@G>wm z@G&qjtYlzkU}s=p(AL_{z^|pfl|e{LXDfq<mhM&tF)c}!tqc-cyBVY+MOoWL+1j@= z$ZTbh-v~BTk%56h4y=`zfrWvefs;Xifsa9uL6|{^L6Sk3L5o3zL5YEZ!2_&Dn?adD zg#iS#!Omm^SqXM16PN{ZD##n!pwfYX1uUk@pvJ%oW~no%F|dK1tpRm*C)m3T4Dz_0 z&4|URVhk({5)7OSk_>zdQVhZj(hQOeG7NGIvS6p0fUT2<J5?U;RC%~l<v|4*IK<_l zPGw}!WYB^-OP_&}0pvAStt|{f8{pvtaytWqBG?ihhyti3j11aXHH)BYR>P`U2dic= zbj{jWHS1#4EP<}s0IOy_29RGtDF{Tv{49^I*%Yg00|rBAfY~uHF@RD48z|`^r7SM6 zs1*Y%gEiO$F)*JE8fpv-Y@o^j9N0z-f>5)vp=K$A0^dhVYYT$}C^>6wVGsi)W34R= zBA`UAy_G=(k%XnddBdK8mBE35m%))il);HXmcf}piNOWQVr8hstPFAt#^9vL$Y6rU zViAPJB2b5jfqW=|Zm|agD}yHkFM}6@D1$eHEQ1e&5`!-Ri%l8Kpgt~UU<Riq&)p2> zkwTW+8LUBG-^O4k<g|^!1>|86+a1Cd1F=0JYzYwC8^V?cv3<8OxNKwaM~}WBuu~vO P))N{Aj0}O`gdGF`*xSrc literal 0 HcmV?d00001 diff --git a/src/de/deadlocker8/roadgame/logic/Board.java b/src/de/deadlocker8/roadgame/logic/Board.java new file mode 100644 index 0000000..784dd28 --- /dev/null +++ b/src/de/deadlocker8/roadgame/logic/Board.java @@ -0,0 +1,155 @@ +package de.deadlocker8.roadgame.logic; + +import java.util.ArrayList; + +import javafx.geometry.Point2D; + +public class Board +{ + private ArrayList<Tile> tiles; + private PossibleTiles possibleTiles; + + public Board() + { + this.tiles = new ArrayList<>(); + this.possibleTiles = new PossibleTiles(); + initBoard(); + } + + private void initBoard() + { + Tile startTile = possibleTiles.getRandomTile(); + startTile.setPosition(new Point2D(0, 0)); + + tiles.add(startTile); + } + + public ArrayList<Tile> getTiles() + { + return tiles; + } + + public boolean containsTileAtPosition(int x, int y) + { + for(Tile currentTile : tiles) + { + if((int)currentTile.getPosition().getX() == x && (int)currentTile.getPosition().getY() == y) + { + return true; + } + } + + return false; + } + + public ArrayList<Point2D> getFreeEdges(Tile tile, Tile playerTile) + { + ArrayList<Point2D> freeEdges = new ArrayList<>(); + + int x = (int)tile.getPosition().getX(); + int y = (int)tile.getPosition().getY(); + + //North + if(!containsTileAtPosition(x, y-1)) + { + if(tile.getN().equals(playerTile.getS())) + { + freeEdges.add(new Point2D(x, y-1)); + } + } + + //East + if(!containsTileAtPosition(x+1, y)) + { + if(tile.getE().equals(playerTile.getW())) + { + + }freeEdges.add(new Point2D(x+1, y)); + } + + //South + if(!containsTileAtPosition(x, y+1)) + { + if(tile.getS().equals(playerTile.getN())) + { + freeEdges.add(new Point2D(x, y+1)); + } + } + + //West + if(!containsTileAtPosition(x-1, y)) + { + if(tile.getW().equals(playerTile.getE())) + { + freeEdges.add(new Point2D(x-1, y)); + } + } + + return freeEdges; + } + + public ArrayList<Point2D> getPossibleLocations(Tile tile) + { + ArrayList<Point2D> possibleLocations = new ArrayList<>(); + + for(Tile currentTile : tiles) + { + possibleLocations.addAll(getFreeEdges(currentTile, tile)); + } + + return possibleLocations; + } + + public int getWidth() + { + int minX = 0; + int maxX = 0; + + for(Tile currentTile : tiles) + { + if((int)currentTile.getPosition().getX() < minX) + { + minX = (int)currentTile.getPosition().getX(); + } + + if((int)currentTile.getPosition().getX() > maxX) + { + maxX = (int)currentTile.getPosition().getX(); + } + } + + return Math.abs(minX) + maxX + 1; + } + + public int getHeight() + { + int minY = 0; + int maxY = 0; + + for(Tile currentTile : tiles) + { + if((int)currentTile.getPosition().getY() < minY) + { + minY = (int)currentTile.getPosition().getY(); + } + + if((int)currentTile.getPosition().getX() > maxY) + { + maxY = (int)currentTile.getPosition().getY(); + } + } + + return Math.abs(minY) + maxY + 1; + } + + public void addTile(Tile tile) + { + tiles.add(tile); + } + + @Override + public String toString() + { + return "Board [tiles=" + tiles + "]"; + } +} \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/logic/EdgeLocation.java b/src/de/deadlocker8/roadgame/logic/EdgeLocation.java new file mode 100644 index 0000000..2d59d25 --- /dev/null +++ b/src/de/deadlocker8/roadgame/logic/EdgeLocation.java @@ -0,0 +1,6 @@ +package de.deadlocker8.roadgame.logic; + +public enum EdgeLocation +{ + NORTH, EAST, SOUTH, WEST +} \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/logic/EdgeType.java b/src/de/deadlocker8/roadgame/logic/EdgeType.java new file mode 100644 index 0000000..54f9903 --- /dev/null +++ b/src/de/deadlocker8/roadgame/logic/EdgeType.java @@ -0,0 +1,6 @@ +package de.deadlocker8.roadgame.logic; + +public enum EdgeType +{ + GRASS, ROAD +} \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/logic/Game.java b/src/de/deadlocker8/roadgame/logic/Game.java new file mode 100644 index 0000000..73e7707 --- /dev/null +++ b/src/de/deadlocker8/roadgame/logic/Game.java @@ -0,0 +1,50 @@ +package de.deadlocker8.roadgame.logic; + +import java.util.ArrayList; + +import javafx.geometry.Point2D; + +public class Game +{ + private Board board; + private PossibleTiles possibleTiles; + + public Game() + { + board = new Board(); + possibleTiles = new PossibleTiles(); + System.out.println(board); + } + + public Tile getNextTile() + { + return possibleTiles.getRandomTile(); + } + + public ArrayList<Point2D> getPossibleLocations(Tile tile) + { + return board.getPossibleLocations(tile); + } + + public void placeTile(Tile tile, Point2D position) + { + 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/PossibleTiles.java b/src/de/deadlocker8/roadgame/logic/PossibleTiles.java new file mode 100644 index 0000000..4a5e6d8 --- /dev/null +++ b/src/de/deadlocker8/roadgame/logic/PossibleTiles.java @@ -0,0 +1,41 @@ +package de.deadlocker8.roadgame.logic; + +import java.util.ArrayList; +import java.util.Random; + +public class PossibleTiles +{ + private ArrayList<Tile> possibleTiles; + + public PossibleTiles() + { + possibleTiles = new ArrayList<>(); + //curve + possibleTiles.add(new Tile(EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS)); + //straight + possibleTiles.add(new Tile(EdgeType.ROAD, EdgeType.GRASS, EdgeType.ROAD, EdgeType.GRASS)); + //T-tile + possibleTiles.add(new Tile(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS)); + } + + public ArrayList<Tile> getPossibleTiles() + { + return possibleTiles; + } + + public Tile getRandomTile() + { + Random random = new Random(); + int index = random.nextInt(possibleTiles.size()); + Tile tile = possibleTiles.get(index); + + //random rotation + int rotate = random.nextInt(3); + for(int i = 0; i < rotate; i++) + { + tile.rotateRight(); + } + + return tile; + } +} \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/logic/Tile.java b/src/de/deadlocker8/roadgame/logic/Tile.java new file mode 100644 index 0000000..297fed9 --- /dev/null +++ b/src/de/deadlocker8/roadgame/logic/Tile.java @@ -0,0 +1,84 @@ +package de.deadlocker8.roadgame.logic; + +import javafx.geometry.Point2D; + +public class Tile +{ + private EdgeType N; + private EdgeType E; + private EdgeType S; + private EdgeType W; + private Point2D position; + + public Tile(EdgeType N, EdgeType E, EdgeType S, EdgeType W, int x, int y) + { + this.N = N; + this.E = E; + this.S = S; + this.W = W; + this.position = new Point2D(x, y); + } + + public Tile(EdgeType N, EdgeType E, EdgeType S, EdgeType W) + { + this.N = N; + this.E = E; + this.S = S; + this.W = W; + this.position = null; + } + + public EdgeType getN() + { + return N; + } + + public EdgeType getE() + { + return E; + } + + public EdgeType getS() + { + return S; + } + + public EdgeType getW() + { + return W; + } + + public Point2D getPosition() + { + return position; + } + + public void setPosition(Point2D position) + { + this.position = position; + } + + public void rotateRight() + { + EdgeType temp = N; + N = W; + W = S; + S = E; + E = temp; + } + + public void rotateLeft() + { + EdgeType temp = N; + N = E; + E = S; + S = W; + W = temp; + } + + @Override + public String toString() + { + return "Tile [N=" + N + ", E=" + E + ", S=" + S + ", W=" + W + ", position=" + position + "]"; + } +} \ No newline at end of file -- GitLab