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