From b09a6a1743c5720ef6a7b36fc3512aea464d6f19 Mon Sep 17 00:00:00 2001 From: deadlocker8 <goldi.96@gmx.de> Date: Fri, 22 Apr 2016 17:31:18 +0200 Subject: [PATCH] Fixed #6 --- class/application/Controller$1.class | Bin 1610 -> 1615 bytes class/application/Controller$2.class | Bin 1112 -> 1112 bytes class/application/Controller$3.class | Bin 1256 -> 1256 bytes class/application/Controller$4.class | Bin 3337 -> 3337 bytes class/application/Controller$5.class | Bin 1609 -> 1609 bytes class/application/Controller$6.class | Bin 1527 -> 1527 bytes class/application/Controller$7.class | Bin 2481 -> 2481 bytes class/application/Controller$8.class | Bin 2452 -> 2452 bytes class/application/Controller.class | Bin 20904 -> 23107 bytes class/application/Main.class | Bin 1990 -> 1999 bytes class/application/MainGUI.fxml | 20 ++- class/application/PathSettings.class | Bin 0 -> 2615 bytes class/application/Settings.class | Bin 0 -> 3295 bytes class/application/Settings.fxml | 49 ++++++- class/application/SettingsController$1.class | Bin 0 -> 1685 bytes class/application/SettingsController.class | Bin 0 -> 2454 bytes class/logic/Game.class | Bin 9067 -> 9260 bytes src/application/Controller.java | 129 ++++++++++++++----- src/application/Main.java | 3 +- src/application/MainGUI.fxml | 20 ++- src/application/PathSettings.java | 66 ++++++++++ src/application/Settings.fxml | 49 ++++++- src/application/Settings.java | 116 +++++++++++++++++ src/application/SettingsController.java | 100 ++++++++++++++ src/logic/Game.java | 21 ++- 25 files changed, 516 insertions(+), 57 deletions(-) create mode 100644 class/application/PathSettings.class create mode 100644 class/application/Settings.class create mode 100644 class/application/SettingsController$1.class create mode 100644 class/application/SettingsController.class create mode 100644 src/application/PathSettings.java create mode 100644 src/application/Settings.java create mode 100644 src/application/SettingsController.java diff --git a/class/application/Controller$1.class b/class/application/Controller$1.class index 1e159b04bcc10e758a54a6ad35ca4ba9fa4b5df2..f285cfaad04c444835452f2b4fd554adb419b14c 100644 GIT binary patch delta 54 zcmX@bbDn3zOcpNA;*!Lo68FU1)XDQ$A{g5ze`o0v?P1Vh=wonT=x6X?n84u2Fp(jQ KVe;fztQ!CVsu7a_ delta 49 zcmX@lbBbrfOcqv_%)HE!$%|Pc7?UUeVd)diV9;R5VsK!{X7FIhVen(fWe8))pFE#+ F0|1R14yXVC diff --git a/class/application/Controller$2.class b/class/application/Controller$2.class index 8772805082f719d2f4069e28ab38c667cdc86f64..770c6bd7b41d397a1fe2139e3cea67f767dce807 100644 GIT binary patch delta 27 jcmcb?af4$+6Eowi$<55ZobwsD85S^zGAx{Yler!MgTe^z delta 27 jcmcb?af4$+6Eow4$<55ZoKqRN8KyCaGEAR*ler!Mf%XW- diff --git a/class/application/Controller$3.class b/class/application/Controller$3.class index 2128f395e0c1285f380c5a39a35da7d4cc20120f..e69c0cf350cd9b9657139a7163639d98b94612c7 100644 GIT binary patch delta 24 fcmaFC`GRu;GYjMY$t*1KY>X@n8jP%yGg;~ZT*wAY delta 24 gcmaFC`GRu;GYjL_$t*1KYz)5`G#GwQ&Sa?v0BMW}EC2ui diff --git a/class/application/Controller$4.class b/class/application/Controller$4.class index 4f60b496f10af4cf9f947231cbafa5df3c3fee53..999d61509c117294c1f1c8168aed35ba49c67a9d 100644 GIT binary patch delta 104 zcmeB_>Xh1Wh>J0M^I<L>#?S%=X~rT3CB_m4C&mhfV8$wjXvS)W6vi5ca>iPQI>tJN zF2)9iIgCvVOBtIPHZZm_>|ktT*vHt;aG0@^;TU5V!*RwQhSQ9F4CfdpGF)Sv!tjQ1 J`eYZLqX5EH9!dZJ delta 104 zcmeB_>Xh1Wh>I~|^I<L>#?V*>X~uX4CB{SsC&pBUV8(QYXvPeN6vj-3a>gu%I>u~< zF2-DjIgI%XOBo9oHZT@3>|iWr*vDAHaG0@-;TU5%!*Rw+hSQAI4Cff@7_KokGQ44I Jne4)I6aa2_9F+h7 diff --git a/class/application/Controller$5.class b/class/application/Controller$5.class index ff65ae4e0c93ec903179d2e54404bff4359b5f6a..7a730d62a3e4d03f10bba0fafb77f76c054381da 100644 GIT binary patch delta 47 zcmX@fbCPERKP%&^$pWmMvg;Yx88<QrF>YcIW!%aj!?>M6k8uZs6XQ;XK*n8@x3NwJ E05x?D1ONa4 delta 47 zcmX@fbCPERKP%(($pWmMvU3>N8RszwG0tZYWn9D{!?=V&k8vr36XP<5K*r^hx3NwJ E04GQcSpWb4 diff --git a/class/application/Controller$6.class b/class/application/Controller$6.class index 027974dcc6466893efeb7b749ce78cc985b6df6c..ec87ab5584606e73ee3fc437c18f1fb8a6d0391b 100644 GIT binary patch delta 47 zcmey){hfQm85YKSlh3kL$v$RaXMD;a#Q2Osl<_5l4C8AC4aPSN#*A+noEYCtPGOx4 E0HO*IB>(^b delta 47 zcmey){hfQm85YLVlh3kL$zEV!XS~E9#CVxOl<^va4C4(34aS=c#*DWZoEUFUPGOx4 E0F&JhdH?_b diff --git a/class/application/Controller$7.class b/class/application/Controller$7.class index 7f51833b4c466c9acccd2a116b74b66b50fc1632..c67eaa2734c58f9732d1b4031da5cc9e36d61bd2 100644 GIT binary patch delta 85 zcmdleyis_=c6KHv_Q^ZhKRPk-FmN;RG6*s8F^Dn=FlaIfG3Yb#F<3B(F@!ORGh{JI qFqAV%F?2A=Fid8WWthgKz_5@>kzoas62k^2Wrkf$s*~Sv90dT9;t%Zr delta 85 zcmdleyis_=c6KJlFOzq&e{^E}$-vF{i$RF-H-jkSUj|La{|x$!zZoo;m>I&DSQxUH rSQ*Nh*cm#QI2k50aWPC|;$>LK#K*9LiJxHulK{gmCZWl1IF14U3iuU} diff --git a/class/application/Controller$8.class b/class/application/Controller$8.class index 8711b3bf8f6442640e8de6cdfbe744dd442a1164..fda9f9734cf7d5026d164da40117b70622086f13 100644 GIT binary patch delta 83 zcmbOtJVkiJGIqvglb5qUcU;ZD&9sI=h-oc@DARfdO{R?u`b=vXESR=31Tbx5h-TW( qkioQ*p^|AgLkH6yhHj?)4AYnnFwA8-$gq^@5W{+=Ba_c_90dRpeHt79 delta 83 zcmbOtJVkiJGIqwvlb5qUcbvh%%`}rih-nssDAODUO{RGa`b@JJESMHC1TZaTh-O;C qkioQ!p^|9@LkH7JhHj=c4AYp_GR$RK$FP)XJ;QpYjg!xF90dU0E*QoD diff --git a/class/application/Controller.class b/class/application/Controller.class index a393e20a12c8a0779aba81a2046f8e2121bbf637..1d08088c6bd0c22f96fc9657f82d0bb2080f3355 100644 GIT binary patch literal 23107 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 literal 20904 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 K%)-nC4w3+TLMzAs diff --git a/class/application/Main.class b/class/application/Main.class index 9052a30434ad5936f733b59d1de4fb72348f0b71..dabd9a0e1d264556eddbc6eaa71c216e4edd1674 100644 GIT binary patch delta 215 zcmX@cf1ZCsFdL@<11AF;0|P_(<QO(PR&C~O3>K4Tv02vVF%&YSGcYr7F)%PVF$gd) zFbFXSG6*wBGKezhGKe!6F-S02Fi0}kF-S2uGsrObFvv0lF~~85Gbl1-F(@(QF(@+> zGN>>VF{m+=F=#MwGcYiCFtCGcV&GxmWdMP4hHQo$21W)!hFFGNhCBu)21$lchJ1zs z24+nLT?R*nLWUv+76u;%C5B>#5(ZW<uau#Tfr+7<fq{XOf$2L#;pB35JysnC76#qP HtJq}#p7I@y delta 229 zcmX@le~f=aFdL^j11AF;0|P_R<QO))$@AGP>oXa07}6P-8Mqi280;AM85kIZ7z7!F z86+7*8FU%M8H^Yt7%Uhh8SEIO8Qd9U7<?II8G;xT7*ZJ&88R7^7;+et8FCp^844NH z8Mql37(5u*LFO~?Fz_;fKoLVWLk<HYgCIi$LoP!e0~3QJLjXfQLjeObgD!&&NMjKL z3xhj@5<@XV2?HxbE&~fgDMJ|p6GJ%z0|O@m(|3lP$qnp!irNe;3_4&tco-NN7#LU? TY8mPn7#J8C>KPaqm>3!Wsd*fC diff --git a/class/application/MainGUI.fxml b/class/application/MainGUI.fxml index e4034b7..979f874 100644 --- a/class/application/MainGUI.fxml +++ b/class/application/MainGUI.fxml @@ -3,6 +3,9 @@ <?import javafx.geometry.Insets?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.Label?> +<?import javafx.scene.control.Menu?> +<?import javafx.scene.control.MenuBar?> +<?import javafx.scene.control.MenuItem?> <?import javafx.scene.image.ImageView?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.HBox?> @@ -50,17 +53,17 @@ <Font name="System Bold" size="12.0" /> </font> </Label> - <Label fx:id="labelAI2Name" alignment="CENTER" contentDisplay="CENTER" layoutX="661.0" layoutY="95.0" prefHeight="19.0" prefWidth="106.0" text="Computer 2" textAlignment="CENTER"> + <Label fx:id="labelAI2Name" alignment="CENTER" contentDisplay="CENTER" layoutX="661.0" layoutY="107.0" prefHeight="19.0" prefWidth="106.0" text="Computer 2" textAlignment="CENTER"> <font> <Font name="System Bold" size="13.0" /> </font> </Label> - <Label fx:id="labelAI3Name" alignment="CENTER" contentDisplay="CENTER" layoutX="36.0" layoutY="95.0" prefHeight="19.0" prefWidth="106.0" text="Computer 3" textAlignment="CENTER"> + <Label fx:id="labelAI3Name" alignment="CENTER" contentDisplay="CENTER" layoutX="36.0" layoutY="107.0" prefHeight="19.0" prefWidth="106.0" text="Computer 3" textAlignment="CENTER"> <font> <Font name="System Bold" size="13.0" /> </font> </Label> - <Label fx:id="labelAI1Name" alignment="CENTER" contentDisplay="CENTER" layoutX="340.0" layoutY="16.0" prefHeight="19.0" prefWidth="106.0" text="Computer 1" textAlignment="CENTER"> + <Label fx:id="labelAI1Name" alignment="CENTER" contentDisplay="CENTER" layoutX="340.0" layoutY="38.0" prefHeight="19.0" prefWidth="106.0" text="Computer 1" textAlignment="CENTER"> <font> <Font name="System Bold" size="13.0" /> </font> @@ -70,5 +73,16 @@ <Font name="System Bold" size="14.0" /> </font> </Button> + <MenuBar fx:id="menuBar" prefHeight="25.0" prefWidth="304.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"> + <menus> + <Menu fx:id="menu1" mnemonicParsing="false" text="Menü"> + <items> + <MenuItem fx:id="menuItem1" mnemonicParsing="false" onAction="#startGame" text="Neues Spiel" /> + <MenuItem fx:id="menuItem2" mnemonicParsing="false" onAction="#openSettings" text="Einstellungen" /> + <MenuItem fx:id="menuItem3" mnemonicParsing="false" onAction="#about" text="Über" /> + </items> + </Menu> + </menus> + </MenuBar> </children> </AnchorPane> diff --git a/class/application/PathSettings.class b/class/application/PathSettings.class new file mode 100644 index 0000000000000000000000000000000000000000..3325c7acc9f96544b9d89e46a0522c912ec15c5c GIT binary patch literal 2615 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 F8vtOyUNisz literal 0 HcmV?d00001 diff --git a/class/application/Settings.class b/class/application/Settings.class new file mode 100644 index 0000000000000000000000000000000000000000..4f44a6cf7664369814f1b0b89d53a653c8b1297f GIT binary patch literal 3295 zcmX^0Z`VEs1_l#`CF~4Lj0_@)1qC^o$%!SI`FZ-msU;<udFjRM3@nTc0$GV=iTXK- zdFlH8Nm;4MCF~4rj0_@R(ae1P;MAhb#GK5k#H5^5Mh5P@(%hufBL6f;&tgUfMo&ft zQJ6?@Nn#PmROiH^lww8(_QcHKg4EO$Mh4NuoSgh}=ZwUhoYcJZ)PS7Q;*j!uMh3<x zMh00-Ik)`MqVUX;46qtG-0~oGj0^(BVE2Wk78Pga=Y@K@FfuTDF*5Kv=jRodB<7Wb zCFYc-vNAvbBO?QwO=ezZi5(*Yr-rAeXH-;_W*8#_i*tTTDi;GYg9HzQ2!kXe1G9!^ z7$*ZGgES8VI|B!ZCCkIW31P|eFmORwiaZS53_KuNWgZ4z2uqcRfscWQk%8YQGcVN- z99SWcpcC@RPfpAUODxI+@u7k&B^jB;j0|Ev*rLapok5$Cfd>{7Zkai$><qe$4B}uB zaEt|)6lLb6JC$bUq@)&cFz7Qfusa3>xHyJ5axoY(7_&1Np+s<SWpPPrE)RnVgDE2e zTY73qYF-&5gPMj9x{21Bm_l3(<_wnX3>K&+f*ruaV8vj~$iQ9(3T^*1G$SF&3cHay z47Q*!w_{`w#pa4I4h9EC1_6DS)WnpW{N(J^BK=T5e|;_n9R?>J24@BrMh3RTf`Zh% z6h;PJYzAO>0~%J=AS2v(7~B~=7#TQ9@*x4q$RMJD)#q9awp<L}48H6PK8y_fCHeU| z#rgq>B^jY5nK{Kg41Ns$j11h#8L7$HZuy|7U}O-4x+XJU9~5!cnqeFafs73D=w2y? z=0&~a{JgZxbS?%hhF~6s5Qb1j2Da3S%;J(_aB_^|Vqjzl=V6EdB~Ov$qSVBa)ZmiD zyp+VE6mS|Z1}TW*VTcAPU@1;4OXXsSWr$~Ih+||BMntb`MRIBZs1V>`NC2tiFDS~) zD+w-1OwJA|N=!~=WME0l1m$!-NXWsQ&&a@-%E%xJ5d<eaxJlNG47^|id=m?x$(jo; zS<KFm!N?#1b^z2Y|I(6z(vskkqSVA(E{1dlTXu$QMg}RE5=d%6Rg}e$3rZz<j0}>9 zU`1A9tr^C}ki}5I!%)aj#K^#1UX)pq3NZ;SWkCd?>PvVSN<pE(nw*ngoC<PG2_pkL zC;<FROBflXAl}8|Zfiyc=6sM68MqRN!6=SmWMIk3PfTHFsD))(s8ODINFh)I3V{Yj z21(QqKv7fA&;$yAW<~}HL;xVE0Q;w&p_PZBjiH^9fvYGrF$Llv^dt=twdP`|XDH!f zr~wg-4Bb2oJq*2!41DRSC6Gc3TEa7HXnKMYRzDBJ1dsv=Bn2o1K1k6d9)`&vMO^8r zC618NA0#}LhhZ8hIg4i&J7TK|Kx$_2Fw6w0k;kS6RMJCh1d!U<JPdO{Y8CLQ1?gdA zU;{;^Cn(v#qY0E5kpqsAfhjYOkwF@+01`l`O4vZr2&&7tg7Zs@l2bv3fKojy?}B2E zL6L!xfti7kft7)sfeBP^FfcGMfocsf&Bee0rnwn-z%(zE<^$7G4EziN42%qdU^yWM zZU#mM5e88PMg}nk28I=2^B5S^w6-&dYe{cqkkXRb${?d9yOlvsOO$0RgMyYQ>sAIO zEm5|u3@RJJW~ebRFeriTlwe?CkYeCukY?axkYNyJkY$i$kYkW%kY`Y3P+(AJU|{fI zU}s=pP-D<w&;(bMYGBthg2gx)I2f3~ERYYF!7Pv;SimfhFF>`c8mQJ|U<12a66)&v z46F<w^)Vn<?`F`7+|8g9DWtc9!C(i2*>(mSA^U9%j@uYqw=;O|VDQ4GAONnwM|&GX z&@2XFt!)fpTH6>Rmosqq>TF|(*~q}i;Li}u5XKP8z{~*hvlasv*yk(^Dh#R&sthg+ zY7E{C8Vvpn+6=)AIt*b9x(wkA`V7$wMqs}yK->uRy9<K^Ln1>GsH|mRVMu03VPIlN zWnf?sW?=fy5XQj7&cMjdpamjgSr`~Wr7_gANeoO3pa4_QVgW^u06QptSV8f_42m9R zQ0y?HM2;Ld(9IZF8O#~D87vqC7%Uk?8LSwj7_1rO8En9g<AIn7bsQt8aA#m*NMm4N z0NEZ3P8=Q3U^d&$kd6_=@DR-O+0Bp@slA;c$5%&d8$-U%HilyDZ470I#3IGO#=yYf zz#z}y$e_XC#GuRI%wWji!eGka3U&)5pv<6dk!KKRC}*f(U}Vr>;A5y{r~>=Hnn4o7 zeRmmH89<38b2mc`Zuiys>}IG3xvvovuPp}{82xm%F?48eW9Zb<-Nw)b3RK-~41J(r z)!oK05frkz+Zd*R0#|n%!*o#i>TYA0g%ZR@;JoF@AkW~%puynHV8GzRV8Y<bV8P(e z;J^^T;K2~c5Wo<`5Wx`4kiZbakiifN_No@d!Emp7G0bI{2llEX!+eGX3``6L43-QF z88pH9y@#O}nh5k67{L+7s<nkdY7IOag0ckzLnPQ}NQ|;Vjb;Rus#rA3plgo9s(CV2 wo8{0oCu7w-jUg0^%?jw6Gq7r&iB+=_y5?N0n&)8Etb(q&2&?8r;9y-00Gk%Qga7~l literal 0 HcmV?d00001 diff --git a/class/application/Settings.fxml b/class/application/Settings.fxml index e8b4a5e..f6de2a0 100644 --- a/class/application/Settings.fxml +++ b/class/application/Settings.fxml @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <?import javafx.geometry.Insets?> +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.CheckBox?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.Slider?> <?import javafx.scene.layout.AnchorPane?> @@ -8,8 +10,7 @@ <?import javafx.scene.layout.VBox?> <?import javafx.scene.text.Font?> - -<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.65"> +<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SettingsController"> <children> <VBox layoutX="45.0" layoutY="40.0" prefHeight="320.0" prefWidth="511.0"> <children> @@ -20,7 +21,7 @@ <Font name="System Bold" size="14.0" /> </font> </Label> - <Slider blockIncrement="1.0" majorTickUnit="1.0" max="3.0" min="1.0" minorTickCount="0" prefHeight="44.0" prefWidth="230.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> + <Slider fx:id="sliderNumberOfAIs" blockIncrement="1.0" majorTickUnit="1.0" max="3.0" min="1.0" minorTickCount="0" prefHeight="44.0" prefWidth="230.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> <HBox.margin> <Insets left="50.0" /> </HBox.margin> @@ -34,7 +35,7 @@ <Font name="System Bold" size="14.0" /> </font> </Label> - <Slider blockIncrement="1.0" majorTickUnit="1.0" max="10.0" min="3.0" minorTickCount="0" prefHeight="44.0" prefWidth="233.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> + <Slider fx:id="sliderNumberOfStartingCards" blockIncrement="1.0" majorTickUnit="1.0" max="10.0" min="3.0" minorTickCount="0" prefHeight="44.0" prefWidth="233.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> <HBox.margin> <Insets left="50.0" /> </HBox.margin> @@ -54,7 +55,7 @@ <Insets /> </HBox.margin> </Label> - <Slider blockIncrement="1.0" majorTickUnit="1.0" max="4.0" min="1.0" minorTickCount="0" prefHeight="44.0" prefWidth="233.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> + <Slider fx:id="sliderAISpeed" blockIncrement="1.0" majorTickUnit="1.0" max="4.0" min="1.0" minorTickCount="0" prefHeight="44.0" prefWidth="233.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> <HBox.margin> <Insets left="50.0" /> </HBox.margin> @@ -64,7 +65,45 @@ <Insets top="25.0" /> </VBox.margin> </HBox> + <HBox prefHeight="44.0" prefWidth="412.0"> + <children> + <Label alignment="TOP_RIGHT" contentDisplay="TOP" prefHeight="20.0" prefWidth="150.0" text="Regeln:"> + <font> + <Font name="System Bold" size="14.0" /> + </font> + <HBox.margin> + <Insets /> + </HBox.margin> + </Label> + <VBox> + <HBox.margin> + <Insets left="50.0" /> + </HBox.margin> + <children> + <CheckBox fx:id="checkBoxRule1" mnemonicParsing="false" text="+2 Karten können verlängert werden" /> + <CheckBox fx:id="checkBoxRule2" mnemonicParsing="false" text="+4 Karten können mit +2 Karten verlängert werden"> + <VBox.margin> + <Insets top="10.0" /> + </VBox.margin> + </CheckBox> + <CheckBox fx:id="checkBoxRule3" mnemonicParsing="false" text="+4 Karten können mit +4 Karten verlängert werden"> + <VBox.margin> + <Insets top="10.0" /> + </VBox.margin> + </CheckBox> + </children> + </VBox> + </children> + <VBox.margin> + <Insets top="25.0" /> + </VBox.margin> + </HBox> </children> </VBox> + <Button layoutX="264.0" layoutY="348.0" mnemonicParsing="false" onAction="#save" text="Speichern"> + <font> + <Font name="System Bold" size="12.0" /> + </font> + </Button> </children> </AnchorPane> diff --git a/class/application/SettingsController$1.class b/class/application/SettingsController$1.class new file mode 100644 index 0000000000000000000000000000000000000000..f52ad07f21f51896ac07d7146b980ab1cb6a8641 GIT binary patch literal 1685 zcmX^0Z`VEs1_l#`P<93;Mh1n%f`XjP<iwK9{5<{O)RL0Sy!2w{{JfH){G6QBA{9e+ z1{OvJ>8!-E#Iy?i(vr*^{os<K%)E5x{JgT%qLS1iMh3Q$jLc#c14ae~AN;0SGcvH* zWaed-*fBCFYY<Yb8OF%K;+&t7%E`dUz|F(J%D~3Oz|6qQ!@$nK$H>5}0aC#4lbM(5 zSDKrYS`?C)l#|NHAmo#uoR|}qSd<CkLj_qtPGn?IB4DSAp*14|M@c@!i;N6v8a^PO z>*plqrR%%omnP+;T5BQ+LDX4uF^Dlpurr7=G6<k6=V6d!kYZ%uP62BUOUx-v1v}k^ z&He`i7;rGiF*30GB<7_TC+4y_uz&>_I2e=|8Q6R?OG;96*c^CZf@+Km?7_(yd8s)$ z91I$a3_QW98AS?E5k>~aJdpp<-C)hgz#CkWn4ImKSO5(VuC${3T!`z@d<hXm@g>yb zTnzdQhU^RmD87U!=V35nFlJ=n$Ve>C0L2*Ci=H42raTO04CagsY^jB%i8;lL45G+E z>YtRAnp|S783hVKOCAO*25UwJ_A*c?`KN)@x*&%()E#UNkkDXYbKrom*c=2P3`PdV zV$=|TxX&8RlQ4U+MI|GH8xMmpg9w@ys6oi?fttd_z{udq!=S^U%gDeLoL^d$oa&Yd zN{Ql_`AH8HH;fFN!I|lKi6x~)sf-MUU`OD{TsB}yl=Nq3&B(y-nwOlDU!0kj?weYY zk)OiO5WvVFhd=Z2Fa$9KGcvG%@*g9EJ|r5_D)fs>64O)lgF&P<O7=jM0@k3M#^afn zms;eUlUQ7wTFjupz{tSNz`(#LAOOmk3=9mc3=9nH3>*xM44e!M3>FMb3``6R3|v~; zTN${twlnZ-WME)mV&Dgffn^vOSQ#W4KoQ5ozz7x<WDo+G2nu|tDJ={vV70p1+ZaSe z7^G*+VPF%I-2maqgL#Tjo-&xHx<N>N0|NsCGuR?I26hGp1~~?926+ZP1_cI521N!L z1|<e{24w~<234@-Vh{@$AeJ*Q=rU+BXfZG{XoJ1P%*V^izzB+4sEhV7FoFG@rXA_K zjX`fUDBVSZEbL5nd(6PVpmeoKFrR^eK`%irSdf8%!AeI+aT|llEC%J}40<|3s$jO< zat0+GAz3h+Z8?J&{|*L=4I&IS5XufhIe;jT$zZRDfx}mu!G}SQA&|j<A%ek(A)dh$ z$qQ+4FQhRzF*rlLz{kM;he3m#L7$tOn}v-{z>z_i!3F9UO=ui(YH1%}5ZlJ!3JN($ z6tRJ$gb{2!69a>QBZCfuJ5-w*R2!R?_BI9&oO&2o7`(ty?#<u>rhOUw7#J8>82lLm P8A8Aj&Iq=Jfq?-41le+A literal 0 HcmV?d00001 diff --git a/class/application/SettingsController.class b/class/application/SettingsController.class new file mode 100644 index 0000000000000000000000000000000000000000..b1ad5cd7fb698773a4eeab42acc62785e9b11c4d GIT binary patch literal 2454 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 literal 0 HcmV?d00001 diff --git a/class/logic/Game.class b/class/logic/Game.class index 30c9f4d97f0f453d12e3da4b64421989052c693e..8e4517650abb53f2aa52706df849fba4e8862567 100644 GIT binary patch literal 9260 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 literal 9067 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 diff --git a/src/application/Controller.java b/src/application/Controller.java index 4de9069..4d20216 100644 --- a/src/application/Controller.java +++ b/src/application/Controller.java @@ -22,6 +22,9 @@ 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.Menu; +import javafx.scene.control.MenuBar; +import javafx.scene.control.MenuItem; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.image.WritableImage; @@ -59,11 +62,16 @@ public class Controller @FXML private Label labelAI2Name; @FXML private Label labelAI3Name; @FXML private Button buttonStart; - + @FXML private MenuBar menuBar; + @FXML private Menu menu1; + @FXML private MenuItem menuItem1; + @FXML private MenuItem menuItem2; + @FXML private MenuItem menuItem3; public Game game; public Color chosenWishColor; public int drawCounter; + public Settings settings; public Stage stage; public Image icon = new Image("images/icon.png"); @@ -78,7 +86,7 @@ public class Controller private final double CARD_SPACING_ULTRA_SMALL = - 35.0; private Point2D PLAYER_STARTING_POINT; - private final Point2D AI_1_STARTING_POINT = new Point2D(100.0, 50.0); + private final Point2D AI_1_STARTING_POINT = new Point2D(100.0, 75.0); private Point2D AI_2_STARTING_POINT; private Point2D AI_3_STARTING_POINT; @@ -91,10 +99,38 @@ public class Controller { imageViewWishColor.setImage(new Image("/images/circle-all.png")); - PLAYER_STARTING_POINT = new Point2D(100.0, stage.getScene().getHeight() - 60.0 - CARD_HEIGHT); - AI_2_STARTING_POINT = new Point2D(stage.getScene().getWidth() - CARD_HEIGHT - 30, 50.0); - AI_3_STARTING_POINT = new Point2D(60.0, 50.0); + PLAYER_STARTING_POINT = new Point2D(100.0, stage.getScene().getHeight() - 50.0 - CARD_HEIGHT); + AI_2_STARTING_POINT = new Point2D(stage.getScene().getWidth() - CARD_HEIGHT - 30, 70.0); + AI_3_STARTING_POINT = new Point2D(60.0, 70.0); + + clearAll(); + + settings = new Settings(); + try + { + settings.load(); + } + catch(Exception e) + { + e.printStackTrace(); + } + } + public void setStage(Stage stage) + { + this.stage = stage; + } + + public void startGame() + { + menuItem2.setDisable(true); + + hideWishColor(); + hideInfo(); + hideLabelChallengeCounter(); + + drawCounter = 0; + iconDeck.setImage(createEmptyBackCard()); iconDeck.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { @@ -111,35 +147,9 @@ public class Controller } }); - hideWishColor(); - hideInfo(); - hideLabelChallengeCounter(); - setImageViewDirection(Direction.RIGHT); - labelAI1Name.setVisible(false); - labelAI2Name.setVisible(false); - labelAI3Name.setVisible(false); - buttonStart.setVisible(false); - - startGame(); - } - - public void setStage(Stage stage) - { - this.stage = stage; - } - - public void startGame() - { - hideWishColor(); - hideInfo(); - hideLabelChallengeCounter(); - - drawCounter = 0; - - // DEBUG - game = new Game(this, 2); + game = new Game(this, settings.getNumberOfAIs(), settings.getAiSpeed()); setLabelNames(game.getPlayer(), game.getAIs()); - game.newGame(5); + game.newGame(settings.getNumberOfStartingCards()); buttonStart.setOnAction(new EventHandler<ActionEvent>() { @@ -265,8 +275,17 @@ public class Controller labelChallengeCounter.setVisible(true); } + public void hideImageViewDirection() + { + imageViewDirection.setVisible(false); + labelDirection.setVisible(false); + } + public void setImageViewDirection(Direction direction) { + imageViewDirection.setVisible(true); + labelDirection.setVisible(true); + if(direction.equals(Direction.RIGHT)) { imageViewDirection.setImage(new Image("/images/DIRECTION_RIGHT.png")); @@ -979,7 +998,47 @@ public class Controller } } - //TODO reverse is not working correctly + public void openSettings() + { + try + { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/application/Settings.fxml")); + + Parent root = (Parent)fxmlLoader.load(); + Stage newStage = new Stage(); + newStage.setScene(new Scene(root, 600, 400)); + newStage.setTitle("Einstellungen"); + newStage.initOwner(stage); + + newStage.getIcons().add(icon); + SettingsController newController = fxmlLoader.getController(); + newController.init(newStage, this); + + newStage.initModality(Modality.APPLICATION_MODAL); + newStage.setResizable(false); + newStage.showAndWait(); + + } + catch(IOException e1) + { + e1.printStackTrace(); + } + } + + public void clearAll() + { + menuItem2.setDisable(false); + hideWishColor(); + hideInfo(); + hideLabelChallengeCounter(); + hideImageViewDirection(); + labelAI1Name.setVisible(false); + labelAI2Name.setVisible(false); + labelAI3Name.setVisible(false); + buttonStart.setVisible(false); + iconDeck.setImage(null); + iconLastCard.setImage(null); + } public void about() { @@ -990,5 +1049,5 @@ public class Controller Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); dialogStage.getIcons().add(icon); alert.showAndWait(); - } + } } \ No newline at end of file diff --git a/src/application/Main.java b/src/application/Main.java index e83f9ae..287fcb5 100644 --- a/src/application/Main.java +++ b/src/application/Main.java @@ -22,7 +22,8 @@ public class Main extends Application stage.setResizable(true); stage.setTitle("UNO"); - stage.setScene(scene); + stage.setScene(scene); + stage.setResizable(false); Controller controller = (Controller)loader.getController(); controller.setStage(stage); diff --git a/src/application/MainGUI.fxml b/src/application/MainGUI.fxml index e4034b7..979f874 100644 --- a/src/application/MainGUI.fxml +++ b/src/application/MainGUI.fxml @@ -3,6 +3,9 @@ <?import javafx.geometry.Insets?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.Label?> +<?import javafx.scene.control.Menu?> +<?import javafx.scene.control.MenuBar?> +<?import javafx.scene.control.MenuItem?> <?import javafx.scene.image.ImageView?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.HBox?> @@ -50,17 +53,17 @@ <Font name="System Bold" size="12.0" /> </font> </Label> - <Label fx:id="labelAI2Name" alignment="CENTER" contentDisplay="CENTER" layoutX="661.0" layoutY="95.0" prefHeight="19.0" prefWidth="106.0" text="Computer 2" textAlignment="CENTER"> + <Label fx:id="labelAI2Name" alignment="CENTER" contentDisplay="CENTER" layoutX="661.0" layoutY="107.0" prefHeight="19.0" prefWidth="106.0" text="Computer 2" textAlignment="CENTER"> <font> <Font name="System Bold" size="13.0" /> </font> </Label> - <Label fx:id="labelAI3Name" alignment="CENTER" contentDisplay="CENTER" layoutX="36.0" layoutY="95.0" prefHeight="19.0" prefWidth="106.0" text="Computer 3" textAlignment="CENTER"> + <Label fx:id="labelAI3Name" alignment="CENTER" contentDisplay="CENTER" layoutX="36.0" layoutY="107.0" prefHeight="19.0" prefWidth="106.0" text="Computer 3" textAlignment="CENTER"> <font> <Font name="System Bold" size="13.0" /> </font> </Label> - <Label fx:id="labelAI1Name" alignment="CENTER" contentDisplay="CENTER" layoutX="340.0" layoutY="16.0" prefHeight="19.0" prefWidth="106.0" text="Computer 1" textAlignment="CENTER"> + <Label fx:id="labelAI1Name" alignment="CENTER" contentDisplay="CENTER" layoutX="340.0" layoutY="38.0" prefHeight="19.0" prefWidth="106.0" text="Computer 1" textAlignment="CENTER"> <font> <Font name="System Bold" size="13.0" /> </font> @@ -70,5 +73,16 @@ <Font name="System Bold" size="14.0" /> </font> </Button> + <MenuBar fx:id="menuBar" prefHeight="25.0" prefWidth="304.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"> + <menus> + <Menu fx:id="menu1" mnemonicParsing="false" text="Menü"> + <items> + <MenuItem fx:id="menuItem1" mnemonicParsing="false" onAction="#startGame" text="Neues Spiel" /> + <MenuItem fx:id="menuItem2" mnemonicParsing="false" onAction="#openSettings" text="Einstellungen" /> + <MenuItem fx:id="menuItem3" mnemonicParsing="false" onAction="#about" text="Über" /> + </items> + </Menu> + </menus> + </MenuBar> </children> </AnchorPane> diff --git a/src/application/PathSettings.java b/src/application/PathSettings.java new file mode 100644 index 0000000..57b06aa --- /dev/null +++ b/src/application/PathSettings.java @@ -0,0 +1,66 @@ +package application; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.ArrayList; + +import tools.PathUtils; + +public class PathSettings implements Serializable +{ + private static final long serialVersionUID = 1L; + private String pathLogfile; + private ArrayList<String> folders; + + public PathSettings() + { + pathLogfile = ""; + folders = new ArrayList<String>(); + PathUtils.checkFolder(new File(System.getenv("APPDATA") + "/Deadlocker/PlayCount/")); + } + + public void save() throws Exception + { + FileOutputStream fileOut = new FileOutputStream(System.getenv("APPDATA") + "/Deadlocker/PlayCount/paths.config"); + ObjectOutputStream out = new ObjectOutputStream(fileOut); + out.writeObject(this); + out.close(); + fileOut.close(); + } + + public void load() throws Exception + { + FileInputStream fileIn = new FileInputStream(System.getenv("APPDATA") + "/Deadlocker/PlayCount/paths.config"); + ObjectInputStream in = new ObjectInputStream(fileIn); + PathSettings loaded = (PathSettings) in.readObject(); + in.close(); + fileIn.close(); + + this.pathLogfile = loaded.getPathLogfile(); + this.folders = loaded.getFolders(); + } + + public String getPathLogfile() + { + return pathLogfile; + } + + public ArrayList<String> getFolders() + { + return folders; + } + + public void setPathLogfile(String pathLogfile) + { + this.pathLogfile = pathLogfile; + } + + public void setFolders(ArrayList<String> folders) + { + this.folders = folders; + } +} \ No newline at end of file diff --git a/src/application/Settings.fxml b/src/application/Settings.fxml index e8b4a5e..f6de2a0 100644 --- a/src/application/Settings.fxml +++ b/src/application/Settings.fxml @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <?import javafx.geometry.Insets?> +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.CheckBox?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.Slider?> <?import javafx.scene.layout.AnchorPane?> @@ -8,8 +10,7 @@ <?import javafx.scene.layout.VBox?> <?import javafx.scene.text.Font?> - -<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.65"> +<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SettingsController"> <children> <VBox layoutX="45.0" layoutY="40.0" prefHeight="320.0" prefWidth="511.0"> <children> @@ -20,7 +21,7 @@ <Font name="System Bold" size="14.0" /> </font> </Label> - <Slider blockIncrement="1.0" majorTickUnit="1.0" max="3.0" min="1.0" minorTickCount="0" prefHeight="44.0" prefWidth="230.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> + <Slider fx:id="sliderNumberOfAIs" blockIncrement="1.0" majorTickUnit="1.0" max="3.0" min="1.0" minorTickCount="0" prefHeight="44.0" prefWidth="230.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> <HBox.margin> <Insets left="50.0" /> </HBox.margin> @@ -34,7 +35,7 @@ <Font name="System Bold" size="14.0" /> </font> </Label> - <Slider blockIncrement="1.0" majorTickUnit="1.0" max="10.0" min="3.0" minorTickCount="0" prefHeight="44.0" prefWidth="233.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> + <Slider fx:id="sliderNumberOfStartingCards" blockIncrement="1.0" majorTickUnit="1.0" max="10.0" min="3.0" minorTickCount="0" prefHeight="44.0" prefWidth="233.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> <HBox.margin> <Insets left="50.0" /> </HBox.margin> @@ -54,7 +55,7 @@ <Insets /> </HBox.margin> </Label> - <Slider blockIncrement="1.0" majorTickUnit="1.0" max="4.0" min="1.0" minorTickCount="0" prefHeight="44.0" prefWidth="233.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> + <Slider fx:id="sliderAISpeed" blockIncrement="1.0" majorTickUnit="1.0" max="4.0" min="1.0" minorTickCount="0" prefHeight="44.0" prefWidth="233.0" showTickLabels="true" showTickMarks="true" snapToTicks="true"> <HBox.margin> <Insets left="50.0" /> </HBox.margin> @@ -64,7 +65,45 @@ <Insets top="25.0" /> </VBox.margin> </HBox> + <HBox prefHeight="44.0" prefWidth="412.0"> + <children> + <Label alignment="TOP_RIGHT" contentDisplay="TOP" prefHeight="20.0" prefWidth="150.0" text="Regeln:"> + <font> + <Font name="System Bold" size="14.0" /> + </font> + <HBox.margin> + <Insets /> + </HBox.margin> + </Label> + <VBox> + <HBox.margin> + <Insets left="50.0" /> + </HBox.margin> + <children> + <CheckBox fx:id="checkBoxRule1" mnemonicParsing="false" text="+2 Karten können verlängert werden" /> + <CheckBox fx:id="checkBoxRule2" mnemonicParsing="false" text="+4 Karten können mit +2 Karten verlängert werden"> + <VBox.margin> + <Insets top="10.0" /> + </VBox.margin> + </CheckBox> + <CheckBox fx:id="checkBoxRule3" mnemonicParsing="false" text="+4 Karten können mit +4 Karten verlängert werden"> + <VBox.margin> + <Insets top="10.0" /> + </VBox.margin> + </CheckBox> + </children> + </VBox> + </children> + <VBox.margin> + <Insets top="25.0" /> + </VBox.margin> + </HBox> </children> </VBox> + <Button layoutX="264.0" layoutY="348.0" mnemonicParsing="false" onAction="#save" text="Speichern"> + <font> + <Font name="System Bold" size="12.0" /> + </font> + </Button> </children> </AnchorPane> diff --git a/src/application/Settings.java b/src/application/Settings.java new file mode 100644 index 0000000..1fa40c7 --- /dev/null +++ b/src/application/Settings.java @@ -0,0 +1,116 @@ +package application; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; + +import tools.PathUtils; + +public class Settings implements Serializable +{ + private int numberOfAIs; + private int numberOfStartingCards; + private int aiSpeed; + private boolean allowChallengePlusTwo; + private boolean allowChallengePlusFourWithTwo; + private boolean allowChallengePlusFourWithFour; + + private static final long serialVersionUID = 1L; + + + public Settings(int numberOfAIs, int numberOfStartingCards, int aiSpeed, boolean allowChallengePlusTwo, boolean allowChallengePlusFourWithTwo, boolean allowChallengePlusFourWithFour) + { + this.numberOfAIs = numberOfAIs; + this.numberOfStartingCards = numberOfStartingCards; + this.aiSpeed = aiSpeed; + this.allowChallengePlusTwo = allowChallengePlusTwo; + this.allowChallengePlusFourWithTwo = allowChallengePlusFourWithTwo; + this.allowChallengePlusFourWithFour = allowChallengePlusFourWithFour; + } + + public Settings() + { + PathUtils.checkFolder(new File(System.getenv("APPDATA") + "/Deadlocker/UNO/")); + File file = new File(System.getenv("APPDATA") + "/Deadlocker/UNO/settings.config"); + if(!file.exists()) + { + createStandardValues(); + try + { + save(); + } + catch(Exception e) + { + e.printStackTrace(); + } + } + } + + public void createStandardValues() + { + numberOfAIs = 1; + numberOfStartingCards = 7; + aiSpeed = 2; + allowChallengePlusTwo = false; + allowChallengePlusFourWithTwo = false; + allowChallengePlusFourWithFour = false; + } + + public void save() throws Exception + { + FileOutputStream fileOut = new FileOutputStream(System.getenv("APPDATA") + "/Deadlocker/UNO/settings.config"); + ObjectOutputStream out = new ObjectOutputStream(fileOut); + out.writeObject(this); + out.close(); + fileOut.close(); + } + + public void load() throws Exception + { + FileInputStream fileIn = new FileInputStream(System.getenv("APPDATA") + "/Deadlocker/UNO/settings.config"); + ObjectInputStream in = new ObjectInputStream(fileIn); + Settings loaded = (Settings) in.readObject(); + in.close(); + fileIn.close(); + + this.numberOfAIs = loaded.getNumberOfAIs(); + this.numberOfStartingCards = loaded.getNumberOfStartingCards(); + this.aiSpeed = loaded.getAiSpeed(); + this.allowChallengePlusTwo = loaded.isAllowChallengePlusTwo(); + this.allowChallengePlusFourWithTwo = loaded.isAllowChallengePlusFourWithTwo(); + this.allowChallengePlusFourWithFour = loaded.isAllowChallengePlusFourWithFour(); + } + + public int getNumberOfAIs() + { + return numberOfAIs; + } + + public int getNumberOfStartingCards() + { + return numberOfStartingCards; + } + + public int getAiSpeed() + { + return aiSpeed; + } + + public boolean isAllowChallengePlusTwo() + { + return allowChallengePlusTwo; + } + + public boolean isAllowChallengePlusFourWithTwo() + { + return allowChallengePlusFourWithTwo; + } + + public boolean isAllowChallengePlusFourWithFour() + { + return allowChallengePlusFourWithFour; + } +} diff --git a/src/application/SettingsController.java b/src/application/SettingsController.java new file mode 100644 index 0000000..476bc7a --- /dev/null +++ b/src/application/SettingsController.java @@ -0,0 +1,100 @@ +package application; + +import javafx.fxml.FXML; +import javafx.scene.control.CheckBox; +import javafx.scene.control.Slider; +import javafx.stage.Stage; +import javafx.util.StringConverter; + +public class SettingsController +{ + @FXML private Slider sliderNumberOfAIs; + @FXML private Slider sliderNumberOfStartingCards; + @FXML private Slider sliderAISpeed; + @FXML private CheckBox checkBoxRule1; + @FXML private CheckBox checkBoxRule2; + @FXML private CheckBox checkBoxRule3; + + private Stage stage; + private Controller controller; + + public void init(Stage stage, Controller controller) + { + this.stage = stage; + this.controller = controller; + sliderAISpeed.setLabelFormatter(new StringConverter<Double>() + { + @Override + public String toString(Double n) + { + if(n < 1.5) + return "Langsam"; + if(n < 2.5) + return "Mittel"; + if(n < 3.5) + return "Schnell"; + + return "Sehr Schnell"; + } + + @Override + public Double fromString(String s) + { + switch(s) + { + case "Langsam": + return 1d; + case "Mittel": + return 2d; + case "Schnell": + return 3d; + + default: + return 4d; + } + } + }); + + Settings settings = controller.settings; + + sliderNumberOfAIs.setValue((double)settings.getNumberOfAIs()); + sliderNumberOfStartingCards.setValue((double)settings.getNumberOfStartingCards()); + sliderAISpeed.setValue((double)settings.getAiSpeed()); + checkBoxRule1.setSelected(settings.isAllowChallengePlusTwo()); + checkBoxRule2.setSelected(settings.isAllowChallengePlusFourWithTwo()); + checkBoxRule3.setSelected(settings.isAllowChallengePlusFourWithFour()); + + + // stage.setOnCloseRequest(new EventHandler<WindowEvent>() + // { + // @Override + // public void handle(WindowEvent event) + // { + // event.consume(); + // } + // }); + } + + public void save() + { + int numberOfAIs = (int)sliderNumberOfAIs.getValue(); + int numberOfStartingCards = (int)sliderNumberOfStartingCards.getValue(); + int aiSpeed = (int)sliderAISpeed.getValue(); + + boolean allowChallengePlusTwo = checkBoxRule1.isSelected(); + boolean allowChallengePlusFourWithTwo = checkBoxRule2.isSelected(); + boolean allowChallengePlusFourWithFour = checkBoxRule3.isSelected(); + + controller.settings = new Settings(numberOfAIs, numberOfStartingCards, aiSpeed, allowChallengePlusTwo, allowChallengePlusFourWithTwo, allowChallengePlusFourWithFour); + try + { + controller.settings.save(); + controller.settings.load(); + } + catch(Exception e) + { + e.printStackTrace(); + } + stage.close(); + } +} \ No newline at end of file diff --git a/src/logic/Game.java b/src/logic/Game.java index d55a95b..4cd3fc8 100644 --- a/src/logic/Game.java +++ b/src/logic/Game.java @@ -27,10 +27,12 @@ public class Game private int counter; private boolean running; private boolean showingInfo; + private int aiSpeed; - public Game(Controller controller, int numberOfAIs) + public Game(Controller controller, int numberOfAIs, int aiSpeed) { this.controller = controller; + this.aiSpeed = aiSpeed; deck = new Deck(); deadDeck = new DeadDeck(); player = new Player("Spieler", this); @@ -182,7 +184,18 @@ public class Game try { - Thread.sleep(500); + switch(aiSpeed) + { + case 1: Thread.sleep(500); + break; + case 2: Thread.sleep(250); + break; + case 3: Thread.sleep(50); + break; + case 4: Thread.sleep(0); + break; + default: break; + } } catch(InterruptedException e) { @@ -236,7 +249,7 @@ public class Game private void end(String name) { controller.clearAllDecks(ais); - + controller.clearAll(); System.err.println("Player " + name + " wins!"); running = false; @@ -267,8 +280,6 @@ public class Game dialogStage.getIcons().add(controller.icon); alert.show(); } - - } public Deck getDeck() -- GitLab