From 7e8ac5070174560835f4ff00a32fe5d72ebcfe2f Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Thu, 8 Dec 2016 23:54:42 +0100
Subject: [PATCH] Fixed #2

---
 bin/de/deadlocker8/roadgame/logic/Board.class | Bin 5572 -> 5552 bytes
 .../roadgame/ui/Controller$1.class            | Bin 1263 -> 1071 bytes
 .../roadgame/ui/Controller$2.class            | Bin 1401 -> 1263 bytes
 .../roadgame/ui/Controller$3.class            | Bin 0 -> 1401 bytes
 .../deadlocker8/roadgame/ui/Controller.class  | Bin 14197 -> 16810 bytes
 bin/de/deadlocker8/roadgame/ui/GUI.fxml       |  10 +-
 .../ui/SelectTilePackController$2.class       | Bin 1892 -> 1892 bytes
 .../ui/SelectTilePackController.class         | Bin 4986 -> 4986 bytes
 src/de/deadlocker8/roadgame/logic/Board.java  |  46 ++-
 .../deadlocker8/roadgame/ui/Controller.java   | 268 +++++++++++++-----
 src/de/deadlocker8/roadgame/ui/GUI.fxml       |  10 +-
 .../roadgame/ui/SelectTilePackController.java |   2 +-
 12 files changed, 230 insertions(+), 106 deletions(-)
 create mode 100644 bin/de/deadlocker8/roadgame/ui/Controller$3.class

diff --git a/bin/de/deadlocker8/roadgame/logic/Board.class b/bin/de/deadlocker8/roadgame/logic/Board.class
index b0cad02dd0c19c783c02615a51dc74bcff218e5a..d98dedf6e198e2131c10ee4bbacd6e4483d7784a 100644
GIT binary patch
delta 286
zcmX@2y+M1!38DH!3``763=9nZTH4zfCU0YyI*Y+odmF<{1lI_aD}jZ}yheK)!yFJ^
z&cF_$Sk^EwFfcPnGcYh%G4L@kFsx(XX4t^M&#;j}ieWQ@9K#j{O@?g@x(qJc87vrf
zGT1QeVz6V_&)~#xfWeL75Q8VfQ3hXz6AUs83=Cor_c6#a$T5I`KSLga1p_04B?AKk
zD+99~7xU!#!n-ZcGB7cmV_;!8&%nlTfq|3Z5`!Yc6$U+qYYY|)HyK<RZZr5Z++&Dg
rc)*ax@R*^5;VDBs!zG4JhL@8ki)>|m$H2+(ezLD<6yul4D@0`gItWQ>

delta 330
zcmdm>eMEc138DIH3``763=9lmTH4zfCU0YyI*Wmod5!iqhM5QfPVH?BbI=8OL4qKR
zE&)<K6C%j6hJk^BnL(O?fx(SIkb!|=9RoMR1_oY+%?yGJTNq>*wnZ=~Fl=W~V%Wu?
z#;}{gkYO)_DZ@SnONRXn)(nRj>=_O-crhGh@MAc}5WsMfA%x)+gA4-$gBZlg46+Pz
z3?LB3kjG%bz{p_9z`(%9z``pcAu_pJc(>(w1}26J3@i*68Q2&uF>o?mVNhha#-PV=
zgTaE~HiIj}T?T)K2MjR`j~LPzo-&j$JZGq9xWdrM@OpB+$X3=544e!fCtHd}$$kUd
X%EQ3Oz`!60wUv?K00RR96T?9OF;h>I

diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$1.class b/bin/de/deadlocker8/roadgame/ui/Controller$1.class
index fac104422568b470fecae66091041010efa41bb4..cfb79b3ebe672258cd982406cfe74a6e79ff7743 100644
GIT binary patch
delta 458
zcmaFQxt@dT)W2Q(7#J8#7)&;D1v1vlYWQR&mL;ZD=ognHrl;zMXXd5km%Emw=9O4$
zhH)`SFi5d8NHQ|;l;r2<6zhlQ7iFgw@i0g;2rx2m6lau{q~w?9aWTj;$g?xZF)|2%
z4Aaj^%uCk~t}HG|&E;WGU{GXaU`egWEMa6|(eTs^V`N}W1)0ytAmt+oQjgX0$q$*N
zl-U{77#SpRso`Q^WYCzzY{cj}*_hc(8^ir}){G4Nu6fBh`Nf%e>AtBY8Tl#f4El@=
zsuKlNS$P-?8H^^+V6LopVi00rVBle3WME+6Vi0B!VPIfjWDsQ#V_;<9W?*1&VPIrn
zVqjq4*ufyqyn{hzBLf2i6N4ZF0|OreGXn#II|DO=2Ln5UC)gY@h+3#Q3=A9$N({;j
zi~^1fq6{if6Ezu_z^XX4v=1<_sBU9WpS+4iMpF}Puoi<hnATy?Wnf@nVbEhRU@!(d
LjS=ib1_lNIf#q5~

delta 648
zcmZ3_@t%|G)W2Q(7#J8#7_2vP1v1tvY4~I%mL;ZD=ocra=B4Uq<`tBd==<iE7N@$F
zrRJ4bYld+#NH9pTGe|Nr$l_JX!ywHd!^psyo?7BmT2hjq$H<_hp^4LYu$uZjYfc6^
z1_gEoc}4~~T*iZy=J7BnGAJ=Ja0a_N`}?^#21PP5DBw3e&zg%tjzNWoL6t#`k%29>
zurx8Jn2|vg;%EJw#6012egCAa)Z`Lt%_uGg4F)ZC2F=L_nY6OB83Y&^xQp^j5=&Bp
zGSf3k7#UboK>@<ZAdk~hNQf~q@CKJ8CTII57K9`w<)kt)h(jz)tI!7<p$}093Ry-5
z!^s9rMvQ)wlbOu)vB!X&H6sJRYhH3resN}Ax^HSpMt%wpg9U@-<abP!jNX$onC0uE
z7?>EC7#J8twYM>dZ(@+$#-KctflF%(1J5=F^^FV+49pCI3=9l>49pA+3;_(h3_%Pc
z3?U3c3=9ln5RDAN3?d95Aj+V_pv%C>pa<5)C?ep<Aj+W6z{tSOz`&phwTDwn`v8N)
zHU<Nb*-Q+RKQN1F8Zj_1FfkZ2n1E?h1~Uc*1{MYl26F~01_lN$21W)(kogP@064Or
AumAu6

diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$2.class b/bin/de/deadlocker8/roadgame/ui/Controller$2.class
index e08927c5a6515dd52686bd09aa54fa43cf73acaf..34fbdfc7aefd4d041e5cb62f6dec9a90b3d2bf9a 100644
GIT binary patch
delta 514
zcmey#^`2AU)W2Q(7#J8#7_8YDm>3z<CmvLtXqv;#W|NthSz^b?prtW6kWo#}S~HB1
zfyFsLC6$wbk%5<oft`Vai-DPepND~yL13~J;{-Md1}Sz1$;lfSm6)X&WF}u_G-i`y
zP+(_}pUlUk%%jMl#K^!I?CR|A=Q7!vNrOX<L4}7wl|gNCHj^@^27?wmgC-+`>coSp
z!aNMx3<8V{+(r2%i6yB)nduoNlg}_kuo?0&h%$&x)?%KZV!>d^$iM<}A|r#ihEG;v
zSz=m+esM`+da8afh_u!Wo2<wpRnI6O0CFk=0|PSy0|O@m7Xu>$Hv<EM1p^ZU69WSS
zmzMTc1|F^L4160I7#Nrs1VLh88Ab+HhIj@c1_lNm21c-`FoOsK0|O(-5l~a2pr(jw
zZ(|VO#2~wkL3t(vm(~^ro^1^3AOq`}!6x#7ZBJp~Wk_QXVaNcRDh9SilmTKY1A{1o
z4udWOBZD5;t&Ac9jtrs<`cR8Bp%!s!X&+#a*v4Q0G92PsHn8g$!DfPd#KK?%_K7ir
g2?K*10~3QOgBb$@0}F!&gE@m0*dvT!Ees3{0M9T(WB>pF

delta 669
zcmaFQ`IC$5)W2Q(7#J8#7@Q_@O;=zoOUzNJU}RwQWMlxdD;XKsY%=pQOY9gKbToV>
z3aFY`dwObyF*2|?=clA{GB7d-@G!75aDZ4sJPe!+Tp*SR4+A#?7Z(FFgBTA34}<u`
z4-+`$85G$W6c`y~Cnqw?vhpw}F(^-7&1lT2%An59pvK4`H#w16V)B1R4gn1YO-2Ux
zfFMs_$Dl|?28GE9%#xG;GqQ18b1|qgX!9`WFz8NpW>V(VXE0=EFkoa*ohYCxz{6m~
zz{|+Mk(ivET3oDRFnKvs1e*m9gA9Z0WLD-0iuMc+j0|GQMX8A;slg?Q$=Lykd8uys
zMIo6vsf-LBAkRtE=j5knChLQQtfM?VHGQ%Y%M#Nn^ox^I^HTM55-amdOZ4HItr;13
zJoEBWi=1;3i;Gi>859^88JHOu8CV&Z1q48$!oVOP1PT){&CS5Yz`(%Fz`(%6z{|kM
zz{kMA;Kabhz{0@5Aflzcm4RQYUS=zUpqA`b24Su345Awu7#NrsBp4VNxEPoi7#J8C
z_!%}bNP-Pu1ZiTBVvq)l%P`174NPKS2CJ3T-o_xei9ux>gVsz2A+0S8{90QW1huv>
z2=8Ff0~yQ=Hkc3Wo^1@g3_BQP7<SczO&5ch05zR~L6*Uo!GwX4!4&L#Mi~J|1{nr3
zsD+vgOkm}lTG|H~<hL=HgA9kbnvDVEN=C4mAosH{Sb}|I#b6DlZ5V7B7#LU>^cn0J
P9KpWiWCUwrU|;|MObceE

diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$3.class b/bin/de/deadlocker8/roadgame/ui/Controller$3.class
new file mode 100644
index 0000000000000000000000000000000000000000..b026c7f86ee07594bf44fed040ce539d89a6215e
GIT binary patch
literal 1401
zcmX^0Z`VEs1_l!bCw2xVMh5kiRQ;6H#FU);<m}WU3;m+}#FX^J+*JM2OnvA4ypp2)
zoSf7m6=QY=7Dfhvti-ZJ{hY+SbbbG%tkmQZb_O;^21$@;T7`aUS!!O1zAK3INX$#g
zNiAYzU@OVUELJgKWKj1Z$|7q<2G+8~9F+=221ZXPyONQC%_cK1v&4>(K}Ul~b38pY
z!x$M@obyvsIT;uk1b7(O88|>JAsz-!1}+dwgolBffs2cQnL&()frmkyk%3tQq>0}r
zGcVPzG&d==C?qi{CzX*w$R|HJF()jsC=<ko3bKH_#>k*aoP$)1tr;2EGQi=&$e^U*
z0}Zs|<kY-W{mi_A(h_~&{L<o7aQInkhH){-Gbpk%C@?a};#JDSpv0ie$iSJNTH;h%
zQj(tsGF=m=@enoEoD8ZA>g)_^j0|$POoyoCVbEaEWMp6u2=erG42ooAP#|P97lSH;
zHV=aigDxWjTWVoxVoot5gDAwq$Z5w~Gm48rpTUrw!GMuLm8jIg!(ha~%gDfyn4Fwi
z3{F<8;6%sBAdk~kknm(=;0-QGOwRUAEPzIzIK)M$=@uOBj0_e$3^EL|j0{}C`K3k4
zscxB|M8J>84tk(4V`ShA&P>lsEGaEYWn}OJI{?LhU=dXFq4~lFCWRyR?W`FY_+9go
zbMlKb^U{4&OEU6Pco^&%92gnIl8aIkOH#p}2}sOKb;~ab0XxqFch1PkPtQ!&2Pw0T
z^7KSY8##%U`K2ZLa09Iw8F)PN@=}YOa}tY-Q;QiC7#JCt85kK@8JGnGK)Hy4K|lzU
zhrl#90~Z4W12Y2y0}lf)10w?;0|SE-0}}%a0|SGImiAT#el3};41!v+TN#A4wlj!s
zWME)mVvt~9VBlh4VqjokWZ-8w${-2W&j`}PAjKdJ7MEd=g_@VdzzkL^tG$guZWDvb
zHU_Pk3_@C482GieFbHaGVG!QIpa(LT8Eh~g*g2;dcp1(x$S|A(8!iSh0BSe`gDitF
zg9!s8gDKeYj4}d_3^EL6Q2R6)n83<8wX_c~$ZumX2bm3VG#dlRk&Iw7LC$AkumpR^
eioqI8+c4NNFfgz%=rh<cID$RN2-d;CzyJVXR$dhV

literal 0
HcmV?d00001

diff --git a/bin/de/deadlocker8/roadgame/ui/Controller.class b/bin/de/deadlocker8/roadgame/ui/Controller.class
index 44de8aa4615b85fc86feaccaa7df2feaab9db619..6e265d0979e69ea2319d25d6a4e0a313b0dfb1d6 100644
GIT binary patch
literal 16810
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

delta 8166
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
QtUwLYjg0G<<~c|L064^US^xk5

diff --git a/bin/de/deadlocker8/roadgame/ui/GUI.fxml b/bin/de/deadlocker8/roadgame/ui/GUI.fxml
index 0b3219e..c174899 100644
--- a/bin/de/deadlocker8/roadgame/ui/GUI.fxml
+++ b/bin/de/deadlocker8/roadgame/ui/GUI.fxml
@@ -6,6 +6,7 @@
 <?import javafx.scene.control.Menu?>
 <?import javafx.scene.control.MenuBar?>
 <?import javafx.scene.control.MenuItem?>
+<?import javafx.scene.control.SeparatorMenuItem?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.HBox?>
 <?import javafx.scene.layout.StackPane?>
@@ -52,9 +53,12 @@
         <menus>
           <Menu mnemonicParsing="false" text="Menu">
             <items>
-              <MenuItem mnemonicParsing="false" onAction="#reset" text="Reset" />
-                  <MenuItem mnemonicParsing="false" onAction="#selectTilePack" text="Select Tilepack" />
-                  <MenuItem mnemonicParsing="false" onAction="#about" text="About" />
+              <MenuItem fx:id="menuItemReset" mnemonicParsing="false" onAction="#reset" text="Reset" />
+                  <MenuItem fx:id="menuItemSelectTilePack" mnemonicParsing="false" onAction="#selectTilePack" text="Select Tilepack" />
+                  <SeparatorMenuItem mnemonicParsing="false" />
+                  <MenuItem fx:id="menuItemAutomaticTilePlacement" mnemonicParsing="false" onAction="#automaticTilePlacement" text="Automatic Tile Placement" />
+                  <SeparatorMenuItem mnemonicParsing="false" />
+                  <MenuItem fx:id="menuItemAbout" mnemonicParsing="false" onAction="#about" text="About" />
             </items>
           </Menu>
         </menus>
diff --git a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$2.class b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$2.class
index 86b2a5605f9b12afb3e9ab47b5b0898dde48a07b..f95ba0457b8968ec53293ba9e86314b84ce9ccbb 100644
GIT binary patch
delta 124
zcmaFD_k?f4-pQ7X$`kk2Opal6oV<`#Wa0(2$#WPbC(E&jZf0dV%&0Atl~|UTR-s>9
zl9-;V9}FUS7|a=D7#UcTbMlK*xfm=Ntl1f?7#UP2UQlJ_VX$Gao&1^EVRI}?2ov8n
c24k%)3}RYa7$mkaSWMo}CdMc-`5Idv0IBLEmjD0&

delta 122
zcmaFD_k?f4-iZ%tChk?99K+~1`39rJWNt>j$=4ZmCNE$W+04vzlyUMWW({U@28+qE
zEDl;+3|0&_><re73_@9nWr=AO`o$%Q>8bj`Ad-i{mO+M*fi*cNzc_VsEK3LzpVk%z
av26^-T3Z+-wlP>v-p?k+C^7jOTOR;=L?n#>

diff --git a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController.class b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController.class
index 6467685473a262965fdbfe36eff88916ae202b39..50b98332774f368733d82a9873f843b890d75d87 100644
GIT binary patch
delta 34
qcmeyR_DgNU9G=O-oFbDC^GHmN<h0w&#(RW?MO#;rb@MsFHH-k=QVUQ3

delta 34
qcmeyR_DgNU9G=M;oD!2GIjtrOaf)na;yuB_qASU&z4@Hr8b$!u#R}~J

diff --git a/src/de/deadlocker8/roadgame/logic/Board.java b/src/de/deadlocker8/roadgame/logic/Board.java
index 81e42e8..f95fe9d 100644
--- a/src/de/deadlocker8/roadgame/logic/Board.java
+++ b/src/de/deadlocker8/roadgame/logic/Board.java
@@ -171,34 +171,32 @@ public class Board
 
 	public boolean tileCanBePlaced(Tile tile)
 	{
-		if(getPossibleLocations(tile).size() == 0)
-		{
-			return false;
-		}
-		
-		tile.rotateRight();
-		if(getPossibleLocations(tile).size() == 0)
-		{
-			tile.rotateLeft();
-			return false;
-		}
-		
-		tile.rotateRight();
-		if(getPossibleLocations(tile).size() == 0)
-		{
-			tile.rotateLeft();
-			tile.rotateLeft();
-			return false;
-		}
-		
-		tile.rotateRight();
 		if(getPossibleLocations(tile).size() == 0)
 		{
 			tile.rotateRight();
-			return false;
+			if(getPossibleLocations(tile).size() == 0)
+			{
+				tile.rotateRight();
+				if(getPossibleLocations(tile).size() == 0)
+				{
+					tile.rotateRight();
+					if(getPossibleLocations(tile).size() == 0)
+					{
+						tile.rotateRight();
+						return false;
+					}
+				}
+				else
+				{
+					tile.rotateLeft();
+					tile.rotateLeft();
+				}
+			}
+			else
+			{
+				tile.rotateLeft();
+			}
 		}
-		
-		tile.rotateRight();
 		return true;
 	}
 	
diff --git a/src/de/deadlocker8/roadgame/ui/Controller.java b/src/de/deadlocker8/roadgame/ui/Controller.java
index 311f0ae..529a117 100644
--- a/src/de/deadlocker8/roadgame/ui/Controller.java
+++ b/src/de/deadlocker8/roadgame/ui/Controller.java
@@ -3,6 +3,7 @@ package de.deadlocker8.roadgame.ui;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Locale;
+import java.util.Random;
 import java.util.ResourceBundle;
 
 import de.deadlocker8.roadgame.logic.Board;
@@ -11,6 +12,7 @@ import de.deadlocker8.roadgame.logic.Game;
 import de.deadlocker8.roadgame.logic.Textures;
 import de.deadlocker8.roadgame.logic.Tile;
 import de.deadlocker8.roadgame.tilepacks.TilePack;
+import javafx.application.Platform;
 import javafx.event.EventHandler;
 import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
@@ -21,6 +23,7 @@ import javafx.scene.control.Alert;
 import javafx.scene.control.Alert.AlertType;
 import javafx.scene.control.Button;
 import javafx.scene.control.Label;
+import javafx.scene.control.MenuItem;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 import javafx.scene.input.MouseButton;
@@ -30,8 +33,10 @@ import javafx.scene.layout.GridPane;
 import javafx.scene.layout.StackPane;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
+import javafx.stage.WindowEvent;
 import logger.LogLevel;
 import logger.Logger;
+import tools.Worker;
 
 public class Controller
 {
@@ -39,7 +44,11 @@ public class Controller
 	@FXML private StackPane stackPaneCurrentTile;
 	@FXML private Button buttonRotate;
 	@FXML private Label labelTilesRemaining;
-	
+	@FXML private MenuItem menuItemReset;
+	@FXML private MenuItem menuItemSelectTilePack;
+	@FXML private MenuItem menuItemAutomaticTilePlacement;
+	@FXML private MenuItem menuItemAbout;
+
 	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);
@@ -48,30 +57,41 @@ public class Controller
 	private Textures textures;
 	private ZoomableScrollPane scrollPane;
 	private StackPane stackPanePlaceHolder;
-	
+	private final int SLEEP_TIME = 100;
+
 	public void init(Stage stage)
 	{
 		this.stage = stage;
+		
+		this.stage.setOnCloseRequest(new EventHandler<WindowEvent>()
+		{
+			@Override
+			public void handle(WindowEvent event)
+			{
+				Worker.shutdown();
+				System.exit(0);				
+			}
+		});
 		textures = new Textures();
 
 		anchorPaneGame.setStyle("-fx-border-color: #333333; -fx-border-width: 2px");
 		stackPaneCurrentTile.setStyle("-fx-border-color: #333333; -fx-border-width: 2px");
-		
+
 		labelTilesRemaining.setText("0");
-	
+
 		grid = new GridPane();
-		grid.setFocusTraversable(false);	
-		
-		scrollPane = new ZoomableScrollPane(grid);		
-		scrollPane.setPannable(true);		
+		grid.setFocusTraversable(false);
+
+		scrollPane = new ZoomableScrollPane(grid);
+		scrollPane.setPannable(true);
 		scrollPane.setFitToHeight(true);
-		scrollPane.setFitToWidth(true);		
+		scrollPane.setFitToWidth(true);
 		anchorPaneGame.getChildren().add(scrollPane);
 		AnchorPane.setTopAnchor(scrollPane, 0.0);
 		AnchorPane.setRightAnchor(scrollPane, 0.0);
 		AnchorPane.setBottomAnchor(scrollPane, 0.0);
-		AnchorPane.setLeftAnchor(scrollPane, 0.0);		
-		
+		AnchorPane.setLeftAnchor(scrollPane, 0.0);
+
 		anchorPaneGame.setOnMouseClicked(new EventHandler<MouseEvent>()
 		{
 			@Override
@@ -80,10 +100,10 @@ public class Controller
 				if(event.getButton().equals(MouseButton.SECONDARY))
 				{
 					rotateRight();
-				}				
+				}
 			}
 		});
-		
+
 		buttonRotate.setDisable(true);
 		Label labelPlaceHolder = new Label("Please select Tilepack first.");
 		labelPlaceHolder.setStyle("-fx-font-weight: bold; -fx-font-size: 16;");
@@ -160,7 +180,7 @@ public class Controller
 	private void placeTile(int x, int y)
 	{
 		game.placeTile(game.getCurrentTile(), new Point2D(x, y));
-		nextTile();
+		nextTile(false);
 	}
 
 	public StackPane createStackPaneForTile(Tile tile, boolean possible, int x, int y)
@@ -190,28 +210,28 @@ public class Controller
 		else
 		{
 			stack.getChildren().add(new ImageView(textures.getImageGrass()));
-			
-			//North
-			stack.getChildren().add(getImageForEdge(tile.getN()));	
 
-			//East
+			// North
+			stack.getChildren().add(getImageForEdge(tile.getN()));
+
+			// East
 			ImageView imageViewEast = getImageForEdge(tile.getE());
 			imageViewEast.setRotate(90);
-			stack.getChildren().add(imageViewEast);			
+			stack.getChildren().add(imageViewEast);
 
-			//South
+			// South
 			ImageView imageViewSouth = getImageForEdge(tile.getS());
 			imageViewSouth.setRotate(180);
-			stack.getChildren().add(imageViewSouth);			
+			stack.getChildren().add(imageViewSouth);
 
-			//West			
+			// West
 			ImageView imageViewWest = getImageForEdge(tile.getW());
 			imageViewWest.setRotate(270);
-			stack.getChildren().add(imageViewWest);	
-			
-			//Center					
+			stack.getChildren().add(imageViewWest);
+
+			// Center
 			ImageView imageViewCenter = getImageForCenter(tile);
-			stack.getChildren().add(imageViewCenter);	
+			stack.getChildren().add(imageViewCenter);
 		}
 
 		stack.setStyle("-fx-border-color: #cccccc; -fx-border-width: 1px;");
@@ -225,64 +245,64 @@ public class Controller
 			case GRASS:
 				return new ImageView(textures.getImageEmpty());
 			case ROAD:
-				return new ImageView(textures.getImageRoad());			
+				return new ImageView(textures.getImageRoad());
 			case CASTLE:
-				return new ImageView(textures.getImageCastle());			
+				return new ImageView(textures.getImageCastle());
 			default:
 				return new ImageView(textures.getImageEmpty());
 		}
 	}
-	
+
 	public ImageView getImageForCenter(Tile tile)
-	{		
+	{
 		switch(tile.getC())
 		{
 			case EMPTY:
 				return new ImageView(textures.getImageEmpty());
 			case CASTLE:
-				return new ImageView(textures.getImageCenterCastle());			
+				return new ImageView(textures.getImageCenterCastle());
 			case CASTLE_TRIANGLE:
-				ImageView iv = new ImageView(textures.getImageCenterCastleTriangle());			
+				ImageView iv = new ImageView(textures.getImageCenterCastleTriangle());
 				if(tile.getN().equals(EdgeType.CASTLE))
 				{
 					if(tile.getW().equals(EdgeType.CASTLE))
 					{
-						//North and West
+						// North and West
 						iv.setRotate(270);
 					}
 				}
-				
+
 				if(tile.getS().equals(EdgeType.CASTLE))
-				{					
+				{
 					if(tile.getE().equals(EdgeType.CASTLE))
 					{
-						//South and East
+						// South and East
 						iv.setRotate(90);
 					}
 					else
 					{
-						//South and West
+						// South and West
 						iv.setRotate(180);
 					}
-				}				
+				}
 				return iv;
 			case CHURCH:
 				return new ImageView(textures.getImageCenterChurch());
 			case ROAD:
-				ImageView ivRoad = new ImageView(textures.getImageCenterRoad());				
-				
+				ImageView ivRoad = new ImageView(textures.getImageCenterRoad());
+
 				if(tile.getE().equals(EdgeType.CASTLE))
-				{				
+				{
 					ivRoad.setRotate(90);
 				}
-				
+
 				if(tile.getS().equals(EdgeType.CASTLE))
-				{					
+				{
 					ivRoad.setRotate(180);
 				}
-				
+
 				if(tile.getW().equals(EdgeType.CASTLE))
-				{					
+				{
 					ivRoad.setRotate(270);
 				}
 				return ivRoad;
@@ -306,45 +326,48 @@ public class Controller
 		return false;
 	}
 
-	private void nextTile()
+	private void nextTile(boolean automaticPlacing)
 	{
 		Tile nextTile = game.getNextTile();
-		if(nextTile == null)		
-		{			
+		if(nextTile == null)
+		{
 			game.setCurrentTile(null);
-			stackPaneCurrentTile.getChildren().clear();			
+			stackPaneCurrentTile.getChildren().clear();
 			updateGrid(game.getBoard(), null);
 			return;
 		}
-			
+
 		game.setCurrentTile(nextTile);
-		
+
 		if(game.tileCanBePlaced(game.getCurrentTile()))
 		{
 			stackPaneCurrentTile.getChildren().clear();
 			stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));
-			
+
 			labelTilesRemaining.setText(String.valueOf(game.getBoard().getTilePack().getNumberOfTiles()));
 
-			updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile()));	
-		}	
+			updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile()));
+		}
 		else
 		{
-			Alert alert = new Alert(AlertType.INFORMATION);
-			alert.setTitle("Tile skipped");
-			alert.setHeaderText("");
-			alert.setContentText("The following tile has been skipped because it doesn't fit the current board:");
-			Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();		
-			alert.getDialogPane().setExpandableContent(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));
-			alert.getDialogPane().setExpanded(true);			
-			dialogStage.getIcons().add(icon);
-			dialogStage.centerOnScreen();
-			alert.showAndWait();
-			
+			if(!automaticPlacing)
+			{
+				Alert alert = new Alert(AlertType.INFORMATION);
+				alert.setTitle("Tile skipped");
+				alert.setHeaderText("");
+				alert.setContentText("The following tile has been skipped because it doesn't fit the current board:");
+				Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
+				alert.getDialogPane().setExpandableContent(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));
+				alert.getDialogPane().setExpanded(true);
+				dialogStage.getIcons().add(icon);
+				dialogStage.centerOnScreen();
+				alert.showAndWait();
+			}
+
 			labelTilesRemaining.setText(String.valueOf(game.getBoard().getTilePack().getNumberOfTiles()));
-			
-			nextTile();
-		}			
+
+			nextTile(automaticPlacing);
+		}
 	}
 
 	public void rotateRight()
@@ -354,16 +377,16 @@ public class Controller
 			game.getCurrentTile().rotateRight();
 			stackPaneCurrentTile.getChildren().clear();
 			stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));
-	
+
 			updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile()));
 		}
 	}
-	
+
 	public void reset()
 	{
 		init(stage);
 	}
-	
+
 	public void selectTilePack()
 	{
 		try
@@ -387,7 +410,7 @@ public class Controller
 			Logger.log(LogLevel.ERROR, Logger.exceptionToString(io));
 		}
 	}
-	
+
 	public void setTilePack(TilePack tilePack)
 	{
 		buttonRotate.setDisable(false);
@@ -395,12 +418,107 @@ public class Controller
 		{
 			anchorPaneGame.getChildren().remove(stackPanePlaceHolder);
 		}
-		
+
 		game = new Game(tilePack);
-		
+
 		updateGrid(game.getBoard(), null);
 
-		nextTile();
+		nextTile(false);
+	}
+
+	public void automaticTilePlacement()
+	{
+		if(game != null && game.getBoard() != null)
+		{
+			buttonRotate.setDisable(true);
+			menuItemReset.setDisable(true);
+			menuItemSelectTilePack.setDisable(true);
+			menuItemAutomaticTilePlacement.setDisable(true);
+			menuItemAbout.setDisable(true);
+
+			Worker.runLater(() -> {
+				while(game.getCurrentTile() != null)
+				{
+					if(couldPlaceTileAutomatically())
+					{
+						try
+						{
+							Thread.sleep(SLEEP_TIME);
+						}
+						catch(Exception e)
+						{
+						}
+						continue;
+					}
+
+					game.getCurrentTile().rotateRight();
+					if(couldPlaceTileAutomatically())
+					{
+						try
+						{
+							Thread.sleep(SLEEP_TIME);
+						}
+						catch(Exception e)
+						{
+						}
+						continue;
+					}
+
+					game.getCurrentTile().rotateRight();
+					if(couldPlaceTileAutomatically())
+					{
+						try
+						{
+							Thread.sleep(SLEEP_TIME);
+						}
+						catch(Exception e)
+						{
+						}
+						continue;
+					}
+
+					game.getCurrentTile().rotateRight();
+					if(couldPlaceTileAutomatically())
+					{
+						try
+						{
+							Thread.sleep(SLEEP_TIME);
+						}
+						catch(Exception e)
+						{
+						}
+						continue;
+					}
+				}
+				
+				Platform.runLater(()->{
+					buttonRotate.setDisable(false);
+					menuItemReset.setDisable(false);
+					menuItemSelectTilePack.setDisable(false);
+					menuItemAutomaticTilePlacement.setDisable(false);
+					menuItemAbout.setDisable(false);
+				});
+			});
+		}
+	}
+
+	private boolean couldPlaceTileAutomatically()
+	{
+		ArrayList<Point2D> possibleLocations = game.getPossibleLocations(game.getCurrentTile());
+
+		if(possibleLocations.size() > 0)
+		{
+			Random random = new Random();
+			int index = random.nextInt(possibleLocations.size());
+
+			Platform.runLater(() -> {
+				placeTile((int)possibleLocations.get(index).getX(), (int)possibleLocations.get(index).getY());
+				nextTile(true);
+			});
+			return true;
+		}
+
+		return false;
 	}
 
 	public void about()
diff --git a/src/de/deadlocker8/roadgame/ui/GUI.fxml b/src/de/deadlocker8/roadgame/ui/GUI.fxml
index 0b3219e..c174899 100644
--- a/src/de/deadlocker8/roadgame/ui/GUI.fxml
+++ b/src/de/deadlocker8/roadgame/ui/GUI.fxml
@@ -6,6 +6,7 @@
 <?import javafx.scene.control.Menu?>
 <?import javafx.scene.control.MenuBar?>
 <?import javafx.scene.control.MenuItem?>
+<?import javafx.scene.control.SeparatorMenuItem?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.HBox?>
 <?import javafx.scene.layout.StackPane?>
@@ -52,9 +53,12 @@
         <menus>
           <Menu mnemonicParsing="false" text="Menu">
             <items>
-              <MenuItem mnemonicParsing="false" onAction="#reset" text="Reset" />
-                  <MenuItem mnemonicParsing="false" onAction="#selectTilePack" text="Select Tilepack" />
-                  <MenuItem mnemonicParsing="false" onAction="#about" text="About" />
+              <MenuItem fx:id="menuItemReset" mnemonicParsing="false" onAction="#reset" text="Reset" />
+                  <MenuItem fx:id="menuItemSelectTilePack" mnemonicParsing="false" onAction="#selectTilePack" text="Select Tilepack" />
+                  <SeparatorMenuItem mnemonicParsing="false" />
+                  <MenuItem fx:id="menuItemAutomaticTilePlacement" mnemonicParsing="false" onAction="#automaticTilePlacement" text="Automatic Tile Placement" />
+                  <SeparatorMenuItem mnemonicParsing="false" />
+                  <MenuItem fx:id="menuItemAbout" mnemonicParsing="false" onAction="#about" text="About" />
             </items>
           </Menu>
         </menus>
diff --git a/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java b/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java
index d64c497..c48eee0 100644
--- a/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java
+++ b/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java
@@ -113,8 +113,8 @@ public class SelectTilePackController
 				{
 					if(event.getButton().equals(MouseButton.PRIMARY))
 					{
-						controller.setTilePack(currentPack);
 						stage.close();
+						controller.setTilePack(currentPack);						
 					}				
 				}
 			});
-- 
GitLab