From 72533b290953c84e06ddc7362346f244202f135e Mon Sep 17 00:00:00 2001 From: deadlocker8 <goldi.96@gmx.de> Date: Mon, 11 Apr 2016 20:15:57 +0200 Subject: [PATCH] -started animations -added card-draw if click on deck -added transparency to invalid cards in deck --- .classpath | 1 + class/application/ColorChooser.fxml | 20 ++ .../ColorChooserController$1.class | Bin 0 -> 1356 bytes .../ColorChooserController$2.class | Bin 0 -> 1353 bytes .../ColorChooserController$3.class | Bin 0 -> 1354 bytes .../ColorChooserController$4.class | Bin 0 -> 1355 bytes .../application/ColorChooserController.class | Bin 0 -> 1283 bytes class/application/Controller$1.class | Bin 1595 -> 1482 bytes class/application/Controller$2.class | Bin 0 -> 3337 bytes class/application/Controller$3.class | Bin 0 -> 1310 bytes class/application/Controller$4.class | Bin 0 -> 1297 bytes class/application/Controller.class | Bin 5977 -> 10738 bytes class/application/MainGUI.fxml | 6 +- class/images/SEVEN-GREEN.png | Bin 5263 -> 9872 bytes class/logic/AI.class | Bin 5350 -> 5515 bytes class/logic/Game.class | Bin 6186 -> 6453 bytes class/logic/Player.class | Bin 4351 -> 4412 bytes src/application/ColorChooser.fxml | 20 ++ src/application/ColorChooserController.java | 62 ++++ src/application/Controller.java | 269 ++++++++++++++++-- src/application/MainGUI.fxml | 6 +- src/images/SEVEN-GREEN.png | Bin 5263 -> 9872 bytes src/logic/AI.java | 6 +- src/logic/Game.java | 49 ++-- src/logic/Player.java | 17 +- 25 files changed, 392 insertions(+), 64 deletions(-) create mode 100644 class/application/ColorChooser.fxml create mode 100644 class/application/ColorChooserController$1.class create mode 100644 class/application/ColorChooserController$2.class create mode 100644 class/application/ColorChooserController$3.class create mode 100644 class/application/ColorChooserController$4.class create mode 100644 class/application/ColorChooserController.class create mode 100644 class/application/Controller$2.class create mode 100644 class/application/Controller$3.class create mode 100644 class/application/Controller$4.class create mode 100644 src/application/ColorChooser.fxml create mode 100644 src/application/ColorChooserController.java diff --git a/.classpath b/.classpath index 92aea57..bcd2772 100644 --- a/.classpath +++ b/.classpath @@ -3,5 +3,6 @@ <classpathentry kind="src" path="src"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.fx.ide.jdt.core.JAVAFX_CONTAINER"/> + <classpathentry combineaccessrules="false" kind="src" path="/_Tools"/> <classpathentry kind="output" path="class"/> </classpath> diff --git a/class/application/ColorChooser.fxml b/class/application/ColorChooser.fxml new file mode 100644 index 0000000..38868c9 --- /dev/null +++ b/class/application/ColorChooser.fxml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.Label?> +<?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.shape.Rectangle?> +<?import javafx.scene.text.Font?> + +<AnchorPane prefHeight="300.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.ColorChooserController"> + <children> + <Label layoutX="39.0" layoutY="29.0" text="Wähle deine Wunschfarbe"> + <font> + <Font name="System Bold" size="18.0" /> + </font> + </Label> + <Rectangle fx:id="rectRed" arcHeight="5.0" arcWidth="5.0" fill="#ff1f1f" height="58.0" layoutX="170.0" layoutY="101.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" width="58.0" /> + <Rectangle fx:id="rectYellow" arcHeight="5.0" arcWidth="5.0" fill="#ffd821" height="58.0" layoutX="73.0" layoutY="101.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" width="58.0" /> + <Rectangle fx:id="rectGreen" arcHeight="5.0" arcWidth="5.0" fill="#44a119" height="58.0" layoutX="170.0" layoutY="190.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" width="58.0" /> + <Rectangle fx:id="rectBlue" arcHeight="5.0" arcWidth="5.0" fill="#215eff" height="58.0" layoutX="73.0" layoutY="190.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" width="58.0" /> + </children> +</AnchorPane> diff --git a/class/application/ColorChooserController$1.class b/class/application/ColorChooserController$1.class new file mode 100644 index 0000000000000000000000000000000000000000..85395f688ebd45b8f0700226b84bc5c7cf105513 GIT binary patch literal 1356 zcmX^0Z`VEs1_l!bM|K7#Mh2C{f`XjP<iwK9{5*Z<{G9wE=ZyUP;?yGN{JfH){G6QB zA{9e+1{OvJfvm)`ME#t^ymWp4q^#8B5_SeQMg~ccXj+ASYFTPtiM}g{^hnH0$w@6@ zWMC`F$ShVdU}RA7A#95^BLiPqVvb5O++Ico2{e5$7g;khaDvnpmn5dAGBSwxKpg?* z>j#5Gtr;2EY%=pQOY9gKf;G_0!RAYAG&OL$uo<oy#>l|poS%})$-u}U$iu+SzyV?j z^DuBSaDiB&JPh0nJX{RS4B|WtybKbI49prJP5eHYd8vM-xk;%-A&E&jsf-LlKKaRs zIbn%KnIJw?kOdTSj0|dMZo=kn6+@6$Gr(ca$e^SFcW!cOUaEd(UO{PzzHfeMaVj`& ztTn?p859_l*clWV8Mt%u(=(GHvChMw%%H-^z!vH1<KrLB$iVA^Bx%jbpvIuV&Y;f7 zAch)~uu$S*&;)7cPtM3MPR$F?EY1L@B`yYS23>Xr9YzKr%qZev&;tbwYjRG0aVjGN zD>w-;GRPC~0V9Jr+>>A}kW^=_8OF|F%*Y@Mvk0sIxfmE3OnDe&8RQrlxPtRbi;`2_ zGC|QG4R$X^+Sdb_#>l`KoSB}NSW;S)%E;gcb{}#^um+1@%>*_usbZ|ov9_~jWZ-wr z0|h~5Ub=5;Nk)DOJA(})gA!^uV~cqn20I3OMg|s8DraQShX)FBE<j5_u;{V|r9~dk zyu8#R=bXgi;?!aW1qMb2W(GzERt9DP0Z@WwU=R=jC1)_r&A`LJz`)GFz`)DE$H2(I z&%nUo#K6SB!oa{FqNTl+K|o7qD}#`h?p6j7t?dkA8yOfFm>47(7#O%1m>3wqIz$+x z7#J9M7#Kl%7^E3wz~ZtDa$s2o20sQSuv#IlEet}N805DysA_Ft5ZT6{g)of|>;_2& zE(R$EK?Z5CiDD34P!ky#gc$T03>X*%92sO8454OgLe1vX(mudow2i?8VI&*aL5yId mKu%?0FatZ@oWTN2TQXQNFfgz%SToo%IDkFG2-d;CzyJUWhFE+6 literal 0 HcmV?d00001 diff --git a/class/application/ColorChooserController$2.class b/class/application/ColorChooserController$2.class new file mode 100644 index 0000000000000000000000000000000000000000..fc6c75929efa6cda63727bb7e002f61112616edc GIT binary patch literal 1353 zcmX^0Z`VEs1_l!bM|K7#Mh2C{f`XjP<iwK9{5*Z<{G9wE=ZyUP;?yGN{JfH){G6QB zA{8Tc1{OvJfvm)`ME#t^ymWp4q^#8B5_SeQMg~ccXj+ASYFTPtiM}g{^hnH0$w@6@ zWMC`F$ShVdU}RA7A#95^BLiPqVvb5O++Ico2{e5$7g;khaDvnpmn5dAGBSwxKpg?* z>j#5Gtr;2EY%=pQOY9gKf;G_0!RAYAG&OL$uo<oy#>l|poS%})$-u}U$iu+SzyV?j z^DuBSaDiB&JPh0nJX{RS4B|WtybKbI49prJP5eHYd8vM-xk;%-A&E&jsf-LlKKaRs zIbn%KnIJw?kOdTSj0|dMZo=kn6(f*WGr(ca$e^SFcW!cOUaEd(UO{PzzHfeMaVj`& ztTn?p859_l*clWV8Mt%u(=(GHvChMw%%H-^z#Qc2!pOkugCt|k$)Lud!Oo!0$RLIq zjj$l%VbBEW<xkGYFHX%1&n(UWCnPQgZ3bO-1|3EQA<X#UVbBAG3TtvsesL-z11mWF zFfzy!a6Ti0INXO|Es!K<tr^D7V9dxM3$qBT=eZad8BBQ?WEtcb8MuP;ON)|I-7-OO zAPsgeM#9$vna0S#8JwA(msnC-l*-892X-HFF0clRV9fzGFsWj!&at+$W@O-Z%>xBN zW?s5)YDq?Z3Oj=hBZCrZIAe=;9tJxGdqxHpP!eZk(1!;Kauz^KJ+SDq1|>uu&%C_U zBIlgM;^Nd|1_cI224)6E237`U0Rd2IW?&Ey0;Odz&CS5Wz`(%Fz`(%Ez{kMIz|X+I z;Kabhz{0@5Aflzcl|evDXDfq{mhM&t5v}bEVjCG47?>C&85kJ27?>Csz&hj@q!<_& zco-N#dKjb`WWeIG402#u1_nO{Ca_u|tt|{fn;7J`GN@{8VG!BIpoK7v59|hI1}+8_ z20;c@u!&+2T~HGl7=#$~84MU01soY<84RIjYeLQD)Y3k{V6=_F1Ysl_*g=e7qd-n& jVK4(b-kiY#Oj|NoF)%Q&FjzC#GB|)e#0b{Gz`y_i2D?|H literal 0 HcmV?d00001 diff --git a/class/application/ColorChooserController$3.class b/class/application/ColorChooserController$3.class new file mode 100644 index 0000000000000000000000000000000000000000..5230175f9388b5b1ab8302573a7f15d4ca958bd8 GIT binary patch literal 1354 zcmX^0Z`VEs1_l!bM|K7#Mh2C{f`XjP<iwK9{5*Z<{G9wE=ZyUP;?yGN{JfH){G6QB zA{AqH1{OvJfvm)`ME#t^ymWp4q^#8B5_SeQMg~ccXj+ASYFTPtiM}g{^hnH0$w@6@ zWMC`F$ShVdU}RA7A#95^BLiPqVvb5O++Ico2{e5$7g;khaDvnpmn5dAGBSwxKpg?* z>j#5Gtr;2EY%=pQOY9gKf;G_0!RAYAG&OL$uo<oy#>l|poS%})$-u}U$iu+SzyV?j z^DuBSaDiB&JPh0nJX{RS4B|WtybKbI49prJP5eHYd8vM-xk;%-A&E&jsf-LlKKaRs zIbn%KnIJw?kOdTSj0|dMZo=kn6=RTBGr(ca$e^SFcW!cOUaEd(UO{PzzHfeMaVj`& ztTn?p859_l*clWV8Mt%u(=(GHvChMw%%H-^z~bZ+>dMH#>w_d^&B>s~pux_d&d4B! z8jr9r;$hGPY35JP$S+RK3(qXh0H-7_25kmib_N|r1|iG{;$hGO1q*9(PJVGJBLgcq z0WmVj6L3ExgE-uaU@ed|XRR5=&S1>QAPchytM9oO7#U1?7-Sjb7#X;N^Gl18Q{6H_ zksu9rFGkAO1DVFiz!{vGo|jlsT9nGj;0JaeayGCAi(t(HHZZATtj@8vvu0%Acg+I@ zL1tdMZ)!<KehNE-4I_gRYB*zycOC{i275*Z7El^zWYC8P3UVGmOFppZvIeC@9?!hI z)FS7c#Ny)AVg>~UMh0dEMg~>}W&r_Ea%Nx<5CSD;FwM=t!@$76%)r3F%fQFL$iUCQ zz~IEd#K6M9z#yWfy_G>gOJ^&Cke2RN1`)083}PD@7#NrsBpDbOxEPoi7{EF-7^D~& z7<d>ML3$XZ8DzlXvJ7%ySq26_1}3mtA+0S8LYo-mw=$?|ZDA1E#-N2TjSuVwT?Q@& zJqAGreXxmQ5M59c85o2Z^cf5o7zG>|WEl*hW@|#t=G4+Yz+kkE!31F>8`wdNV52}z kWnnM_JKmhZ0!&*nSTQg#urOFN*fKbPJ;Vss!N9-(0Kv^z8UO$Q literal 0 HcmV?d00001 diff --git a/class/application/ColorChooserController$4.class b/class/application/ColorChooserController$4.class new file mode 100644 index 0000000000000000000000000000000000000000..a3193630ce7f52340aabead89fafc6e35d77d3e1 GIT binary patch literal 1355 zcmX^0Z`VEs1_l!bM|K7#Mh2C{f`XjP<iwK9{5*Z<{G9wE=ZyUP;?yGN{JfH){G6QB zA{7&M1{OvJfvm)`ME#t^ymWp4q^#8B5_SeQMg~ccXj+ASYFTPtiM}g{^hnH0$w@6@ zWMC`F$ShVdU}RA7A#95^BLiPqVvb5O++Ico2{e5$7g;khaDvnpmn5dAGBSwxKpg?* z>j#5Gtr;2EY%=pQOY9gKf;G_0!RAYAG&OL$uo<oy#>l|poS%})$-u}U$iu+SzyV?j z^DuBSaDiB&JPh0nJX{RS4B|WtybKbI49prJP5eHYd8vM-xk;%-A&E&jsf-LlKKaRs zIbn%KnIJw?kOdTSj0|dMZo=kn6%&wGGr(ca$e^SFcW!cOUaEd(UO{PzzHfeMaVj`& ztTn?p859_l*clWV8Mt%u(=(GHvChMw%%H-^!0I04>gvbH!0Uq~XU)l=#-PE@pw7r3 zh8mHuK;mK01nK5a&d4uL%?r;g&HyJRE(UD|U3LZ?Mg}3w7~)~j1BDA~a!!76DkB3c zI0Z2>$P@4YBZD~Hk6<m3L}#rT#?D~O$RG=|2&?zG7#JB$c^G6F<QN&ag7Zs@l2hF> zL9rkWb}vTK*8`cx$iNw#nVy$eQd*SC$lwQdA96mh28&?L12!<JVyw=wwzFnr;CIaf z1wm$Bx^HSpMt%xAgAF5t5^6YOi+COeI|h431{P2vXJpWa2MTf~KubTc=&}YSMIO(* zywoD+oW$bd)M5q&21W*E21W)}24(>PP<m!y5D)^TW-!goz{9}6z|6qFz{|kLz{tSQ zz`)?dz{J49z`!7)rM;CwKuc#UgOHZ)Rt6ER?F?cY85kIt7$g}O7`Pai7#P4hj2NUC z7#MgM7(sd%q#0zu;<5~KU|9wRKL#eSS|P113__b2<hL@YYHeW<*~XxSFpUrF26F~3 z1`7s321~GsVh~+W6B!tU81xwo7#IZ{8Dtp@p=N7B&F0k7KEPnKjll$ABpcX4j9{Zc lPGw;*13TWF!2(QMGFUM%Ft9LKGuSdXfIY+r*1^EQ003~fSdIVy literal 0 HcmV?d00001 diff --git a/class/application/ColorChooserController.class b/class/application/ColorChooserController.class new file mode 100644 index 0000000000000000000000000000000000000000..ba11f7c2f89e2ed9473d440537ec127f2ec99b69 GIT binary patch literal 1283 zcmX^0Z`VEs1_l!bD|QAZMh2zCf`XjP<iwK9{5*Z<{G9wE=ZyUP;?yGN{JfH){G6QB zB6bEAMh1bb#Ii*FoW#6zegCAa)Z`LI2Ckyi<dVqLoSgh}Mg}<_kb<-d{o>@*yj1<- zjKqRe{h-w3lEl39oK$N@2Fak(ypqh^)UeFr%%q%D$Gp7!60ohsj0{3B&1n_6Ir?r9 zzCPBB4D2A|gHlr%88|>Jr<~GMMg~q0)4eD)HII>j%_cK1v&4>(fmuT{jFExGIX@+p zi-DOzfQNyHftQhi-zPIK)vq)+DYYmhF)1e%WKVu_Voq3MQ6`8F6=W&N$Sh`LQ1Kxg z64s0iEFe1>8T2(^PA)D<Oi$Gh29efiM!*8lS~HB3fssLihk=!Wjh#V?kwJy9T`GoL z43Z2oAiu~mG6ZX&nT;)?aN3W}t(sw64Dt+$><kKw3^MrQj)y^sL79<3usF5EKhHP6 zv^do{Co?%46ftt}P)IFH%`4G&1(6<!c_}%mMNm(x@-T3MJgrWgr;WH6)EHzyp{2#c zzy;E%L!3rqE(UFgMtvRzZjeSp;xw9YF&Hq&Ffy=$Ba)Fp1Y2M+GH@ls^8+J;1X^Uk zBbt$cD>%QjC^^+F6O`Vhv1cefP;fIc@Ob9sr4~8oBo-H^7BeU^FfuSRFfgz%FoBW@ z10w@F0|Nsa10w?m0|NsSC=@ZoxWMwL>bS9pF@iD#10w?;0|SFT10w??0|NuA)^-N| zjbNh%p%yVPa4`rmFfi~y6fg)gh%hiPFfxcTh(R?^W?%z5(p75<gZOR+$w)07?d=TG z+Zg1uwlJvdW>A9&Xg~xscQa^11au(+db=46AOc3)7~~L^i!rb=FffQP2r|eqC^2X- z7&90#xG>m)9isrT5b78P23H1S1{1IYT^URn%ovy$m>A5#-mqY>WME)WVqjsAWPkuQ M2*sccr41l70964uqW}N^ literal 0 HcmV?d00001 diff --git a/class/application/Controller$1.class b/class/application/Controller$1.class index 51b66919e71c48372e4c9fa9a1ea11909dccc0b2..154ab12fbf846e42a90063e45e5a95853ff7e53a 100644 GIT binary patch delta 975 zcmdnZbBdem)W2Q(7#J8#7$PQeRr0XeWaed-*fBClYxqnQ5R<dk3}a+qan4Uk<z!%F z;N@XpXW-ysU}oUwVc=vCn9Rpm&&|mo!63!XAj!xeHc>#Vo`*r2L57imB|R}Wm63tR zCnrBWGg;p~F*ntki$RV-ft^8~k%0>#%EO?@pv1_)nOPiEnwOWEm(Iw*tf3hNQmewl zpvs`e$RLoOTH;(<RFs-m5|EQvnOX!^;t5is!NZ`*pvB0*nVt%fo4kNYtX_^mhlfFz zL64DvJw3I=B{eylk%3P`6Y3TaAM6$b9tJ}OBSr>pu%g5ikOU)x5RyWOm^BxJ34<9s zgDKqMAeB4}<_s2$3>+y%iRI3TMJbF7avBgD>h)bxp*mr9f)rSDF<3F!urpXQGVnnB z5AhAiAX`QTeyDDJuv*P9kZOC7Hyjul#5FX1vJ%S@^-D`KbMzgHiV`b*GK)*BxfmoE zoOl?V8C)0{c#EMyP-Fmd9wUQ<239>FljRuPco^In1Q;1uK+d16$gIQ18(fl@ob8)f z5R#ablRCMZS%$@zkwJE{9*Zm&7Xu@MKM#W_gV^Lt%oFOvz&b%Gg^_{BGcPZ-$T=sm zxHz?#L4kphfti7kft7(#Kme3j7#J9s85kHi89+vGGcYh%FfcJNF)%Q2X=!g|;L+O7 zz_*csfq{uZ5F`ec0qM445Mp3p;9+0{iwZM{FfcGMg6wBtWZ<r6U|?9wzzkL#r?rKF zXA6V)HU`<548d@YGRp!6S2#}{&eDdn^tUk>Z)30o@j)1Dg!(oHyKM}PaK0<ZY0O}! zi7~J;FfiCNNHaJx)Y~&SF$6QXGsH4@g54<waS8*(oeT_d3?2-g42%q33=E)<_{|V2 z;K(4#;0<y-0|SF5Gzd7gv=1=&Y-8{PSpx|HHn5Kw!KQ*jiG?8m96EsvL0~$VA%uZJ VjDdwgf+3V492_`|U@Z&`3;-f*w+sLP literal 1595 zcmX^0Z`VEs1_l#`7<L9GMh1z*f`XjP<iwK9{5*Z<{JfH){G6QBA{9e+1{OvJfvm)` zME#t^ymWp4q^#8B5_SeQMg~ccXj+ASYFTPtiM}g{^hnH0$w@6@WMC`F$ShVdU}TW+ z!EUlOBLinyVvb5#VoqiXBLia;BLfGBpPX2f!pOkmlarsGnXK=eSd?PT$iQZknU`5& z$H<_efy=lkWF4Aej0`N!`6;QK42%qdJPhm%93Yl34+AFy7l<Xw!@$kJ!^ObNAkM?U z%OJtXz^nn%#P5@tm+DuVo0M7<l9-f}%E%z(lb@WJ6P8$%3F1QqSwOyHWRSw)7!^a1 zn=`;+!N{Pb;R6k*;^fr4RQ=4ng3=Ow-~7_zRB)JCYld+#C@?6oGbl1La3TE7!=TKd z!pOj$o>~%8Spag1h9;6HL1NaN3~CG-><sFR415TUAQ>J8O$IGS29|J79~VXj0d##_ z3~CHIJPf)FdW;NgsfDG9ImL_&q7a87$FsF&6vzq#9tJ~@ahxtej^Xic{-Hsf48{zm z><lK13}V>hmxsZO!JLtSB|R}W6%n8AiMgrPTnv^B*6a*caNmMNc^GUMY#A9i(^E?V zauO>+X-EL>Ux<h`7lS>6BRhiwBLfe_w-9k21}6q*Mh1?8oWx2{f?;Hk(m?XCHFBtd zEq4X!aARbUK~V<NlAn`bWDQCTtl)&r$RJN3{umi}@>0vgGmA5vL3$Y(cu|aEWZ(@h zNlec6O)LN>A9e;`Mh0$(2cR0nAt8^Nm#j6z*ck#C8D#OM9xet(h9DjWSq3>q2Cm@z z(xT*4w@gsN<wxXVJ&*~E44lE4>3NAIrA4WX41Qogp+q%U1l0-9>}&&*!jXXOtQi^j zUGtK2@{2R`(tT4)GV)V+7$O;>7#X;di&7IyQX$czixS>ZnrO!6CZ?zAdxFTY%+zvg zMg|_wyu8#R=bXgi;?!aW1qMb2W(GzERt9DP0Z^7^U=R=jWoR(X&A`LJz`)GFz`)DE z$H2(I&%nUo#K6SB!oa{FqNTl+K|o7pD}#`h?p6j7t?dkA8yOfFm>47(7#O%1m>3wq zI{X==7#J9M7#Kl%7^E3wz~ZtDa$s2ohQ$obU>jVtwlE0IWUy!S)!M=!vW-E06NBnD z2JKl4f^fe6HU{l*tt|`!TNsR>)HVhSh_s!~HU<}v{mfwd#TZx_7#Knr*crkYI2j@s z)EQzKoEhT5Zc%{P2XzYrgA0Q@g9ig611EzOgC~O*0~3Qc0|Ns$1JfS{b#?}yUkuU$ zjtsI4eozN%GBANX$El@#fWdzoLm<djh_BhezGMX30`fl#Lohf*LKs59bQnW80|NsK SgE2z{Lo_&)7{NLi7#IL?h<~X7 diff --git a/class/application/Controller$2.class b/class/application/Controller$2.class new file mode 100644 index 0000000000000000000000000000000000000000..6a6a82ff33f514c2bb8a046e5a3be2ca0f72c852 GIT binary patch literal 3337 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 literal 0 HcmV?d00001 diff --git a/class/application/Controller$3.class b/class/application/Controller$3.class new file mode 100644 index 0000000000000000000000000000000000000000..091fa891b3c63021ded8942c8403116b95207def GIT binary patch literal 1310 zcmX^0Z`VEs1_l!b7j_0FMh1z*f`XjP<iwK9{5*Z<{JfH){G6QBA{AqH1{OvJfvm)` zME#t^ymWp4q^#8B5_SeQMg~ccXj+ASYFTPtiM}g{^hnH0$w@6@WMC`F$ShVdU}TW+ z!EUlOBLhcSVvb63Vo?es1CLKmetKrIzH?$xiZvsH07xb;wLCntIKw$VC%=f1ffuF% z#I<H*V6(~0%Pg^DWH8adWdlqH$V?a;tXngTk%7fIKP8oufssLwhk>1e1H=;MVc=xo z0<lDS7`PdDxEPoj#CaHa86+4Pm^DC}_<b_-QvFJElTwR95|eUL85x9p@{<#D!V-%z zL42qn3&`_~3{p58reX|oe+D?H7#U<Wd{DyCF&PvG;Lx<z4C7=_U{GRbP-J8f!yb-2 z49W~Dj0`O4iMgqWaCA@1O||A?P-D<wXHaKk;DUrMNR)>`lR=A-fipd|Bp@fT5)@Yg z8k*4HfrwahG3YSpu`}p0GVnk&Ld1C(^cf5o88`}Z5-ULw#mFF~0o4fNTEk2Mb3m3G zfpi!%GRUAPgK2?B1uHlKfx-)CKrk|hqXiQzfY=!<7#SpRY2;#HWU%64kY$i#WZ(+U zFD*(=b;|_B8$TkA>wz>gGH?cGrspM=loq8jGI)Zc1UbQ5gGI0=b{kYF<oL6*W@O-Z z%}dV7FV4(M_f0Ly$WP&6aAa^|WDv^DFG~f5R7k!{YGR5@YH~IsgB9G9#mT98srs3@ ziRr2Oo**(TGqv0r7IausG>>OqUTTqZPGWI!YB7TX10w@710w?~1G9htD1|dH2nd1F zH<;#T;9+23U}j)o;AP-rU}WHDU|?`!U}9ilU|<l@(%#A-prx~wK}bt?D}#vEb_TJH z3=9lR43Z2C3|tIM3=Ci$hZ&?87#MgM7(sd%q#0zu;<5~KU|9x+2nJ@bS_Q2w3<6si z<e}6y234&s3_{x&w6(S{h-_mpL^t~cgFM4Yu-Re|{ZO+R7!(*x7)%)$1soY<8O)%z zXfiN?RdH%*A7C)w#$bssjt%TIMzB#JN3$?kgS}zHU<;=080;As7+4q-7#tX!!Cqqo J>tJAD005)SJuUzM literal 0 HcmV?d00001 diff --git a/class/application/Controller$4.class b/class/application/Controller$4.class new file mode 100644 index 0000000000000000000000000000000000000000..5200445f2fd0a8b6748aea9edda41cde39bc77c0 GIT binary patch literal 1297 zcmX^0Z`VEs1_l!b7j_0FMh1z*f`XjP<iwK9{5*Z<{JfH){G6QBA{7&M1{OvJfvm)` zME#t^ymWp4q^#8B5_SeQMg~ccXj+ASYFTPtiM}g{^hnH0$w@6@WMC`F$ShVdU}TW+ z!EUlOBLiDmVvb5;CL;rvPfmV%X0pDcr!^x32S_wIu_%R+fd?w?oLH1%&B!1ClF3Ug z56>*laL&)kFJffig{c5>K}OnS=4F=HF*4X`;IbF0!_m_k$^x4XV}s4n3}a+qan4Uk z<z!%F5awZEXW#&_M0prE8Mr_!aUKS41|ASgl81qpfsc!UnL(O|fuBK!k%3tQq@CX< zGcVPzG&d==C?qi{CzX*w$R|HJF()jsC=<ko3bKHLiIG7HhhtStKz_;q2Pz|jtcDLt zh&v{OVhbGZ)|z3Q3@Qw2><p@m3}V<roQFZ3L4%QjB|R}W6%n@XiMgrPTnt(aI_wPE zj0_yGnBZa1Wzb_};3&vRtOSJ+BZHI%ERaCap^41lVlZGZVrMX9WZ;762bl^o!I+Uj z21Of87d)I<!Knun1UUW1$RLj9bC{pm87vqXByefuVqj#j;$cu^P-0}@3eGPrN=|jl z1VsfuB7y6HG&3@A24|+{C6<&Hr7|*jf<qZOwOfNlu%>hyR4L>rv9o4m;CIbS&dD#% z%uDx8Ey>7F;bCxOaAIT-$;~fIb@T*<Ye>FJYGR5@YH~IsgBmQT2qjJ)&%C_UBIlgM z;^Nd|1_cI224)6E237_Z0Rd2AWnd5x0wq;2&CS3Arg<6o7#J9s85kJ&83Y&@83Y*^ z7(5u57+4t?7^Jkcw=xK6>1<^X(bC<@Af_eBvXwzXYdeF~Mg|53CI(ps1_mw$CI$uu zMg~!a&kS-53=BLBj3Av1@(c=KaYY6tsHs5=%wV-rT3Z-|wlFAbZDA16+QJ~VjX_gu z3xmWq27Po>e=tZg`~;gS2GI#Mm4QKu!Gyt-fl<JbL6N}>YQ81|6Id0emi7S#^KA^4 u2;<nmj$#BG1#&J6gEiO#HVn34+K$1Vfq{XAL50DA!5Qo+Mz9VB1_l7;v@_cP literal 0 HcmV?d00001 diff --git a/class/application/Controller.class b/class/application/Controller.class index 6266957965d0fc7670da3eab97f411957e16d2aa..6afc1b70e257b2fdf4f41c1bf254efe22010c1b2 100644 GIT binary patch literal 10738 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 ULTE-EDBT97&oQ265^#_N0H&JZTmS$7 literal 5977 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 diff --git a/class/application/MainGUI.fxml b/class/application/MainGUI.fxml index a6a521c..74c58d8 100644 --- a/class/application/MainGUI.fxml +++ b/class/application/MainGUI.fxml @@ -6,12 +6,12 @@ <?import javafx.scene.layout.HBox?> <?import javafx.scene.text.Font?> -<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller"> +<AnchorPane fx:id="mainPane" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller"> <children> - <HBox fx:id="hboxPlayerDeck" alignment="CENTER" layoutX="83.0" layoutY="450.0" prefHeight="107.0" prefWidth="634.0" /> + <HBox fx:id="hboxPlayerDeck" alignment="CENTER" layoutX="85.0" layoutY="453.0" prefHeight="107.0" prefWidth="634.0" /> <ImageView fx:id="iconDeck" fitHeight="90.0" fitWidth="57.0" layoutX="447.0" layoutY="230.0" pickOnBounds="true" preserveRatio="true" /> <ImageView fx:id="iconLastCard" fitHeight="90.0" fitWidth="57.0" layoutX="277.0" layoutY="230.0" pickOnBounds="true" preserveRatio="true" /> - <HBox fx:id="hboxAI1" layoutX="246.0" layoutY="31.0" prefHeight="107.0" prefWidth="309.0" /> + <HBox fx:id="hboxAI1" layoutX="246.0" layoutY="44.0" prefHeight="107.0" prefWidth="309.0" /> <Label fx:id="labelCurrentPlayer" alignment="CENTER" contentDisplay="CENTER" layoutX="320.0" layoutY="377.0" prefHeight="31.0" prefWidth="162.0" textAlignment="CENTER"> <font> <Font name="System Bold" size="19.0" /> diff --git a/class/images/SEVEN-GREEN.png b/class/images/SEVEN-GREEN.png index 04d0ccf7fb9d9e16f180a580ef3d01c53c35c8cf..aa8e061313d5762341ae9c3fdced136162675849 100644 GIT binary patch delta 9864 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 P0|SGntDnm{r-UW|oscDG delta 5217 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 Zib+`lmO7Ur7#J8BJYD@<);T3K0RU*n7Qg@i diff --git a/class/logic/AI.class b/class/logic/AI.class index 653ed62e7299254dd07b0cfe2810c0db4bc913c5..cfd69f7bb8728c5a71b60f2deeaeb448adb0a207 100644 GIT binary patch delta 3140 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 delta 2991 zcmeCyex}KF>ff$?3=9k=3|}{L-DjL!$E3n2F}Z<LoH1<j0w!HH6CMUr2D8bRnTl9! zco=LadooXDbK+reW^kGOgjtQvjlqMR!F{p-i#W3<gV$s&7KKnBMh32&{PfIZedolY z6fOpD20tDKe}(`?2KMySl90-RR7M6N4NV_}8jzSZCqocJ2s=YCBLg3*3=cynL)hf` zEDDA}3=upGkqo+w3~Z@|rHMJkAU)AM3^5F0j0~JEL5|_^ZvLS`AS>f|7~&ZcCVya& zw@6}$U}s2XWZ;Gxo1c?k#LeKwkjlf5#*og)z@Cv<?3Y?m!pOj^p&11-GLwfPiy>^X zJ8LydDGx*0<YTP!o$47H*%=xb83eKt%M$f-67$magDZ<mQgeA2ni!fH8JP1+OBfkM zeZbP0`T7AxnRz9_B}J);xz_9qt&9xflk+*mnK>BRCm&>!<ZfZ;<YC}v=wf6LoxFfU zggcCjp@pG`hoP6DZ!!zJb$tuN1RjQo3>AzF93}a|B}JKe>0Atx8K$x`OkrdY#$pK% z!!(d->;)iubMm+t7#U{pFxWBJb1=+eWZ*4J%*jjv#YeG~0v8v<9EN%940GWT<(`<E z%EM5}FrSfu4;(Xspy+c+P0qFksa?p!uxRprb}5cI3`=+zmNG1x{E%H$Vg<u0c7~O3 zGeD|&7z`LzPnP4*mtG5E8gekKXJlYaDM~C?0Qqkt$bXwAXK*NrY++<zQ%FuMN+||O zYy(MbpFEeth;irS3moE-a~O8>FzjIvVPs$d>E>cs!LW~qL4#rcBu-VwgCLeB2g6}T z240Y?LVjK<*eni)ql^q}$r<_i#i<+&#~B%T96c2vT#&aJ7#U9TFq~pIJvoijzWyvM zE=x-?bM%7}^HTD2xfsqc2!n_VJPa2ZE-^B&=cQJZc;=NbGO%cPYI<@qBr#m!VYteW z%gDeM>FVR-9}W__&ckp6B*Yx#>H^~5;$gTA;<GsUgt~$R?(#6)0|~IY2f4cXf#T+Y zFb{(zgB2)rAAwkp85v|WCi`(MVSB^F@Rs4-<R4rLY~BnXco;rzmg7FcSntHZ#K6SB zz`&)og+WSt8-rH(Mg|53CI$tN7+6M)fs;X<L6L!hK@802Vo+jGW&i;$20aFS21W)( z1_K5|1||khuudZeK?Vkf5Hxd*!R9g}nXApf$)Hn@!(ej;4hBXB3kC)T9tK9RQ_LAa z{$m9Bj)4(ug)`I&Zm83(!?ibnU4U@A0Rtz4A(9o`aJO?q+%CYt2ujRw$2&|G;Zv-4 zv|?M%kR{2slfjjd;Q)iT6|2s11}#a}Z4ADf7y`F3gwJ9Sgz}=cF@(=#u#;o~@wLL2 zGZ=#yu{zrr5@*5{Vbj75(*m+4g^^*_|4GXkmgpR3$kM9c!XUMc0qlrCkSxp*V3W1C zF~n|TNSwu>2jco_Z)5NUJ4hbP-NcXq=Ak+d)2`La87x7;2DL^R#hQB7Z46K!VCuXn z$pQ*x7H~|)F^DrTFqkoLGFUM1GFUOFGT1O^GT1S=GB_~!GB_~=Ft{>QFt{@`Fjz5k zF?cidGWan}WC&nb$q>YFl_8knF+(WBYlZ-ZuM80kKNzAJ1sGx(Wf<z?8C4jf8TA-a z!BH2)z`?-4Xb6isMni^daIyo5<uK%e5+$P{Lmopu12Y3BqXt6(0|x^OgDOKbLm`7c z11rNy1}6xMQGh`N!h)wPh<Yvt7KS1Q28MSGeE%6F8S2^D85r3ayxAF&7}*)b8Q2-z z7#RLDXfvRSgH^aOFmOro{%2rElZ0vFVPHiyjNv~6KMu97Q1N=0%`h8CGoBl249paW zQ{?|MaALTHfsvt@K^>Z(jKEo$fq`SPz95@c$r^ZGVgqNvEO2B%vLgpHG8h@k87d~n z3#usRBgwMDWh)t~;90AB@-jiC`Vy?_Y8YxEj$k^-zyc~q7$<IGsN2oZ5-HTSouLDg zQoFY?^lxLBq@}GRyNzMG6$?zo%<T*vk}TU8pz<JQ$t;HDvNIWywY0V{$Zcbo4WSlj zZK(%w7jI)&zKvlGO#eEF4RYHU7HnhKAhdZK!&Zn*Fa<jx3Z&pxK#be9oZ%g+1&g;a z?A^w2U=u@~(4lP%ld$N|gqRFBU>!*95hS(8Kz2#8Y-c!uuno+$Vr8^q!;{BDcQc%c z+|F>$id~YOeH+91$@;<?^_M{fnZzcBYam)+6T?jq&9RB$jujio3E(2_z9ic=hKHb1 zACjk=z&X2;L6V`0L5ZQ7!IGhd!I7bk!IhzbA(5exp^2f1VKzfE!y<+jhNTSc47(UQ z7!EOXGTdh9VtB;R!|;@$pW!XT1V#>q$rg+P3{x0|8KyDnGt6MLV3^71#4w97g<%e3 zCc|9D9EN#}g$(l<OBfa~Rx&JPtYKKh*vPP)aRS52$$TQ>^{`w%kpY&=Cqi?%5@SBY z6HqQ^6kupzcnZqpjKU1H49^&H8Q2&t7(5xCGrVA6XLMq)XL!lL!@vR0?+~4^{I0~n z`G;XCJA=6WUj|QbW=s0ZV8YIDhLN3}z5XWy%TESA1}0F|4o}6ez*Wyd1||kpP|2sw zyp7@Y0S0eSIqYb~vYbI$k_A?4_~~wAc(1dK;r$W@R$X6^IJlU9sDmg!r5M;47#P+v za5Ai8kY(7wpuw<-L5pD>g9*bnh73@ZtHr<qvId%=Kt(Oc-;4~L47v=T81xyK7-SiE q!DSjV+>a1dpxP2trin8!{bvw@=6rE>25(4lAkM(Z@EM%LzW@OIS9PKQ diff --git a/class/logic/Game.class b/class/logic/Game.class index c148f6bd2cd1beeec9a4af410ccf6433248bb8e8..fa7e6721b5cbc646c4da8a106395a6fc9f946aef 100644 GIT binary patch literal 6453 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 D@Dl>V literal 6186 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 diff --git a/class/logic/Player.class b/class/logic/Player.class index 8f921401c014056841767dd73eb99de384d60a20..a991580beea6eb679688e8daee102f1c1ff3f109 100644 GIT binary patch delta 2293 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 XSh*OO|9~n~aV~ZSMuwB%_&WsvYjxI^ delta 2270 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 diff --git a/src/application/ColorChooser.fxml b/src/application/ColorChooser.fxml new file mode 100644 index 0000000..38868c9 --- /dev/null +++ b/src/application/ColorChooser.fxml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.Label?> +<?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.shape.Rectangle?> +<?import javafx.scene.text.Font?> + +<AnchorPane prefHeight="300.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.ColorChooserController"> + <children> + <Label layoutX="39.0" layoutY="29.0" text="Wähle deine Wunschfarbe"> + <font> + <Font name="System Bold" size="18.0" /> + </font> + </Label> + <Rectangle fx:id="rectRed" arcHeight="5.0" arcWidth="5.0" fill="#ff1f1f" height="58.0" layoutX="170.0" layoutY="101.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" width="58.0" /> + <Rectangle fx:id="rectYellow" arcHeight="5.0" arcWidth="5.0" fill="#ffd821" height="58.0" layoutX="73.0" layoutY="101.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" width="58.0" /> + <Rectangle fx:id="rectGreen" arcHeight="5.0" arcWidth="5.0" fill="#44a119" height="58.0" layoutX="170.0" layoutY="190.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" width="58.0" /> + <Rectangle fx:id="rectBlue" arcHeight="5.0" arcWidth="5.0" fill="#215eff" height="58.0" layoutX="73.0" layoutY="190.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" width="58.0" /> + </children> +</AnchorPane> diff --git a/src/application/ColorChooserController.java b/src/application/ColorChooserController.java new file mode 100644 index 0000000..bdb06d4 --- /dev/null +++ b/src/application/ColorChooserController.java @@ -0,0 +1,62 @@ +package application; + +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.scene.input.MouseEvent; +import javafx.scene.shape.Rectangle; +import javafx.stage.Stage; +import logic.Color; + +public class ColorChooserController +{ + + @FXML private Rectangle rectYellow; + @FXML private Rectangle rectRed; + @FXML private Rectangle rectBlue; + @FXML private Rectangle rectGreen; + + public void init(Stage stage, Controller controller) + { + rectYellow.setOnMouseClicked(new EventHandler<MouseEvent>() + { + @Override + public void handle(MouseEvent event) + { + controller.chosenWishColor = Color.YELLOW; + stage.close(); + } + }); + + rectRed.setOnMouseClicked(new EventHandler<MouseEvent>() + { + @Override + public void handle(MouseEvent event) + { + controller.chosenWishColor = Color.RED; + stage.close(); + } + }); + + rectBlue.setOnMouseClicked(new EventHandler<MouseEvent>() + { + @Override + public void handle(MouseEvent event) + { + controller.chosenWishColor = Color.BLUE; + stage.close(); + } + }); + + rectGreen.setOnMouseClicked(new EventHandler<MouseEvent>() + { + @Override + public void handle(MouseEvent event) + { + controller.chosenWishColor = Color.GREEN; + stage.close(); + } + }); + + //TODO prevent closing without choosing a color + } +} \ No newline at end of file diff --git a/src/application/Controller.java b/src/application/Controller.java index e889885..a63d076 100644 --- a/src/application/Controller.java +++ b/src/application/Controller.java @@ -1,20 +1,36 @@ package application; +import java.io.IOException; import java.util.ArrayList; +import java.util.Iterator; import java.util.Locale; +import java.util.Random; import java.util.ResourceBundle; +import javafx.animation.TranslateTransition; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; -import javafx.geometry.Insets; +import javafx.fxml.FXMLLoader; +import javafx.geometry.Point2D; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.SnapshotParameters; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.image.ImageView; +import javafx.scene.image.WritableImage; import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; import javafx.scene.layout.HBox; +import javafx.stage.Modality; import javafx.stage.Stage; +import javafx.util.Duration; +import logic.AI; import logic.Card; import logic.CardType; import logic.Color; @@ -27,8 +43,10 @@ public class Controller @FXML private HBox hboxPlayerDeck; @FXML private HBox hboxAI1; @FXML private Label labelCurrentPlayer; + @FXML private AnchorPane mainPane; public Game game; + public Color chosenWishColor; public Stage stage; public Image icon = new Image("images/icon.png"); @@ -36,7 +54,24 @@ public class Controller public void init() { - iconDeck.setImage(createBackCard()); + iconDeck.setImage(createEmptyBackCard()); + iconDeck.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() + { + @Override + public void handle(MouseEvent event) + { + if(game.isRunning() && game.getCurrentPlayer() == 1) + { + game.getPlayer().drawCard(game.getDeck().drawCard(game.getDeadDeck())); + setPlayerDeck(game.getPlayer().getDeck()); + + // TODO move card toPlayerDeck moveCardToDeadDeck(imageView, + // card, newWishColor); + // --> in "onFinish" + game.draw(); + } + } + }); // DEBUG game = new Game(this, 1); @@ -58,11 +93,20 @@ public class Controller iconLastCard.setImage(createCard(card, true).getImage()); } - private Image createBackCard() + private Image createEmptyBackCard() { return new Image("images/card-back.png"); } + private ImageView createBackCard() + { + ImageView imageView = new ImageView(new Image("images/card-back.png")); + imageView.setFitHeight(90.0); + imageView.setFitWidth(57.0); + + return imageView; + } + private ImageView createCard(Card card, boolean valid) { ImageView imageView = new ImageView(new Image("images/" + card.getType() + "-" + card.getColor() + ".png")); @@ -70,27 +114,63 @@ public class Controller imageView.setFitWidth(57.0); if(!valid) - { - //TODO -// imageView.setImage(new Image("images/transparent/" + card.getType() + "-" + card.getColor() + ".png")); -// imageView.setStyle("-fx-background-color: transparent;"); + { + WritableImage snapshot = imageView.snapshot(new SnapshotParameters(), null); + for(int x = 0; x < snapshot.getWidth(); x++) + { + for(int y = 0; y < snapshot.getHeight(); y++) + { + javafx.scene.paint.Color oldColor = snapshot.getPixelReader().getColor(x, y); + snapshot.getPixelWriter().setColor(x, y, new javafx.scene.paint.Color(oldColor.getRed(), oldColor.getGreen(), oldColor.getBlue(), oldColor.getOpacity() * 0.3)); + } + } + imageView.setImage(snapshot); } + Controller main = this; imageView.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { - if(valid) + if(game.isRunning() && game.getCurrentPlayer() == 1) { - Color newWishColor = null; - - if(card.getType().equals(CardType.WILD) || card.getType().equals(CardType.DRAW_FOUR)) + if(valid) { - // TODO chose wishColor - } + if(card.getType().equals(CardType.WILD) || card.getType().equals(CardType.DRAW_FOUR)) + { + try + { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/application/ColorChooser.fxml")); + + Parent root = (Parent)fxmlLoader.load(); + Stage newStage = new Stage(); + newStage.setScene(new Scene(root, 300, 300)); + newStage.setTitle("Wunschfarbe"); + newStage.initOwner(stage); + + newStage.getIcons().add(icon); + + ColorChooserController newController = fxmlLoader.getController(); + newController.init(newStage, main); + + newStage.initModality(Modality.APPLICATION_MODAL); + newStage.setResizable(false); + newStage.showAndWait(); + + } + catch(IOException e1) + { + e1.printStackTrace(); + } + } + else + { + chosenWishColor = null; + } - game.playCard(game.getPlayer().playCard(card), newWishColor); + moveCardToDeadDeck(imageView, card, chosenWishColor); + } } } }); @@ -98,45 +178,172 @@ public class Controller return imageView; } - public void setPlayerDeck(ArrayList<Card> deck) - { - hboxPlayerDeck.getChildren().clear(); - - for(Card currentCard : deck) + public void moveCardToDeadDeck(ImageView view, Card card, Color newWishColor) + { + Point2D cardPosition = view.localToScene(Point2D.ZERO); + Point2D deckPosition = iconLastCard.localToScene(Point2D.ZERO); + + TranslateTransition translateTransition = new TranslateTransition(); + translateTransition.setDuration(Duration.millis(500)); + translateTransition.setNode(view); + translateTransition.setCycleCount(1); + translateTransition.setAutoReverse(false); + translateTransition.setFromX(0); + translateTransition.setFromY(0); + translateTransition.setToX(- (cardPosition.getX() - deckPosition.getX())); + translateTransition.setToY(- (cardPosition.getY() - deckPosition.getY())); + translateTransition.setOnFinished(new EventHandler<ActionEvent>() { - hboxPlayerDeck.getChildren().add(createCard(currentCard, true)); - HBox.setMargin(hboxPlayerDeck.getChildren().get(hboxPlayerDeck.getChildren().size() - 1), new Insets(0, 15, 0, 0)); - } + @Override + public void handle(ActionEvent event) + { + game.playCard(game.getPlayer().playCard(card), newWishColor); + } + }); + + translateTransition.play(); } - // TODO other AIs - // TODO set Cards to back - public void setAI1Deck(ArrayList<Card> deck) + public void moveAICardToDeadDeck(AI ai, Card card, Color newWishColor) { - hboxAI1.getChildren().clear(); + ObservableList<Node> nodes = mainPane.getChildren(); + Iterator<Node> iterator = nodes.iterator(); + ArrayList<Node> possibleNodes = new ArrayList<Node>(); + while(iterator.hasNext()) + { + Node current = iterator.next(); + if(current.getId().equals("ai")) + { + possibleNodes.add(current); + } + } + + + Random random = new Random(); + int viewNumber = random.nextInt(possibleNodes.size()); + + ImageView view = (ImageView)possibleNodes.get(viewNumber); + view.setImage(new Image("images/" + card.getType() + "-" + card.getColor() + ".png")); + + Point2D cardPosition = view.localToScene(Point2D.ZERO); + Point2D deckPosition = iconLastCard.localToScene(Point2D.ZERO); + System.out.println(view.localToScene(Point2D.ZERO)); + //TODO cardPosition is always 0, 0 + + TranslateTransition translateTransition = new TranslateTransition(); + translateTransition.setDuration(Duration.millis(500)); + translateTransition.setNode(view); + translateTransition.setCycleCount(1); + translateTransition.setAutoReverse(false); + translateTransition.setFromX(0); + translateTransition.setFromY(0); + translateTransition.setToX((deckPosition.getX() - cardPosition.getX())); + translateTransition.setToY((deckPosition.getY() - cardPosition.getY())); + translateTransition.setOnFinished(new EventHandler<ActionEvent>() + { + @Override + public void handle(ActionEvent event) + { + game.playCard(ai.playCard(card), newWishColor); + } + }); + + translateTransition.play(); } + + public void setPlayerDeck(ArrayList<Card> deck) + { + ObservableList<Node> nodes = mainPane.getChildren(); + Iterator<Node> iterator = nodes.iterator(); + while(iterator.hasNext()) + { + if(iterator.next().getId().equals("player")) + { + iterator.remove(); + } + } + + int counter = 1; + for(Card currentCard : deck) { - hboxAI1.getChildren().add(createCard(currentCard, true)); - HBox.setMargin(hboxAI1.getChildren().get(hboxAI1.getChildren().size() - 1), new Insets(0, 15, 0, 0)); + ImageView current = createCard(currentCard, true); + + current.setId("player"); + mainPane.getChildren().add(current); + AnchorPane.setBottomAnchor(current, 30.0); + AnchorPane.setLeftAnchor(current, 100.0 + (counter * (57 + 14))); + + //TODO if larger then maxWidth + counter++; } } public void setValidPlayerDeck(ArrayList<Card> deck, ArrayList<Card> validDeck) { + ObservableList<Node> nodes = mainPane.getChildren(); + Iterator<Node> iterator = nodes.iterator(); + while(iterator.hasNext()) + { + if(iterator.next().getId().equals("player")) + { + iterator.remove(); + } + } + + int counter = 1; + for(Card currentCard : deck) { + ImageView current; + if(validDeck.contains(currentCard)) { - hboxPlayerDeck.getChildren().add(createCard(currentCard, true)); + current = createCard(currentCard, true); } else { - hboxPlayerDeck.getChildren().add(createCard(currentCard, false)); + current = createCard(currentCard, false); } + + current.setId("player"); + + mainPane.getChildren().add(current); + AnchorPane.setBottomAnchor(current, 30.0); + AnchorPane.setLeftAnchor(current, 100.0 + (counter * (57 + 14))); + + //TODO if larger then maxWidth + counter++; + } + } - HBox.setMargin(hboxPlayerDeck.getChildren().get(hboxPlayerDeck.getChildren().size() - 1), new Insets(0, 15, 0, 0)); + // TODO other AIs + public void setAI1Deck(ArrayList<Card> deck) + { + ObservableList<Node> nodes = mainPane.getChildren(); + Iterator<Node> iterator = nodes.iterator(); + while(iterator.hasNext()) + { + if(iterator.next().getId().equals("ai")) + { + iterator.remove(); + } } + + int counter = 1; + + for(Card currentCard : deck) + { + ImageView current = createBackCard(); + + current.setId("ai"); + mainPane.getChildren().add(current); + AnchorPane.setTopAnchor(current, 30.0); + AnchorPane.setLeftAnchor(current, 100.0 + (counter * (57 + 14))); + + //TODO if larger then maxWidth + counter++; + } } public void about() diff --git a/src/application/MainGUI.fxml b/src/application/MainGUI.fxml index a6a521c..74c58d8 100644 --- a/src/application/MainGUI.fxml +++ b/src/application/MainGUI.fxml @@ -6,12 +6,12 @@ <?import javafx.scene.layout.HBox?> <?import javafx.scene.text.Font?> -<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller"> +<AnchorPane fx:id="mainPane" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller"> <children> - <HBox fx:id="hboxPlayerDeck" alignment="CENTER" layoutX="83.0" layoutY="450.0" prefHeight="107.0" prefWidth="634.0" /> + <HBox fx:id="hboxPlayerDeck" alignment="CENTER" layoutX="85.0" layoutY="453.0" prefHeight="107.0" prefWidth="634.0" /> <ImageView fx:id="iconDeck" fitHeight="90.0" fitWidth="57.0" layoutX="447.0" layoutY="230.0" pickOnBounds="true" preserveRatio="true" /> <ImageView fx:id="iconLastCard" fitHeight="90.0" fitWidth="57.0" layoutX="277.0" layoutY="230.0" pickOnBounds="true" preserveRatio="true" /> - <HBox fx:id="hboxAI1" layoutX="246.0" layoutY="31.0" prefHeight="107.0" prefWidth="309.0" /> + <HBox fx:id="hboxAI1" layoutX="246.0" layoutY="44.0" prefHeight="107.0" prefWidth="309.0" /> <Label fx:id="labelCurrentPlayer" alignment="CENTER" contentDisplay="CENTER" layoutX="320.0" layoutY="377.0" prefHeight="31.0" prefWidth="162.0" textAlignment="CENTER"> <font> <Font name="System Bold" size="19.0" /> diff --git a/src/images/SEVEN-GREEN.png b/src/images/SEVEN-GREEN.png index 04d0ccf7fb9d9e16f180a580ef3d01c53c35c8cf..aa8e061313d5762341ae9c3fdced136162675849 100644 GIT binary patch delta 9864 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 P0|SGntDnm{r-UW|oscDG delta 5217 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 Zib+`lmO7Ur7#J8BJYD@<);T3K0RU*n7Qg@i diff --git a/src/logic/AI.java b/src/logic/AI.java index 6dbd96a..daa3659 100644 --- a/src/logic/AI.java +++ b/src/logic/AI.java @@ -36,11 +36,13 @@ public class AI public void drawCard(Card card) { deck.add(card); + game.getController().setAI1Deck(deck); } public void drawCards(ArrayList<Card> cards) { deck.addAll(cards); + game.getController().setAI1Deck(deck); } public Card playCard(Card card) @@ -162,9 +164,9 @@ public class AI case 4: newWishColor = Color.GREEN; break; } - } + } - game.playCard(playCard(playedCard), newWishColor); + game.getController().moveAICardToDeadDeck(this ,playedCard, newWishColor); } } diff --git a/src/logic/Game.java b/src/logic/Game.java index 26af135..16355aa 100644 --- a/src/logic/Game.java +++ b/src/logic/Game.java @@ -22,7 +22,8 @@ public class Game private boolean lastPlayerDraw; private boolean skipped; private int counter; - + private boolean running; + public Game(Controller controller, int numberOfAIs) { this.controller = controller; @@ -65,9 +66,7 @@ public class Game deadDeck.add(deck.drawCard(deadDeck)); lastCard = deadDeck.getCards().get(deadDeck.getCards().size()-1); - controller.setLastCard(lastCard); - - //TODO abfangen wenn +4 oder +2 oder wild am anfang kommt + controller.setLastCard(lastCard); start(); } @@ -79,10 +78,11 @@ public class Game public void start() { + running = true; Random random = new Random(); currentPlayer = random.nextInt(ais.size() + 1) + 1; - counter = 1; + counter = 0; run(); } @@ -104,7 +104,7 @@ public class Game } } - System.out.println("ROUND: " + counter / 4); + System.out.println("ROUND: " + counter / 4 + 1); determineNextPlayer(); @@ -130,20 +130,18 @@ public class Game if(currentPlayer == 1) { controller.setLabelCurrentPlayer(player.getName() + " ist am Zug"); - + controller.setValidPlayerDeck(player.getDeck(), player.getValidCards(lastCard, wishColor, challenge)); - player.turn(lastCard, wishColor, challenge); - controller.setPlayerDeck(player.getDeck()); + player.turn(lastCard, wishColor, challenge); } else - { + { + AI currentAI = ais.get(currentPlayer - 2); controller.setLabelCurrentPlayer(currentAI.getName() + " ist am Zug"); - currentAI.turn(lastCard, wishColor, challenge); - switch(currentPlayer) { case 2: controller.setAI1Deck(currentAI.getDeck()); @@ -153,7 +151,9 @@ public class Game // case 4: controller.setAI3Deck(currentAI.getDeck()); // break; default: break; - } + } + + currentAI.turn(lastCard, wishColor, challenge); } } else @@ -198,9 +198,11 @@ public class Game private void end(String name) { - //TODO in UI + //TODO alert System.err.println("Player " + name + " wins!"); + running = false; + if(currentPlayer == 1) { controller.setLabelCurrentPlayer(player.getName() + " gewinnt!"); @@ -231,6 +233,21 @@ public class Game return player; } + public boolean isRunning() + { + return running; + } + + public int getCurrentPlayer() + { + return currentPlayer; + } + + public Controller getController() + { + return controller; + } + public void draw() { challenge = false; @@ -238,10 +255,10 @@ public class Game lastPlayerDraw = true; run(); - } + } public void playCard(Card card, Color wishColor) - { + { deadDeck.add(card); lastCard = card; this.wishColor = wishColor; diff --git a/src/logic/Player.java b/src/logic/Player.java index 57931d3..3ce4543 100644 --- a/src/logic/Player.java +++ b/src/logic/Player.java @@ -35,11 +35,13 @@ public class Player public void drawCard(Card card) { deck.add(card); + game.getController().setPlayerDeck(deck); } public void drawCards(ArrayList<Card> cards) { deck.addAll(cards); + game.getController().setPlayerDeck(deck); } public Card playCard(Card card) @@ -123,23 +125,20 @@ public class Player { if(challenge) { + //TODO notification drawCards(game.getDeck().drawCards(game.getChallengeCounter(), game.getDeadDeck())); - System.out.println("draw " + game.getChallengeCounter() + " cards"); - System.out.println("deack after draw: " + deck); + System.out.println("You can't challenge --> please draw " + game.getChallengeCounter() + " cards"); + game.draw(); } else - { - drawCard(game.getDeck().drawCard(game.getDeadDeck())); - System.out.println("draw one card"); - System.out.println("deack after draw: " + deck); + { + System.out.println("No valid cards --> please draw"); } } else { System.out.println("choose"); - //playerInput (draw or turnCard) - - //TODO add "draw" - Button + //playerInput (draw or turnCard) } } } \ No newline at end of file -- GitLab