From 87d103e72128090cb1f11860bfd81ee91a34abfa Mon Sep 17 00:00:00 2001
From: deadlocker <deadlocker@gmx.de>
Date: Tue, 12 Apr 2016 20:25:44 +0200
Subject: [PATCH] -fixed animations -added wishcolor to UI

---
 class/application/Controller$1.class        | Bin 1482 -> 1482 bytes
 class/application/Controller$2.class        | Bin 3337 -> 3337 bytes
 class/application/Controller$3.class        | Bin 1310 -> 1586 bytes
 class/application/Controller$4.class        | Bin 1297 -> 1578 bytes
 class/application/Controller.class          | Bin 10738 -> 14429 bytes
 class/application/MainGUI.fxml              |  10 +-
 class/logic/AI.class                        | Bin 5515 -> 5702 bytes
 class/logic/Card.class                      | Bin 3362 -> 3405 bytes
 class/logic/Color.class                     | Bin 1045 -> 1092 bytes
 class/logic/Game.class                      | Bin 6453 -> 6755 bytes
 src/application/ColorChooserController.java |   2 +-
 src/application/Controller.java             | 306 +++++++++++++++-----
 src/application/MainGUI.fxml                |  10 +-
 src/logic/AI.java                           |  16 +-
 src/logic/Color.java                        |   2 +-
 src/logic/Game.java                         |  22 +-
 16 files changed, 273 insertions(+), 95 deletions(-)

diff --git a/class/application/Controller$1.class b/class/application/Controller$1.class
index 154ab12fbf846e42a90063e45e5a95853ff7e53a..5f739f9a5a101f6660e74bcd18fc309a2e51c369 100644
GIT binary patch
delta 35
rcmX@beTsX-OcqAp$+K9d3I;JqGlVeMGlVh(Gej}OGQ>=FVC@0`y21%M

delta 35
rcmX@beTsX-Ocq9~$+K9d3fePBGdMEXGdM8>Gq^LvGI&mQVC@0`v+fAU

diff --git a/class/application/Controller$2.class b/class/application/Controller$2.class
index 6a6a82ff33f514c2bb8a046e5a3be2ca0f72c852..a0aa43b035592b38636ea5ba4e940b4eadbfcad3 100644
GIT binary patch
delta 104
zcmeB_>Xh1Wh>P*m=EGb%jG^Zlq!}(UC^1}SaALU55X^9sA)4V9Lkh!fhH{2G40Q~5
z8M+wmGt6Ol$gq^*5yJ+CCk#6no-*uXc*by;;RVAnhL;S-8D2A-W_ZhRj^P8tHHOa&
MZy3H!cHub+0Ad3sz5oCK

delta 104
zcmeB_>Xh1Wh>Nj#^I<L>#?TH1X@)KaC59dbCx!_O!3>iaq8TPLq%cfjC})_;P{%Nh
zp^IS#!yJZL3`-eiGi+d(%dmrC9>YF{`3#2{7BU=TSj2FgVF|-&hGh)r7*;Y|V_3uR
LhGG3=7oMX4D2^aq

diff --git a/class/application/Controller$3.class b/class/application/Controller$3.class
index 091fa891b3c63021ded8942c8403116b95207def..4110b5483de2867c4528fd4f6ee2bd18a4a22fed 100644
GIT binary patch
delta 615
zcmbQowTXx8)W2Q(7#J8#7(ym;RZg6%Jh547;sI@e{G9wEYoDC_^vq;^=ft9viNDt{
za!p>rs2(U>oRMGdoLQ8dlNz2`oZ$>o$;cp}0aFa(TWf}KF(@#o@i3?}NH8)8XJn?N
zqG{n|P+-vHVbEgGo_v;3LPD28pPfOEk%0?hrF&v-Di4DJgW=@AjEeQf45sW1CX5U`
z5Xpd?#LCnn9tJZ8b4CXC^wbiU)Z}bN25}8dpRB~PME%l|%p85kqN2n~pUmPCYmiGU
zc^Ir1tQi@2i&IM=+97%*G_Yy`Ip3JUmWRQP!Jd&}vK5mChc1I7i0d>ti^+|TH@GA*
zIomg}AS5v<Cw1~VCK*PL$)}m*8NDXIW}3hp$PhHSj`?ssBPW9t0|NsO10w?ig9w8(
zgA4-$10#bhgB$}R13v=;!!ibD1||juh5)TC3_`~k1huv>2!NQ|8042TaDjN+7*s(N
z2ybD~*v6o<jlpOeg9VfirM5BXXl-E-*~VZ4(d@91fq{XU!C#VrfkBReoq>UokAa<0
zfI)~+kU^ADgh7T;jKP3WoWY+_0_;FBh$Em5WMBwjaAt5}U}SJ*U|?WjU=n2$aAc5W
zaGQLPMTEtD8-wTMn=CS#-V6*3Obk8@zF^vq!5^$xfgyk)n1O+Ti-8gBYX$}e0Amk^
A&;S4c

delta 365
zcmdnQGmnew)W2Q(7#J8#7+fZDRf=<zCFZCkCl;kJGVu81<fmsQ>pLeFrA%y4n|MHb
zax;tQB*x{8oRe2Ds!vv85|dD4&|qg!XJp`lD0NTFP32+GWYC%%z@#Xp!=T5`pv%a>
z1Cb2KNvupQ;$hHdFqr&~NsB{`!3e}Lo~*#^CM~Yvla*MOm{y^mT9%quqVEbKtu@2g
z87wAGWR_>Nn!J&D0<$B7(_|Nx!%Pf^Cv&pO*GDigGcYkQFeqqkVG!8DAP=RsF{o;7
zVG!EJpslrqL1Y_);YJ1q1||kc1_lN$u=*1W@(d>#q!<_&#K3$725ANv1`tqSFkvud
zU=(m<kYzAqU}WHDU|`T>U;?Y+)Y3k{V7`sP5@y`wudE`P)?l-37;M3`9fLgs0|N_#
S0)qpCGuS>x21by<3=9B3EJvaM

diff --git a/class/application/Controller$4.class b/class/application/Controller$4.class
index 5200445f2fd0a8b6748aea9edda41cde39bc77c0..bccccc2fa9f7fb94a704391dfd153344a519d915 100644
GIT binary patch
delta 672
zcmbQpwTg%9)W2Q(7#J8#7(ym;RZiTjGO<N};x#R4=lq=fB5R+V{PfIZeMe6i%Q>+q
zWwJEmHf}Bk6$UkS231A|v55j=^*jvf3>u6K!o?Z+<<6N!$vLUvnZ+4kLl_wZG@#~y
z`PQ0YAkA7l4B8Abj10mVnJKAgTDTZ=8T8p1^cWd9U=HA6FkmobWMEHEEpbUr&Sqo~
z*U<FIN-Rs%FD=Q;sn>TbDoU*M$t*6h1{rS5!(hT-%E-W3oLb`O3DKYga|OsZaGgjR
zHN!X=R2a;87%Uhp85vm86LV7;8F-*hcTdbswFbG%nuo!L!IqJMqaY`-5)>Sa3{o1C
zO_-!*>=_){85|fHxFBu@=>Vy9Vq}ofn7n{lc5(-kDj#ofNn&!gZ(>16Vp2}(<kd_v
zj2@FuFv&A|O@6^NfjN*NXmT~PB(FM>V?8G?V4lUqXfxS{MZSI>12Y2?0|SGH))oel
zV+?{?TNs2u%xw(H%Ne*pylo7cAWCZsgBS>JW6;^gU<4A`!e9mx(AvTvv5mnBqRDO}
z0|NsygDe9BgB$}p0|TQY13RNLgAk(&gD9grgAAi5gC3(7gFB-)gB$|`gP0w}at3(@
z1qKlCU~pz|VPIr%Wnf@nVPFzv6L4fuWN>3(WDsOvV9;b>0;}iL(muf8zKy|i@);Hx
mO>YJU1||j{2467k$KVgvtHKb#5X`{9z{SAGzz8y$fdK$%+?5&t

delta 409
zcmZ3*Gm(qy)W2Q(7#J8#7+fZDRZd)HFtJ%>;&n}CM^Ed?xh%4i6&N>ib26wfsIfDs
zGBSuw6cA(OVNhq#n0$~)LQIQ6hn+#2k%1#8KRq*9-_etYL6<>q@<S#q83P6*b_PR6
z1}=z{dtz=XNYa>*K}G{?unV)QoVbQhR$^IVT7`aUS!!O1zAK2d)(m53uwZ16nC!<a
z!OF$J$Y3>j3-bgGM+PTG29ezSvQ$S;=ft9vkbIZa#1xm*<ZMO;H4Pt#JrHNlVq*9_
znUht%K8S&tfr){EK}u^2gU}WRWvwj?B3fG*#I`YLYHeYV*v6p0k%57Mi9wcufq@IG
z@&|(?!%qe|1_lN(Fkgy6o<V^D1f&>D7)%)$1soX^8O#_M83Y*^7&IA}z^XX4v=1<t
zZ)31T7{|uI$Y9REzz8-A<OUW7Yp`8547Om}j=`RRfq{iVg~5Tr8Eiiz10%>H1_l6V
Ce@YYp

diff --git a/class/application/Controller.class b/class/application/Controller.class
index 6afc1b70e257b2fdf4f41c1bf254efe22010c1b2..5dd6d2b17b27bddd18875d2c7a9482104c43abe2 100644
GIT binary patch
literal 14429
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

literal 10738
zcmX^0Z`VEs1_l!*L3RcvMh3COf`XjP<iwK9{5*Z<{JfH){G6QBB6bEAMh1bb#Ii*F
zoW#6zegCAa)Z`LI2A<61{5+q;;u7b?q7+63IUkUcv<m&=<kY-W{mk6N^i+LM5E+)4
zT5iqAAQ@DeSCW~V8kSj{nUs_2n3tDd0=BD|kwFNiIjtf$N8c^N*T<TXfdgcLOKNg9
zBLiPXQhr51PGV(h5kx==rU7DGPGV(#X^FmvQ+|atBLh1~wWFsYBZE**Vp3|3b7@gg
zYF-IMKO=(-s@`OXPxXC3N<r4<CT8XZB<7_uGAN*`gxcbmmz<Gb1X5wm$iR}Gn48MT
zz~hsXpPrel@1B^OYR$;NpPZ3joSGM&S)AdVpOat2$iNF#0OndVGO!kxB&Me_GKj#f
z0P*#MK_tjnklz^@(7cHhsMd@OY)PegDLJVyRr;kRnK}AFsm1xFMaij7U^$Q~o6Nk-
z5<5l)W)00SMg|t={FGEK24)6%9tLR!8FmImMg|F7F~`B6%*enGwzXIv<RZO-ymT%G
z1qM}+W;I3zQ4O&3AqgY6q$o2l-C8q@lYx;zgNH$!L4t!pi;;l`IbCrw=rHK9Gw8yS
z6xh)|`N@ensXPq&3<iu0?C!2XzK(v8uv7u@7et9Q7lRRl2|I%^)X@+*R6p}Dm@=3#
zGH|A+mOui5k--6rGa(K~vff$~NeI<QYmkpDco-xZq!=0aeKPY>{YrC_Qj0<olR)7w
z1a@3lVo@fD4;5r7$;d2bWRUPd_B|q3f#WzYvjk+aJr4sX0~;3uBZDIkgA;=@BZF{q
zQEFmIs%vgRNu^U_ayBH3$!I{Fh%J*@b1}FwxU)03F*3;DicU~Q<YDk&@ML7*C{8T_
zXHG^2SxDeuH53$=-VDC%3_gquvZ%)96_l3f`{tJxr@EG<=9Ta;_%Zl1GVuEPhX%XG
zJNtM#d%L=Tybslt3R0vGRvJ=SkZR4&5Xi_Nfjw+g47nHr7=l4*EQFCkS_4-QYKDP4
z9mc~D&Je-Kz@M0s0yf_x5tJ>87#YmqK0~)19MfqP`bgqXUDldm><m$i3|xr(%*7DN
z5Cd{dEF*&qPRDqH!ite0o`*q@K?tNJk%u9PA(@eZJukH!R4gzuuxNOKvLGnz!TFq#
zK^*QvaB%?5{t%PWc^E_)#26Vwi&IO$WfMv<21++sJPf=Hd|V7U40-Gfxr_`_(6EM-
zi74e74?{kK8Y2UHacW6OYDEbn14{{*f)u<c`InJ_8*C%2VCUC>6<vu%DbU<q%EQ14
zNwMWT3>6HOj0{|m6bnhHx+q$raHm>OiUg<JY959fP{QX(ho?)HWN^I#D_KD%TXQfp
zFfxch3nY-dZc<`$HmFo$WZ;9i0Fhl3@MIUb#Vw$S^<;AhYhVBYP=e~<Vd!M&Vr1Yc
zPAzfEEb&OqOwRy?n1+jH7@LC+LSY{dLqA9%D7@S<OTsf#N-`K3IKj>XS-{RPiIG7Z
z6e-97>{ObWlagA*!7zo9fgP;2Sf7hwB7-Uy!*qt3><lyDi4Wvu9)?*Avl$uK(^E@8
z`G%1}NJA4TK0spDAl-9$80Im|XJlYYEGS6LOJQWtg(NMA&5$}9R>Fa+aY$(mb&NF!
z!$L*|MqQ9ei$NwWK{EiN8jk@W$1meySkAD5kpUEm;Chacfgj;oP(5hP!LW*vfdv#{
zAgk8!Fsx-*$H>4@k`J+fkwF9+X%KfqM6KBwHZU^Cg8~v>N(JX778GaXmjomhCFZ7<
zq!tx(F|22h2gToJ9)>LpTR~+UR1G6TIwUag=(dIx36RVKju-v#qRbLdkq#~?p`M4E
zflUb)!*+(9><l{?85B@li$yID!!Cy1j0}9~sU-oK6{$Hvsfj76MT`te&;UTQ2T6@J
zH^W|r{p<|;7#ZZS*n*@I6dwl|8RRrPJ<;-DL1JcJi9R@ztU-=G#KUly;Rup*Kwc;0
z9Ecigc7|in>KN{3B;&aljxwC!VK~WfijjdWJ+&k#H3i%jaREu3;bAxnk^rR`_oCF)
zJdogd9)=4bK~S1^$|+3+iCyAhxC|2GN>45EFGx(zEU9F(zibQ!Ao=T{Y<z=}fnCGJ
z#l=N4jGN&W!yR^p+jxQq;(8v2yA1b0X(hD;92$%a@*19=sEGl|H`bs!XFJ0K9)^b?
z=YSd+kn#Z(h>v*~o`6I_z5y2o><rIvS8_&N3{M$efZY9(ks%Iey%L3#+pTfcgsAR?
zq&9G(1r<Zqph}0eEHNiDg^__VijhGHn{rTaAksP`17igv1EVJ+17js414n*N3N&=k
zTBOK9!^pq_YC1DA@CKJ8CTII57C@UqLb>^6si49vB;O@9F$L0sw?fO3=#ED5Hl#8J
zI{{n+eP{T|&hP_TxTaO;r>ExUrj`^{>IdX!=9L(^@G$&h_|3?`66G4?&&VJN^DnwG
zaMkmdhv6T?e?|tL98fDXBtIC`e_>=Wfx8bw7d$Uv$gndqGBT(@Gi734W-hpcqaRX~
zm{**WSdt26WP&<aT#O71@@x+E4xn0xfs2uik%OI)osmHVsu|ocbtx?Z8^FWJ$;idX
zz?PetlLKm0N@}>k-GHLdnv0Qvk%xzomyr)rjl)b}WRQgW2UUk=7)Xx*52GNX5Tt?N
zm!Fc#$RGw+4=E8rqM+2z$iOJV!zc=B+3*&pmN-`?=cGF4m*$m#j1lKylwg!(WZ)}K
zEpaR@$qz~`OD!r+1vP!5AQnmUFv@`HOi&}pttdY?0;Eljhfy9`Fp`VmJEI~GqY@}L
zv81P#fK{pRFsg!7v4I*f`4J#B>O71ZFg1}NleBmkwGnC}*%@_lXFy{vMjb|d9tLSf
z18{U>Z;V>wNr)gDjd&Q18BG`&K!M?(=a!k5S)2hX;^g4rhqaLj(rU)TXwD$R$iPyN
zlUT{fz*3f(TF%J8lb2eK)N$kiHFE;;i@~Xek%1>AH8~r>6)wR{T8s>8umq1c30gBU
zh=6jYqbGXaRD-qO96j-QpOb-+(UFINpFx0&(V5YeozVroxW(u(^Dw$Gx-&9xr>B-U
zXJqE26s6`dGN>Y|ykyXjLoz6X6zlsZ6{i-JfyyMG%;FMjZbnZ=Z+1p6Mg~P_9>J}c
zhtY@87c_!Ul3J8l0_uN@LG6I_7(Jol*6fV_j10mc^B@wAMMa5~AnUjo{TSrA8G{%@
z*cpQv8H5l@V0w8NLm5FG>O62m8nxX5ZEvwNMldo6g0#YGMo>25Vhm@D;$e&iHGNn?
z4c-(E##lxMro>Dx#(2g=cE$u)?-;42#>1Gzn9Rt)mReYvm{W|_^@iG~8O6ou$C%2)
zm<CeHoS2dV@<9d<V<ux3Xjmk%*bnSjW)00KcE%i-E#LwnC^0W3KbMO!n?W9ANInl^
z0b?N}150scRVui`_T*yBW-R7mEMY7KcWNq1JoCWKVoyy^kdAU5#tKkn!JM920&*U-
z$pLA|K^@4+Sj||=&R7Gp8REan;*!){9>zMxdPWB3{8Er^a01rP%-0Vn%FHVXE-6Y)
z%(doXY-DU^XKaGS7^*Z6V+&&|BLjN@NJmZ{$O#Zrz?MKApc%%_*p9nMFyUfsW9$SK
z30;f~b~x)~Xpw+FcQ7(=A=EK4u;%5bq!u$WD1#l9R-unO^@1`cSQR8q!V;V{BLi<i
zeld9T43vyOi2z9%Jn4c)z>*<DUW^RFU==9I4>TxL1deUgAr?pqux4c70u@A%5e`NM
zG1S40%7RpAt!@D`8MjAlU`mjx5Ibu|21w<F>N{L&wZLXT)WW@pOEIVrh79vT8W|Fh
zLKsaqxIx4joSB}NSW;S)%E+LGRhbPm`aq?lwVkzQ7zZP$g9R$AQ;R?uYatKgB2f9w
zR+I`VM?smun~TAfaVZbuGEi@u6*S0_0xGvs*&OV^6+HtN<7&pW?2Kzra)3*IX;Mxq
z592z<^^6ScWr;bZss3r81Pra_A$bU*${JMGZscLy#JHJ}fxkGl#3{d|BtI82D9Om6
z0r3iIghPT5oDZOefO@i#Fc&#9Zs%d#0WuF1em<#bB{0)iK(!4c1A8*4f(La6xS<IP
z6eh5=j260R!N$lSRGeB825NmG#|*4{3NCx#@e1jMp&1B{E>DQR(4^4pg7_2FNHis&
zR)`<tK_13Kpdyk3G)R(|nODrnzzJ?3Ly`>_sQKb)2;y)tFftzFVQ6G%0)_ht9>$ZP
zZ~_etgya{%f{8UTDZjLYo$(B=F&M|3)S?nj#&e7p*cs0wT8NNr0dhl8evUp^kqVdu
zb?bQ;FEU<YWZ?GnbMp`Kbqw+J_d}}L@oKf^Vm!@w1yqb(Wn|EVgd99Y;IIyyzOOSf
zupOS0lv<>~!FZFAfg`b?Krb&bH<gRQi19WL;~mDkkbzZ5zZ{Wqz)1@t2<;|Ak}OmR
z<ed9Fj1NGW0@Uye$t=l91qnXlVSEe{1f@F<a0eJPI>o{Gl#ziqEVZaOGe6Ht0R%W0
zpEEM>fEtsT`FUU`aWKAQWZ>iFa!D*H&4nmZ;9z`>q$(w`B$b2lEhB>>FBhmWS_D<4
zpb(Uwlv-4x;GUn8lAD;9$IAtB%X=Qi4<NUI+OD8++SEMoP#H+-6A$BO#xINvyy>YW
zE}4lr`RSn1e?|snXrlrnY!QmAxfs7O{$OYPjy`|^iw1;J9>$-HzaXP0&^`#P(E>Lg
zEN;!k_=oWyJL6wyvjkO^hw(oX10<HhGxJjN%R!@zkOCK^5H!D_50S8DXJSG!0xSa_
zm*iq%WMbiAVg<F-Kz&)y<ovv1F2>VL>^w{yOq`&eMMi$PV_r&lVrB`brvNb?k~jSe
zK&`jL9MBv`A}HD8oNxiBbZbTi?i6s4f~{s`;0gxMU$|w0M%MX35doQo(gQW47#Vmx
z^YT)QoO2S3i$S$1C)f~Bc41ItU}RusU|`^8U;+(JGB7f*GcYi)F)%W4FfcGMfri*I
z#JCu^F~oSVi19M;VW{J05I_@S1P%Q%FfcGO2s4O)X;B6-FfGm?!N9;E1e!o#U;vvX
z%^<_T$RNwWz!1W~!obMDz#yl!ok31(H-kc?kkWPrm8}fwT0)we7_@gV7;a@S-w5`D
zCD;@e1_lOo1{MYr20;c>23ZDm1}g>z1|Enh4Au-bU^{K$Hsms}g5`|0wlLUfZD(-U
z#^3^CZesA-%@7c&wVfeo8$+npZidK6Etc&J(OVhfw6-wBacpBqKv*lrz{<eDV9CJE
zV8tNI;LD)J;KyLZ;E!arG2H4DhE%BM>=>9Bm_X5>rM;CQ4PhD=STvY{l_3Odf*6?3
z1~mZ`ZJ?lIWME{-U{Hga<p?#4Q)>%DruH_5Y;@xy7&sUrk&NSn8^_5|z);8lGOmcB
z7;2m+0}I$vL9HzeC0g1n+ZoEXF;s11a6vaVmO+3a4#`+SxUqr^wG4F(j0{YmSsSRa
zCJfBrz~%zSWc_vql@0Ky10_ZVh9t0Akm%xqn#BaFVW1`?GO&UjrnsBIH4<*hc7|pj
zZ4rjnZ4B+&A`IQz7<#o41`9EO(nLCgAVUU&1Vbi+JVQ3v5=gKrLM;(w5MY=9&Jj$Y
zL3@aGj4K%U!8zn6%(~qS6C;HtZ)cdQy^UeoHikJu3$`&V(%#0f6vSS+jbYI?hSl2{
zRJJoT`{_a)qziG7%q)gF-Q5i9BeyebWZcHE$%=*9jCDCf1hX02at3EfmTe5%L|H}I
zb~5Z?X0T!h@ehLdyBUr~O0sWbI1VCCgNSn=;-Uz{mF(>d*LE`8WMODwV-#g;2Wh!K
zWA^{;Ev$^9tYGe=8MFT{(gjJlXj!r7f|K;qNG%y{NfzDh49~YQgzAEViJ1YEb?g}U
z85kG}7>pST8LSwJ7#tZ&7+e|37=jtf86p`f8R8kL8S)uw80IikGOT7OXV}G1&v1aD
zk>M~yGsAU;P2eDnVc=w7V7LhlQV<K020*M=46hlO7>pT~frFWuA($bTVGF|>1{Q`e
zh7^Xk4DT3N8Dbdx8QwFzV_;**XV7K%!0?fQo#8Np7{ez98wM7J&kPI<;tZ_+7$Vsj
zT-h16GyY*<Wwigr!1t3ukb#lm3&U4vtVuAify=i#?M)2dwlVy%VgV&%D4TURBSYkN
zMkXsZNj4Ei<{gZz+Zeee*|fJY@=LO@Y-1FbWMkgOC??6qw~bK>Ov*~KNwREXRFGud
z#;A~9zKu~CBA^BmPy-2QO0w-{)QQy6(cR9dw~f(Il5HEKDI%*_G4L@kFl=YwWZ1zV
z%CL(;j$t>0Cc_>EeTKaZrVRTStQqz*I5HeyaA!Ek5W#SWA(P=SLj}VbhFXTR;9&KD
z_y!)Vb&M9^l*+(R2hL<n3=9l)jFt={49pCi45f@#48Ivz7(^K|8Lb(9Gq5tqF(feB
zFxrCjFxoNNLqdtEn1P*vmw|y%Lu(78!!|}ID;7zXos1rg3|6eW8T}%+GX_|(EoV@b
zWZlUa$jESjG2Dt>l6@Ovq%dR5HpaM_4BV1zAbv_XNJTm$!>s?;cQa;3ZfDE|DFg*U
z-ZsV}GY&~MQI2hlWd|5stvDq)L3tLQiFA-Mkq$;C+Q#4_$q9`$E~FUb-o#i1li0@C
z0E<r^NghOe@<?)mB9sRlp*-LS<pD=1h?JG&k>mzNC>JO~LGcOZt4VTgV^mAu#;7UD
zvzxIkQcD{YpB<q1<blQ~3plG}F-S2mFkEEdWVpm2#BiBGn&AqA9K$sREr#n177RBT
z92l-Jcrn~#2xhp?5YO<CA)Db5!)%5p3`-fFGHhgc&aj{16~hUJ*9?~#-Z0!^c+2pB
z;T^*>hW89_7(Ot3V))3&#PEqxh~YD%62l*G{P%&<52FSw{uwnGV;Q?a1u3HjEdCia
zVDZl=&)CD*%fP}Q#3;t-!`R2b${@|i%h=BdD&4dg#26<sPGVqZ2xhp-IGJ$@13N=J
z!%4=e4DT2?7_u4mf>RbJ!%~K3a4O<r*vL>0PDR`dC!nc_hjAJM1A_u6t%2>D4!3It
z+^(4nY~bw5&%pGLL5`i#lbtb$ozYK`fst_*<7@^d#yOyJpK&gzk_S5x)C`#kO^Cia
z;AH5xoIy?(miEBuZXP(@aq8}5T)@bnyOR-|=<c(av1o5&TntLA{*r7E4Ghz*ShXZs
zLG>0WF$y!z+s3#AYP=--PR8X-4B?XOB8)3`Fs|CcxB<l6BFZA*p3$BR7TMOq!U!@8
zY{ObmPKLz16N3P#3B$m_$jHFY$iyJT$ikq`$i|?{$i!gA$i-mE$iv{r$j1=QD8LZU
zD9Dh<D8x|7D9q5!D8|so$ipy$Q34#JkQ_Y|7NZO^8Fw;H0Jp{_f@6<~fuErZ9DAU`
zIe~E(!#f5R20sP|#@!5c46F>{4CagzL8Tl#E*QXO?17sxodIUX3<hR!T&Od!{ACb=
z#D&y<1`!5!b_PavMn8xMBLh2Q5Cg++25$yN#=VUD;BmAc6h}<_46NX?eG@bg{dB=`
zWW}<aK><{3KuQRtSmFYSE?{H;QQ%O#!(zq?jwklz3@M;E0BK>EZpEepDk=`lWZ>75
zWCKSS$8rW9ElD=!?F?mB9FiQUk;egzJPt(UafmQ(5oJY=JXS`K1z>AuAR^C?L70Jo
zQHFtoQI<h~QI0{FQGr2|QHjBTQI5fiQH{ZtQG+3fQHLR#QI8>oQJ*25(TJgd(UhTr
z(VU^3(Sl(Tqb0)<MjM9Zj2a9Z8STIk390cm!6R}LG$I)oHZdM%oWQ`u0GibWWk_ZQ
z0ft53C}m-=WhezlDJw$|Lnt^(*%(q7n88uX!B7B=Tn=#LYJr<CAag;H3o&;O+}!C5
zFmq=>Ysgdvw!aL*kVuvJ&mhXc0gGnTnEub8fGNe!Fddu>{(z)h|1+3@Xh<SK)y=@j
zcmyLOcQdepTT9cRi3DdxhEyPUGO`aS^Fb2`tJZeLqmW!2gD)2!$DfNgAQA#37dta>
zFuE}CGrBSeF}gFTGkP-UGP*LDG5RuCGWs+4F$OY(Fa|TkForN>GlnvhF@`a8Fh(+T
zGx{@3WsC+#J|q`UgGc@}XykJ+^ucp+J2=Wgxi}Ua<)B<_3yyM7^Byx7gUkR$G{g)@
zE(V!FVlMVzU}QW6@8rB<U;%gkChTTB9l43|>~_Y>KH8vKSeWtJc7~~1TNuoR8E<T3
zyaj2%ZezTsjU>kS5UTbGT<tT6T4BZ)+ZYx>l)i!qy@46>PJ0{U$8C&Xw=w=cz{KdQ
zvyF*aYYT%qBm--2V`2*jMF|tQN>u_S9L9JCZpH)#O~yn9bH*fwJjP^(8pafcF2+=b
ze#SI#kb|ln28IdHAm?UiW#VE2byI5?M3{IOKuvlkCSFk8!o<e}YR_shurdTd#_|}R
ULTE-EDBT97&oQ265^#_N0H&JZTmS$7

diff --git a/class/application/MainGUI.fxml b/class/application/MainGUI.fxml
index 74c58d8..3d499e5 100644
--- a/class/application/MainGUI.fxml
+++ b/class/application/MainGUI.fxml
@@ -3,19 +3,23 @@
 <?import javafx.scene.control.Label?>
 <?import javafx.scene.image.ImageView?>
 <?import javafx.scene.layout.AnchorPane?>
-<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.shape.Circle?>
 <?import javafx.scene.text.Font?>
 
 <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="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="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" />
          </font>
       </Label>
+      <Circle fx:id="circleWishColor" fill="DODGERBLUE" layoutX="392.0" layoutY="275.0" radius="16.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
+      <Label fx:id="labelWishColor" layoutX="355.0" layoutY="230.0" text="Wunschfarbe">
+         <font>
+            <Font name="System Bold" size="12.0" />
+         </font>
+      </Label>
    </children>
 </AnchorPane>
diff --git a/class/logic/AI.class b/class/logic/AI.class
index cfd69f7bb8728c5a71b60f2deeaeb448adb0a207..68664ed635474773ba6a443f1bf0ad73a92f5fe3 100644
GIT binary patch
literal 5702
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

literal 5515
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

diff --git a/class/logic/Card.class b/class/logic/Card.class
index e21b50bed056790848ca47787baacb679e226b56..9f06a7928ed6839bf8de65f7a53f7d0aaa9261fd 100644
GIT binary patch
delta 325
zcmZ1^bykY&)W2Q(7#J8#7%p$*`o$W^?C9ge$q>YFn1|sA0|z4mtCNqTvo}cO7!Sj7
zkO+&DPpB(M;3N;jDUblGdyuQEA4ud355rlI2y>9D3y6Q7hvC9zS2k9*`WFn$42%p6
z45^zKc10dzVA&A9gJI9UJzU;en;7<QV+a&r^Iy)u60Wt0;m|gQKn@t^=r)ExxXg)d
z41w%0nbX@C0$E|4bK4jKSs<Lq%?!IXFt9NQFi0`TGHhp%V^C+%VsP8epv_>yV9v0e
z!Ggh&!G&QvgDZm{Lm<O;h9HJ$hB$`p49pBt3=9lxU{^9TNHZ`nFflMNcr!3C=rZtn
curuuZ&mc1SCyzY8H#@_21_nlki(n;}0KBkF5C8xG

delta 258
zcmX>rwMdHV)W2Q(7#J8#7%pt&`o-$V>g40-?9Is##Bi90;Rpi<BLj<*PpB(M;200X
zagYG3dyuQEA4udR55p;t2y>9D3y6P)hvDqzP&QV!`m+qo42%p64B?v?c10dzVA&A9
zgJI9UJzU;en;7<QV+iE%U(Uc1uC<Bb&^CrZHW=sVHikfU80W+`hCo&r=kzv)Ko$rm
zax=rO4GgRd0t}K2G7Q@pWEs>LG#R!tXfYTwm@#Z;FlTUJ;B;o#&fvn}%MdX62ahb5
e1_QSTJHyWZ48oJ;dF8nn7#YqnFfcGNoCg5Li9uEX

diff --git a/class/logic/Color.class b/class/logic/Color.class
index ba614dc211afed9fcd1e6a133b535bb1c33a9648..3f5928566b37a74f9c5e4545c3a55f6129582ad4 100644
GIT binary patch
delta 580
zcmbQrafE~G)W2Q(7#J8#80;o;#j-Fv`uI#twPO?JVGv;uow!mhP@IQ>m4S_eft{0q
zkwJ=wfgQx*0C8k_7&t&2P7p_dhk+Bs;R11#c^J4r9BvRtjfa7ofepmc;9=ll;GHbY
zsLd!m*`85V&Va#)oxzZiK_Dx!EKxrvF)v*|xU#q;HJ69Mn89Rn6Js`;1rLKMgXQGU
zjGc_^lWUnY>K!CO#xXDmNP!GvU|?Wj;9%fm;AdcD5MW?nn9sn%00Py!85kpl1ev!p
z2yJE%19K!;z#K_1N17GPkpXk$*uWflFh`Lc%uxb!R5-vKRROlW42+S?n;7cFf+JZr
zF-QhSvTkCK365mj#2_CW$-ap}DL9g26N75-W(M_*3=9lR44MoK3|tIM3=9mc41NsE
z3|e4Okc<d}DAcuv49pD73=9nHTG}$(8MF}^*%%lZ7@(SXz-)E~9R@ZAhI$5023-a{
zsD3jBR<M4tO$_Rh-ppG2B5gqK^ktUb!Jx0R0c<149T4Lf;cnn$Fl8`<nxVzO1h#-n
bh*4_?gZTjlM%?<C82GKghFUY&fN5I*2*gWc

delta 533
zcmX@YF_nYs)W2Q(7#J8#7_268#ZJt%VH4tE5M~gWxL(agjE8}hfsKQKos)r)L6V1o
z9mL@Pab$QHI6xdu5J#SeffK~x0&$dh7`PbNKr9s=25ttP$!d(+j6#!x7**wT81&c~
zbQu{0vJ%S@^>Y&Q()EKYi%U{-c^LE=3?@%y%w{v;VK8Jcoy^A6$;dW&0+U9)fE36O
z1_lNe1`Y;Z20jKx27U$xhHeHH1`tT!&A=EbB*46#L2xsJD3~M80_I47IZ~`(jx?Af
z%LeAifjJ87V2&ckUIxZU=1mNu!I3PR7$kxtSvN6A2S>7PVvq}tWUt@EpcuTFL3tws
z0|OI-Dgy%p7XuRm0|P6ABLg#o8dwx0Bg`NIb(tXpGXpaN0|UF3w#;@0b%aJX21W)3
zs3smTo1H;}fsKKIfs;X#K?|zgjDZ!bU2GGBa-=tNk=DLQ8;}cqnWc9yXzOeM+X!+8
t#5hK{8#oyZ8H}KYXfZH>E#MMj)Y`#de1L%ww>~BYGq9QF3>IM85&+8uLy!Of

diff --git a/class/logic/Game.class b/class/logic/Game.class
index fa7e6721b5cbc646c4da8a106395a6fc9f946aef..8ae00fbb42cdc13ac97f064a4ffbb982b656d220 100644
GIT binary patch
delta 4035
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
HF~$J^z9zrG

delta 3857
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
E0EbhB8vp<R

diff --git a/src/application/ColorChooserController.java b/src/application/ColorChooserController.java
index bdb06d4..3dd0f96 100644
--- a/src/application/ColorChooserController.java
+++ b/src/application/ColorChooserController.java
@@ -57,6 +57,6 @@ public class ColorChooserController
 			}
 		});
 		
-		//TODO prevent closing without choosing a color
+		//TODO prevent closing without choosing a color --> but cancel button
 	}
 }
\ No newline at end of file
diff --git a/src/application/Controller.java b/src/application/Controller.java
index a63d076..1855243 100644
--- a/src/application/Controller.java
+++ b/src/application/Controller.java
@@ -26,7 +26,7 @@ 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.scene.shape.Circle;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import javafx.util.Duration;
@@ -40,20 +40,39 @@ public class Controller
 {
 	@FXML private ImageView iconLastCard;
 	@FXML private ImageView iconDeck;
-	@FXML private HBox hboxPlayerDeck;
-	@FXML private HBox hboxAI1;
 	@FXML private Label labelCurrentPlayer;
 	@FXML private AnchorPane mainPane;
-
+	@FXML private Label labelWishColor;
+	@FXML private Circle circleWishColor;
+	
 	public Game game;
 	public Color chosenWishColor;
 
 	public Stage stage;
 	public Image icon = new Image("images/icon.png");
 	private final ResourceBundle bundle = ResourceBundle.getBundle("application/", Locale.GERMANY);
-
+	
+	private final double CARD_HEIGHT = 90.0;
+	private final double CARD_WIDTH = 57.0;	
+	private final double CARD_SPACING_HORIZONTAL_LARGE = 14.0;
+	private final double CARD_SPACING_HORIZONTAL_MEDIUM = -3.0;
+	private final double CARD_SPACING_HORIZONTAL_SMALL = -25.0;	
+	private final double CARD_SPACING_HORIZONTAL_ULTRA_SMALL = -35.0;	
+	
+	private Point2D PLAYER_STARTING_POINT;
+	private final Point2D AI_1_STARTING_POINT = new Point2D(100.0, 30.0);
+	
+	private final javafx.scene.paint.Color COLOR_YELLOW = javafx.scene.paint.Color.web("#FFAA00");
+	private final javafx.scene.paint.Color COLOR_RED = javafx.scene.paint.Color.web("#FF5555");
+	private final javafx.scene.paint.Color COLOR_BLUE = javafx.scene.paint.Color.web("#5555FD");
+	private final javafx.scene.paint.Color COLOR_GREEN = javafx.scene.paint.Color.web("#55AA55");
+	private final javafx.scene.paint.Color COLOR_CARD_INVALID = javafx.scene.paint.Color.web("#CCCCCC");
+	
+		
 	public void init()
 	{
+		PLAYER_STARTING_POINT = new Point2D(100.0, stage.getScene().getHeight() - 30.0 - CARD_HEIGHT);
+		
 		iconDeck.setImage(createEmptyBackCard());
 		iconDeck.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>()
 		{
@@ -73,16 +92,51 @@ public class Controller
 			}
 		});
 
-		// DEBUG
-		game = new Game(this, 1);
-		game.newGame(5);
+	
+		startGame();
 	}
 
 	public void setStage(Stage stage)
 	{
-		this.stage = stage;
+		this.stage = stage;	
 	}
 
+	public void startGame()
+	{
+		hideCircleWishColor();
+		
+		// DEBUG
+		game = new Game(this, 1);
+		game.newGame(5);
+	}
+	
+	public void showCircleWishColor(Color color)
+	{
+		switch(color)
+		{
+			case YELLOW:	circleWishColor.setFill(COLOR_YELLOW);
+							break;
+			case RED:		circleWishColor.setFill(COLOR_RED);
+							break;
+			case BLUE:		circleWishColor.setFill(COLOR_BLUE);
+							break;
+			case GREEN:		circleWishColor.setFill(COLOR_GREEN);
+							break;
+			case ALL:		//TODO show quartered circle (all four colors)
+							break;
+			default: 		break;
+		}
+		
+		labelWishColor.setVisible(true);
+		circleWishColor.setVisible(true);	
+	}
+	
+	public void hideCircleWishColor()
+	{
+		labelWishColor.setVisible(false);
+		circleWishColor.setVisible(false);	
+	}
+	
 	public void setLabelCurrentPlayer(String text)
 	{
 		labelCurrentPlayer.setText(text);
@@ -101,8 +155,8 @@ public class Controller
 	private ImageView createBackCard()
 	{
 		ImageView imageView = new ImageView(new Image("images/card-back.png"));
-		imageView.setFitHeight(90.0);
-		imageView.setFitWidth(57.0);
+		imageView.setFitHeight(CARD_HEIGHT);
+		imageView.setFitWidth(CARD_WIDTH);
 
 		return imageView;
 	}
@@ -110,21 +164,38 @@ public class Controller
 	private ImageView createCard(Card card, boolean valid)
 	{
 		ImageView imageView = new ImageView(new Image("images/" + card.getType() + "-" + card.getColor() + ".png"));
-		imageView.setFitHeight(90.0);
-		imageView.setFitWidth(57.0);
+		imageView.setFitHeight(CARD_HEIGHT);
+		imageView.setFitWidth(CARD_WIDTH);
 
 		if(!valid)
 		{
 			WritableImage snapshot = imageView.snapshot(new SnapshotParameters(), null);
-			for(int x = 0; x < snapshot.getWidth(); x++)
+			
+			if(card.getType().equals(CardType.DRAW_FOUR) && card.getType().equals(CardType.WILD))
 			{
-				for(int y = 0; y < snapshot.getHeight(); y++)
+				for(int x = 0; x < snapshot.getWidth(); x++)
 				{
-					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));
+					for(int y = 0; y < snapshot.getHeight(); y++)
+					{					
+						javafx.scene.paint.Color oldColor = snapshot.getPixelReader().getColor(x, y).desaturate().desaturate().brighter();
+						snapshot.getPixelWriter().setColor(x, y, new javafx.scene.paint.Color(oldColor.getRed(), oldColor.getGreen(), oldColor.getBlue(), oldColor.getOpacity() * 1.0));
+					}
 				}
+				imageView.setImage(snapshot);
 			}
-			imageView.setImage(snapshot);
+			else
+			{
+				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).desaturate().desaturate().desaturate();
+						snapshot.getPixelWriter().setColor(x, y, new javafx.scene.paint.Color(oldColor.getRed(), oldColor.getGreen(), oldColor.getBlue(), oldColor.getOpacity() * 1.0));
+					}
+				}
+				imageView.setImage(snapshot);
+			}
+			
 		}
 		Controller main = this;
 
@@ -169,7 +240,7 @@ public class Controller
 							chosenWishColor = null;
 						}
 
-						moveCardToDeadDeck(imageView, card, chosenWishColor);
+						moveCardToDeadDeck(imageView, card, chosenWishColor);					
 					}
 				}
 			}
@@ -179,8 +250,7 @@ public class Controller
 	}
 
 	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();
@@ -190,46 +260,49 @@ public class Controller
 		translateTransition.setAutoReverse(false);	
 		translateTransition.setFromX(0);
 		translateTransition.setFromY(0);
-		translateTransition.setToX(- (cardPosition.getX() - deckPosition.getX()));
-		translateTransition.setToY(- (cardPosition.getY() - deckPosition.getY()));	
+		translateTransition.setToX(- (view.getX() - deckPosition.getX()));
+		translateTransition.setToY(- (view.getY() - deckPosition.getY()));	
 		translateTransition.setOnFinished(new EventHandler<ActionEvent>()
 		{
 			@Override
 			public void handle(ActionEvent event)
 			{
-				game.playCard(game.getPlayer().playCard(card), newWishColor);
+				if(newWishColor != null)
+				{
+					showCircleWishColor(newWishColor);
+				}
+				else
+				{
+					hideCircleWishColor();
+				}
+				setPlayerDeck(game.getPlayer().getDeck());
+				game.playCard(game.getPlayer().playCard(card), newWishColor);				
 			}
 		});
 
 		translateTransition.play();
 	}
 
-	public void moveAICardToDeadDeck(AI ai, Card card, Color newWishColor)
+	public void moveAICardToDeadDeck(AI ai, int currentPlayer, Card card, Color newWishColor)
 	{
 		ObservableList<Node> nodes = mainPane.getChildren();
-		Iterator<Node> iterator = nodes.iterator();
-		ArrayList<Node> possibleNodes = new ArrayList<Node>();
-		while(iterator.hasNext()) 
+		ArrayList<Integer> possibleNodes = new ArrayList<Integer>();		
+		for(int i = 0; i < nodes.size(); i++) 
 		{
-			Node current = iterator.next();
-			if(current.getId().equals("ai"))
-			{
-				possibleNodes.add(current);				
+			Node current = nodes.get(i);		
+			if(current.getId().contains("ai" + ai.getID()))
+			{							
+				possibleNodes.add(i);				
 			}
-		}		
-		
-		
+		}				
+	
 		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);		
+		ImageView view = (ImageView)mainPane.getChildren().get(possibleNodes.get(viewNumber));		
+		view.setImage(new Image("images/" + card.getType() + "-" + card.getColor() + ".png"));		
 
-		System.out.println(view.localToScene(Point2D.ZERO));
-		//TODO cardPosition is always 0, 0		
+		Point2D deckPosition = iconLastCard.localToScene(Point2D.ZERO);	
 		
 		TranslateTransition translateTransition = new TranslateTransition();
 		translateTransition.setDuration(Duration.millis(500));
@@ -238,21 +311,31 @@ public class Controller
 		translateTransition.setAutoReverse(false);	
 		translateTransition.setFromX(0);
 		translateTransition.setFromY(0);
-		translateTransition.setToX((deckPosition.getX() - cardPosition.getX()));
-		translateTransition.setToY((deckPosition.getY() - cardPosition.getY()));	
+		translateTransition.setToX(- (view.getX() - deckPosition.getX()));
+		translateTransition.setToY(- (view.getY() - deckPosition.getY()));	
 		translateTransition.setOnFinished(new EventHandler<ActionEvent>()
 		{
 			@Override
 			public void handle(ActionEvent event)
 			{
+				if(newWishColor != null)
+				{
+					showCircleWishColor(newWishColor);
+				}
+				else
+				{
+					hideCircleWishColor();
+				}
+				setAIDeck(ai, ai.getDeck());
 				game.playCard(ai.playCard(card), newWishColor);
 			}
 		});
 
-		translateTransition.play();	}
-
-	public void setPlayerDeck(ArrayList<Card> deck)
-	{	
+		translateTransition.play();	
+	}
+	
+	public void clearPlayerDeck()
+	{
 		ObservableList<Node> nodes = mainPane.getChildren();
 		Iterator<Node> iterator = nodes.iterator();
 		while(iterator.hasNext()) 
@@ -262,6 +345,11 @@ public class Controller
 				iterator.remove();
 			}
 		}
+	}
+
+	public void setPlayerDeck(ArrayList<Card> deck)
+	{	
+		clearPlayerDeck();
 		
 		int counter = 1;
 		
@@ -271,25 +359,38 @@ public class Controller
 			
 			current.setId("player");
 			mainPane.getChildren().add(current);
-			AnchorPane.setBottomAnchor(current, 30.0);
-			AnchorPane.setLeftAnchor(current, 100.0 + (counter * (57 + 14)));	
+			if((deck.size() * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_LARGE)) > (stage.getScene().getWidth() - PLAYER_STARTING_POINT.getX() * 2))
+			{
+				if((deck.size() * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_MEDIUM)) > (stage.getScene().getWidth() - PLAYER_STARTING_POINT.getX() * 2))
+				{
+					if((deck.size() * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_SMALL)) > (stage.getScene().getWidth() - PLAYER_STARTING_POINT.getX() * 2))
+					{
+						current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_ULTRA_SMALL)));
+					}
+					else
+					{
+						current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_SMALL)));
+					}
+				}
+				else
+				{
+					current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_MEDIUM)));	
+				}
+			}
+			else
+			{
+				current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_LARGE)));	
+			}
+			
+			current.setY(PLAYER_STARTING_POINT.getY());		
 			
-			//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();
-			}
-		}
+		clearPlayerDeck();
 		
 		int counter = 1;
 		
@@ -309,26 +410,54 @@ public class Controller
 			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
+			double maxWidth = stage.getScene().getWidth() - (PLAYER_STARTING_POINT.getX() * 2) - CARD_WIDTH;
+			
+			if((deck.size() * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_LARGE)) > maxWidth)
+			{
+				if((deck.size() * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_MEDIUM)) > maxWidth)
+				{
+					if((deck.size() * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_SMALL)) > maxWidth)
+					{
+						current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_ULTRA_SMALL)));
+					}
+					else
+					{
+						current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_SMALL)));
+					}
+				}
+				else
+				{
+					current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_MEDIUM)));	
+				}
+			}
+			else
+			{
+				current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_LARGE)));	
+			}
+			
+			current.setY(PLAYER_STARTING_POINT.getY());							
+			
 			counter++;
 		}
 	}
-
-	// TODO other AIs
-	public void setAI1Deck(ArrayList<Card> deck)
+	
+	public void clearAIDeck(AI ai)
 	{
 		ObservableList<Node> nodes = mainPane.getChildren();
 		Iterator<Node> iterator = nodes.iterator();
 		while(iterator.hasNext()) 
 		{
-			if(iterator.next().getId().equals("ai"))
+			if(iterator.next().getId().contains("ai" + ai.getID()))
 			{
 				iterator.remove();
 			}
 		}
+	}
+	
+	public void setAIDeck(AI ai, ArrayList<Card> deck)
+	{
+		clearAIDeck(ai);
 		
 		int counter = 1;
 		
@@ -336,13 +465,46 @@ public class Controller
 		{
 			ImageView current = createBackCard();
 			
-			current.setId("ai");
+			current.setId("ai" + ai.getID());
+			
+			//TODO other AIs (vertical) --> flip imageViews by 90 degrees
 			mainPane.getChildren().add(current);
-			AnchorPane.setTopAnchor(current, 30.0);
-			AnchorPane.setLeftAnchor(current, 100.0 + (counter * (57 + 14)));	
+			double maxWidth = stage.getScene().getWidth() - (AI_1_STARTING_POINT.getX() * 2) - CARD_WIDTH;
 			
-			//TODO if larger then maxWidth
-			counter++;
+			if((deck.size() * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_LARGE)) > maxWidth)
+			{
+				if((deck.size() * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_MEDIUM)) > maxWidth)
+				{
+					if((deck.size() * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_SMALL)) > maxWidth)
+					{
+						current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_ULTRA_SMALL)));
+					}
+					else
+					{
+						current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_SMALL)));
+					}
+				}
+				else
+				{
+					current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_MEDIUM)));	
+				}
+			}
+			else
+			{
+				current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_HORIZONTAL_LARGE)));	
+			}				
+			
+			counter++;		
+		}		
+	}
+	
+	public void clearAllDecks(ArrayList<AI> ais)
+	{
+		clearPlayerDeck();
+		
+		for(AI currentAI : ais)
+		{
+			clearAIDeck(currentAI);
 		}		
 	}
 
diff --git a/src/application/MainGUI.fxml b/src/application/MainGUI.fxml
index 74c58d8..3d499e5 100644
--- a/src/application/MainGUI.fxml
+++ b/src/application/MainGUI.fxml
@@ -3,19 +3,23 @@
 <?import javafx.scene.control.Label?>
 <?import javafx.scene.image.ImageView?>
 <?import javafx.scene.layout.AnchorPane?>
-<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.shape.Circle?>
 <?import javafx.scene.text.Font?>
 
 <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="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="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" />
          </font>
       </Label>
+      <Circle fx:id="circleWishColor" fill="DODGERBLUE" layoutX="392.0" layoutY="275.0" radius="16.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
+      <Label fx:id="labelWishColor" layoutX="355.0" layoutY="230.0" text="Wunschfarbe">
+         <font>
+            <Font name="System Bold" size="12.0" />
+         </font>
+      </Label>
    </children>
 </AnchorPane>
diff --git a/src/logic/AI.java b/src/logic/AI.java
index daa3659..b18d333 100644
--- a/src/logic/AI.java
+++ b/src/logic/AI.java
@@ -6,13 +6,15 @@ import java.util.Random;
 public class AI
 {
 	private String name;
+	private int id;
 	private ArrayList<Card> deck;
 	private int wins;
 	private Game game;
 
-	public AI(String name, Game game)
+	public AI(String name, int id, Game game)
 	{
 		this.name = name;
+		this.id = id;
 		deck = new ArrayList<Card>();
 		wins = 0;
 		this.game = game;
@@ -32,17 +34,22 @@ public class AI
 	{
 		return wins;
 	}
+	
+	public int getID()
+	{
+		return id;
+	}
 
 	public void drawCard(Card card)
 	{
 		deck.add(card);
-		game.getController().setAI1Deck(deck);
+		game.getController().setAIDeck(this, deck);
 	}
 
 	public void drawCards(ArrayList<Card> cards)
 	{
 		deck.addAll(cards);
-		game.getController().setAI1Deck(deck);
+		game.getController().setAIDeck(this, deck);
 	}
 
 	public Card playCard(Card card)
@@ -151,6 +158,7 @@ public class AI
 			
 			if(playedCard.getType().equals(CardType.WILD) || playedCard.getType().equals(CardType.DRAW_FOUR))
 			{
+				//TODO choose color that is mostly in deck (except black)
 				Random random = new Random();
 				int colorInt = random.nextInt(4) + 1;
 				switch(colorInt)
@@ -166,7 +174,7 @@ public class AI
 				}			
 			}
 			
-			game.getController().moveAICardToDeadDeck(this ,playedCard, newWishColor);			
+			game.getController().moveAICardToDeadDeck(this,game.getCurrentPlayer(), playedCard, newWishColor);			
 		}	
 	}
 	
diff --git a/src/logic/Color.java b/src/logic/Color.java
index 09818fb..de174c5 100644
--- a/src/logic/Color.java
+++ b/src/logic/Color.java
@@ -2,5 +2,5 @@ package logic;
 
 public enum Color
 {
-	YELLOW, RED, BLUE, GREEN, BLACK	
+	YELLOW, RED, BLUE, GREEN, BLACK, ALL
 }
\ No newline at end of file
diff --git a/src/logic/Game.java b/src/logic/Game.java
index 16355aa..00969b3 100644
--- a/src/logic/Game.java
+++ b/src/logic/Game.java
@@ -33,7 +33,7 @@ public class Game
 		ais = new ArrayList<AI>();
 		for(int i = 1; i <= numberOfAIs; i++)
 		{
-			ais.add(new AI("AI " + i, this));
+			ais.add(new AI("AI " + i, i-1, this));
 		}
 
 		gameCount = 0;
@@ -67,6 +67,12 @@ public class Game
 		deadDeck.add(deck.drawCard(deadDeck));
 		lastCard = deadDeck.getCards().get(deadDeck.getCards().size()-1);	
 		controller.setLastCard(lastCard);	
+		if(lastCard.getType().equals(CardType.DRAW_FOUR) || lastCard.getType().equals(CardType.WILD))
+		{
+			wishColor = Color.ALL;
+			controller.chosenWishColor = wishColor;
+			controller.showCircleWishColor(wishColor);
+		}
 		
 		start();
 	}
@@ -142,16 +148,7 @@ public class Game
 				
 				controller.setLabelCurrentPlayer(currentAI.getName() + " ist am Zug");
 				
-				switch(currentPlayer)
-				{
-					case 2:	controller.setAI1Deck(currentAI.getDeck());
-							break;
-//						case 3:	controller.setAI2Deck(currentAI.getDeck());
-//								break;
-//						case 4:	controller.setAI3Deck(currentAI.getDeck());
-//								break;
-					default: break;
-				}	
+				controller.setAIDeck(currentAI, currentAI.getDeck());					
 				
 				currentAI.turn(lastCard, wishColor, challenge);							
 			}
@@ -199,6 +196,9 @@ public class Game
 	private void end(String name)
 	{
 		//TODO alert 
+		
+		controller.clearAllDecks(ais);
+		
 		System.err.println("Player " + name + " wins!");
 		
 		running = false;
-- 
GitLab