From 094c17d16a2d0c5ab09ea30eb8a8a3065ca057ee Mon Sep 17 00:00:00 2001 From: peet Date: Wed, 19 Jun 2024 01:58:53 +0200 Subject: [PATCH] KVA working --- bin/cards/maumau/model/ActionHandler.class | Bin 2585 -> 3436 bytes bin/cards/maumau/model/Initialized.class | Bin 2244 -> 2244 bytes bin/cards/maumau/model/JackChosen.class | Bin 1394 -> 1788 bytes bin/cards/maumau/model/MauMau.class | Bin 6515 -> 6515 bytes bin/cards/maumau/model/Normal.class | Bin 2186 -> 2448 bytes bin/cards/maumau/model/PlayerHandler.class | Bin 3396 -> 3529 bytes bin/cards/maumau/model/SevenChosen.class | Bin 1961 -> 2422 bytes .../maumau/model/WaitForMauMauState.class | Bin 1469 -> 1789 bytes bin/cards/maumau/model/WaitForMauState.class | Bin 1261 -> 1591 bytes bin/test/cards/maumau/model/MauMau1Test.class | Bin 6128 -> 6412 bytes bin/test/cards/maumau/model/MauMau2Test.class | Bin 7597 -> 7794 bytes bin/test/cards/maumau/model/MauMau4Test.class | Bin 10545 -> 10765 bytes src/cards/maumau/model/ActionHandler.java | 44 +++++++++++++----- src/cards/maumau/model/Initialized.java | 4 +- src/cards/maumau/model/JackChosen.java | 3 +- src/cards/maumau/model/MauMau.java | 2 +- src/cards/maumau/model/Normal.java | 6 ++- src/cards/maumau/model/PlayerHandler.java | 7 +-- src/cards/maumau/model/SevenChosen.java | 15 ++++-- .../maumau/model/WaitForMauMauState.java | 23 +++++++-- src/cards/maumau/model/WaitForMauState.java | 18 +++++-- src/test/cards/maumau/model/MauMau1Test.java | 4 ++ src/test/cards/maumau/model/MauMau2Test.java | 7 +++ src/test/cards/maumau/model/MauMau4Test.java | 3 ++ 24 files changed, 105 insertions(+), 31 deletions(-) diff --git a/bin/cards/maumau/model/ActionHandler.class b/bin/cards/maumau/model/ActionHandler.class index 836885c9843c3bc22c898eaa5921c2368b546717..32c809161bae089037ef6120c5286a2d2872513e 100644 GIT binary patch literal 3436 zcmZ`*SyL2O7(ETcw9GW%g2n|=KoS@dCyPo9N+cuTC|kr}1cNp`Ei}&bkXbaEO%t>D zmOLd-c}!(7sf37@NmVM9msI6PrE>1=rl*;?6azi?-tRl#x!-b{fB*aaPXI%>ucJ=G zLCY*;ipiW=<|moUXY6cp$SOH`_l)UgvUWj7M8no)^M;wsn(kt9a$(uFN*W@IX3o~I zZ%hF&ZkG8O&=9kh@&r3TF|PYzNdGl5gK+GXhf_LyRlct z9t~}ZYX>Y1?1RCqjSh_uUrA4-FQkXY(zC;-1<-y2aTq!dkc|Q(O`?vOb#B|47~0Vx zXmo1mRubP(r~!}YAp=cl7LlGd(156hmNCb*C(5}6yKuo=$TG*<$MTk$oiPiJSo@oi z(vnlu(5cGM#z3q=(JlqI)zG127Z{KkSY{rS}Jyp z-B?@_=@I=jXy8@REse5UCTE7v>lor-DVU5%N6{Il&>^PFbS*n8fCT=qft1AO&~fTg z9Bih2J;`F}Uo~xD1fv{1t1^`G*c({-dIKBy%8B*TG-+TA;~bQtoaspMy0apJPaAk$ z&WoGx7wZ`V7sOg;^#nmSzPf6GRy5Hv6_ShQz+Q$I9evq=jx8FR*h^v4I9>Zw`LbIQ z#pcLTQ<@4kttz|Q9M>w?Iol2G89q5*N)84Qb748G^f9l)l#BA#Bz882ML0T^WLboy zii{dq#&ssEV7h!%ZgigOfkxzz*Wm^pV%NY5-loUdq13rbb)F&eP=`e@bg*OU`KoKcb|HlPRwvp=KB?vMNhy|3N+zGJ{B6Nj`fcO4Wkl!! zbS55Sd!l{~I}@vTY7K3PKhS=On+Mm>mFQbT_ph|7!!!K5SH{^*&t|?aw(@5i+OUUQ z_M(U9yF5hnBEc20B{PlR`tYnDcaSzBZd72mRj^}ncRxMaLs-!OD=J}mgV;f}7M1j_+8SU|dezKM*D@O>vyl)=g&B3(N2yNOnc9R+ zFkzFMB;I#=l#Z(8qg!tP20Z}P*_ zDzr#sbe=h?y~WN4JPJ?PeI=2rK_ZXPTEIo6R8bIRMQ*O2-cz043!l!(MZL&vy%g*OF9dwY(f*!N{R7AQM~ct` v{+ss`OZ+qEYn6TS8!qFqWbT!5J{bFXc$4<2$UGuD_VfRH4WDsUhtK~9RO5+w delta 964 zcmah{O=}ZT6g_V;A5CV8jY&;y8=BBSYico5t*u|J^=qnCYt)6{LPCfdY-6yxh?}50 zT^TMS;>NmmVL>;7ZUqta2e@!6`WvM8y&00CQ%jiKx%a+v=A3u$@BZh>p3i^Ye*`dx z%N8_&OsklnFQR*`@Ia%V+IVyV`z-7g7?O>bniF@h2L%DMzEo;d?g$LDR+ChYB>Dwn z*Q>Sa%1y7dT;Zf#s+B8CGNB)lA&Tk~NdbN3UiGdFx2ko4NbU9%E$fS7o<8U==#x1t zGW5%IMS{|n*PDWlZbY#SJ^UL)AF|j<4a+kIVIWQMt`vQ@3Py&rEN5v0QXH*DQ+=+6 zHTI=pg#Tk4fn6N)l#QjDlh_Zzl_?}S#`$fGA6XF{kf{nTM!D?xO{U0m225`aoDKyZ zkih2uKRFwUJcvVq)=3s1{rsbKUIBOb&9+v7!#JY!&tO(jG=WVyikom8MVI23+uHe+ zQ2oa`Kv#+nGjJ^wc^oI`Yb+;jkZbpjp2R6-LXKJ}8YBM}-Wzo(a@hXd>hkdT>A*2C z!?z+Y&CHLzgV&j|zZwnRp!;&4Y%B121`G7m&WVSTN1UZ^_Q=2^KJ|EmM6-Rz=V-gL zJN<+gthJ$UxBKU@NLQVlcqZ8vE}$4#kZUMaX_41|>3^ko{8?&k9xa%qz(sZb(mJ94 BW_|zw diff --git a/bin/cards/maumau/model/Initialized.class b/bin/cards/maumau/model/Initialized.class index b6430f927722d14d108fc4170226d79d33998d8c..26d0b8fb03e77e9cf7ef97a20c81faae6cd6d52e 100644 GIT binary patch delta 236 zcmX>ictmgm6Eim_g9(EfJA)}BgUsXy%rdMz4CV|LlV>sOuvzgiSTop6KErHm%+6rP z$RL@VSd>z%pPN_;MEbe;DXBU7e)&bYi8)*hwhRtD44e#HTnrKnPCN|G3@(#RnXM-? zvdoYLSrEd*5XxY|$iVCF=<6Eq?C9t0>f`Fd&JaF%4vPYF7=y#+n=CgOZ8tF(Z)333 z+QPuUo53~`L~m!X-^Sp$oI%596N9Ue_cjJ!kmx3cV7R(4sJe*B@7WXu#TmpIG=Xl= SWsqbrWsqX9->k^Km=OT(>NfZQ delta 204 zcmX>ictmgm6EibAgURG+%yL4;3}!qGoD5uC3=#|$JPei$R+Eo0TeI0P*s(L%PUd1( zWVUB;n5@UF!{)@p;LPAMIf2=D@_*)8Km$T1Z(~uA4Q4RoWUyff=V6FoaA0KMb$9f2 zjdynRb9VJ{b=iEAtt|}v+Zjx^F_?o`n;5LOF*q(~(D2#B;40+3jlmZr px|<;wsxB0+E^P99Hbp^s25|;WpbK>wBpFN@q!`>cE3z+U1OS(BE;RrE diff --git a/bin/cards/maumau/model/JackChosen.class b/bin/cards/maumau/model/JackChosen.class index 1dfe43f4651312c6c83049d6d951daef0a0ebf8c..ecc281c1a178247676e832000db20a5b8f05d30b 100644 GIT binary patch delta 650 zcmaKo-A)rx5XXPBEG}$Tt$Y+P1=@<*0$QbtD1H@CK+8vhl5pq7ZoFx0Qrf6DHoky2 zdud|gBcNuDn)m?T_%2=>7UCYJN+tPfjs2wg?iNsz>b1B#OjZ7_;*ONZY^dW9@2hnwx6NGQ;aX9f;nvX2S#EX3Ho@U=Z7_tj@*C?*$KipkSQkjp%X$%lpsA9p6D9MdU7 KJ1g3h#p*x8NR15u delta 248 zcmXAi%WA?<5QhJg<4MdR-eQxq@gA==ZS57>rB5LRpUKVHyL71pB?Sw8fNp$+Zu$bQ zMLIcUV1|$R=ATpHDCPHg{{>)*mqacYx6n|6M{XT02R5X{B{~iwbhmGO$>uZUV31!M z?@)?U1ljyV{XLr>Xr^c%3rRsbo@1XKV3 delta 14 Vcmext^x0?wiwGmbW>%3rRsbo-1XBP2 diff --git a/bin/cards/maumau/model/Normal.class b/bin/cards/maumau/model/Normal.class index b028978de4973d40504992bc86fb46bc12c9f660..6ff27b7fc3cc7f96e23f2404004e4ad8391a8b0e 100644 GIT binary patch delta 1053 zcmYk5*-leY6o$WjT6$>Ns901A6c5FrLUEpPs)&e+RVKv&tWp(+stFvG{lk(B*VXvFBb_J7k+Uzg37It4* z)fJipbh$sQEx~SjYz}#G;tELV!)#Dg-nyQ?-v^4HzsXcfsN03VXg(X7T8%} zpI`^&dt{yybF_P|lVyg#z-eQBW#n&X=cTi^404sg$jV4=O4>^Nzc?PRuNM0jx7~NPGZin6)QeK3D8&RhVJY&` zP;sF094xtkQ|?`+DD6*{fq!EDUtX&SYm=4}|1Hn?w>*n`#qG75?b-Jwy~Tq+7njH@ delta 827 zcmZXS%TH5L5XOI}x8=6w7AWs$sXV0R>4S#|J`hl#yg?9rR;Y?#)e2GKf~5%?HD@DB zH?S2oHPOViaYNj?^G|SXg3hHxOkCV^XXcx4=9@X^Mb5fE>+9~v&p;Q8CJsf>%hx&E zl~0xa;%H1O=a5NI|5nvT1(kZ&5pb7NZE=_yU1ijJ!ql16rbv3pa2xeB=*LE9S`$Z2 zjtDVd?--fJF^=mWMvJF~Hj~!<{2e20&Ef=Q3ipGh=xTQ~G4JIhohBU$@0_@gn(Uy( zDNZY#iD-OLkr4_Hrm%7GJ3O4_oJrSTh8?x&rbpqL=$+~vR#^WMyp(g^;sP0pX8%Hb zE)lyIi!Zlz-(QI@#}Zze=(iXkBC_JKC(Dy7iMTWm^@pcSh7`p3J%=fel{RW|FETp(KqGYnHG5 zEoU}qNI|^^8O|hqw)cs_8TUC?#K>O#uxQ(m@eJ6f;W+OMkM#rAU j4AF`x^HU?;Lwmg~DFDG#Z?W&}-9*^F33EXZ2Y3GfXPBlJ diff --git a/bin/cards/maumau/model/PlayerHandler.class b/bin/cards/maumau/model/PlayerHandler.class index 580b21d5c18b4af82515321c45d379126ecb174a..ae217e00f4eb58fa06c1d3a6e05e4314d0d8a9b4 100644 GIT binary patch delta 313 zcmX>ibyAx5)W2Q(7#J8F8T!~6m?nQ<5}WveZKLK67IyBU)ZF~C)X7g-vN*XQY@fu< zk*wK_oXrfa>7+8Ejy83fW(OB|C+GV}9167y1WQi~WFR3;a)iix2J zT5~aUGIX;ubb)LVLXqNOXk?Jwe1o^0(-`c5EFOqb1_xmHFaX&-K$3}} F7XaHmPu~Cl delta 235 zcmX>peME}))W2Q(7#J8F8QRzxm?nQ<5}WveZKLK678Z{5)RM_BShBddi&As*%TnDk zi#A8IW;1dyGBoorq%(ML4rfngX0)BWmn)CefkBkPak2q-Jfq9x3EW<+9t^Auo|Er$ zyD|DqKENqD*_ub4F#yb}0J1_RFW|9Zi~#dL0r@dtmOifrYXVSTB2b_BvI+p=l#fkcq(#NOA#b28I*{0ftltdmxJkqJhBy=pzOo Ly9G!xF|+~z<#;#@ diff --git a/bin/cards/maumau/model/SevenChosen.class b/bin/cards/maumau/model/SevenChosen.class index 450ca4eac2609a6d6690066d1479e9172f6605d8..c7f3ded707267ec4e302232c5e8b56b029369d81 100644 GIT binary patch delta 609 zcmY+B-%b-j6vltkuB>fW&|;JbX{D0bdSPP>G1`DBrJ}JQ3RdwSuI&Je{e#;rs4w6H z>?@cMFHuvYCdO-TeE{CVOT$@88pvd3&V1*a?|gIS)4;#@$v^*p`~vd4GYKgYe%=`L zvnsZ8c{iNQFlTX(c}4%K_6oLJy=^zDHSH===}al$o;`%-qC8;HWZ^)kawuotz(9>3wp%2jwzl zlU2oVP->)LH!8ZOt5H^PEFwe$t=ASc>VCtxel^NCO^Xd~Dk4>RYS4sMKyocw^ou)J zOUY}6X1n2O*QD)F8i}xn^JUxERcgrp(05mz^Z)iusbT+&nY{HI10|odap@}q9qt@k z>jq;TW;@*f&LhP~QUUmxXB}Pz(N9*Eg8dt79oDxQ_b1JvdZT;uO_$*vFgAs;BL%{o xk~PI~Sramnq&d$GMwt+_%mwND7)>q`7lzd}#UQ8UG$qp@G;u}HEr~3!4CNr`MPu6GT-l%t<*~FB=kB7mZ!Jd(UGo>i8 z+&Qr*rI?FBo*|HjA&7yGk%6};wK%oJ+&RBAuOzjIogsvgK@wzulwW>PZek7>Loh=a z4+AFy7f4eC4?`qF)Z_`QmYZeS?lUqIvNuOOy)5}ADK>w0!xw^lZA%O+L$|O1Ge3!HL{=RSi`}EJh0H*P?fewXJCDSR_ zGgY&}CsSQ3Tb0a`X}h^KXU=T!S#V9)G7whidtyE{GZnM;ICE#^iB)n9L=;AMNpQDf zzOWoGQo&d?YvqdND2x?8>wDYx$tpyy*)`j}PGpJw-IGOy@C-pm5kgF(3q1;;lzGCHHL9aq5HAr-nXijKvNh=BzL>p7c(2hC{7qSt}yi3>>4L= zM4_wfn9pXUt^#RX;|sa0kC)9f9LK7;eoDzWp>Y}sauK6MP#nVWD&27HN~U1f-E22f zIAb8K(6im5aTb#-v0b07uDdTh?H|ge=QO^=c`~eTWjMM=NwdCy7c?#khgd~QG#@A| zDKBeW!BvF;Lfu&pcGq6=dA&#t2a(mdhOgNbL>9;qH0t;s==}I(QIxo$@eQU~^t$~k zn~Cj~m&7v~Hw9n+Hhf;7m~$Gp#2jy%H`xXED>jnKlREdMU*^p9pfN+7Oj_0zhWF?X zP7eL}$Ypmm?uq>R5r?V1x>@f*ENCoBy`x0opL#t~)L4?yiTeJx%qk~p5I<-<6wJ~( zIWLn{4!}ki)*4R9%Gokc@tyUUlty7YQXhT~@Y^rb$Tv@z>n=q3+s$1L9sB^%)Su9) z^au35+eAFv#E8Ef zYvR=3NGiNWN={m*8CeZCG1Wf3)WlbBvCwj1Am2*iKlYFO){7k4nR1o}p%?P#T|$iO z7-i_e2zrr5AEs!TCebAlv`Dc^S}#fLH^lKfEAk3Qx5%*3l3@e4kthA{n9)G!BW_+D z;P!i*_ch^AiK>8V%NwByIKCyHYUNWXV2*Z$`BsX*0$G>Sz9#WExFf4{)BkVc{-#7p zIrqINx#!iygZAOFr_jOn!FFXPSZ-jP%1jVZlB*P7Cuz?A88*yWGM%JCQ(KTPw~#Lf T$VCY@!bjv|Wbq?+9r)>gGp&>v delta 685 zcmYk2-)<675XQf=yHW!S1zMrHfEH6-Kn4GxC~BoB6>N>#My?k;>ehue%dSx`>;rgX zvoGL<(d#B=jVAg4zJRaM7tlD%=^wM%Gc(_rGv6=sC;B52|MmC#PXG-pPe5Xr+j=(fn~hrHbYh~c(ZJJ>wU=k%I38cL)2RD8`gdP%2{>oVHh(w zrQ$Sn@2#AX^P=6`k>a7EiW1IvA-R@hU_<)b4D!Hm8FKpW&~Ux*m@YOLv^|^Oa;#ZZ zaTytg2mw9f13u_+J8-J0xQYsc`qUhnqvrxLxTveRjvEYNdLUFUC(UfmqcMS746!xi zrBQYr(<(2SBS*yonheUwe8UMzFSLUhcT}_xqZwlOqA}osd{;#qIzzCW*4UOmS#b=9 zUPdYQUo0CNt47bFI=r&(+I`+KgCgBEysq+Y4LwNo0r}z=O!`PGKC(fo`9c!%oR7jb zbxBCjnS?@T6cNNQg-OgJP8yIBlSrGUie}<0&Ve?FGAiEAp%d(gmk6ad&*Q>ay@(3M z2z7qkrRbD|-=$Az1X;<)6`@@FhMTmM570z?I|w3OB)HE=90+@~@|ZS{!{l(3e2x*B nhLa1(polDL$f1tow7~p-_?>h zSGqRQ8eRAU{7WXrb7zJY6iV8e+XLM*2h`H$sx zHuP+4O*5>-j=7)}S1ira6?g@jx3%Y5EUV==V@vDXdd5=V69^p>y`0tdbkmL$P`0%E zMpidjD0QOmyyFuW@ZB`>hILzDD15qmBrV{bA!0u~Xi!myMgdPalCA^ss!&iX(3CRr z`eHG+uA8gcdR7-`P3>f~Y+5r7xpxn})|OEa7(A}(KXMReZC-zAtrpEZ0fdv0v>#mv zDhLSlokmhcH_i#vZ|c@#J*P`t0zKi#afKZv<9>wDr=V9LaAI~9=g}chw_$28W@JYt zqyZI!vRE^V%@j>j&s$DPnQ>Uf1%$~(8f65PAq>0CMa#&>Qbxgw*CUFH3PuDPk6Kh* z!YKP|6y|cf)}Af=6It}KiYpi+!@^;Pp(_21I|5!+F(ElLWMzLAU4>=JYbvf|N}!!k zE6q3k)i*pfo2`+?VFgiur(@TVHUHM3U6G&pcbucHOD;@J`aQE6`nKK6q{DXS@1W zc8X?3PZ)C0+bUYwbw*_eIVS|p=M0}#c}Ms$@N!)TKi~D-B~Zg3;E#TT8XftHrqA5f zpoQ;7#sWS@D2%9O2B5?7##yv+$2dDHaig6!JE!ouIrpPq&{RUFw}c*N*Eq!zcD-2&h0~tIhx?9 zt4VOgA=LR1EfuaufjPQ|2&@+Y_OPORuv{>R6c*fq>~Mg~#d5I;qL57$m0tSj01O|> PCCa&kn@eEH4qW~VCP-tE delta 425 zcmYk1OG`pQ7>3_DV?uh=PTulpQBis8Vt312v^qoyQ{#zIv-B z>W4lJ1O(EarPWA7o%nI{OT~Avz2bsRLPIv0@>8V$ZFp zSVe-tdtsPIM#E@Sjke9#Rcs)|5GH;qF3r7GyCgcak4<43@`2CzeI#pFC2?IA)w&_y z_}wk4P-p?unMVXHL|qofZ5g*5jMvuWC1C(vKgyD1T?V>A{kzbv@~mxm!5z?;wGRr6iG|)Rtx{q z&5Vq4q*4j^M8A)PqqUY>>rc|AYv;T;=X-l|PJhCt@!n7W-uEGp z#_xN)H6hBw7fy$~I%ZaJX`#QsO9qF09Oj5%cy3O4T2}eu;-VS;qU?g4QbF|1F&WMw z85VgNp6ul-x;z{eTtCRhUdHA&6!?pB6aEF0gZNG`akDqh=`g{1K@i_NoguBF*IDbEHsS{#KVk*8 z(7)8}U^4mH$LW?HUx;uLLaj3}EJZ{+iJ?isJ1}nHiEk+i?K81gb;Jee4De-uZ`#O; z)B)O?dD#UQx$C8@Gj8}bQ6G;Dusp!ZLGI+B_`jvw=?J^YIS?K%PCDnqM-J$pvhW|EBKb~%Y;nNEtF%^h++sWOi{WjT}O3ex1$q{~{S$gND3 zjZBlxOqctaAwOfL?BcE}*~{JX3>k8OSxPWlg>bJL$$e@xb5uNYRWkRh>C97ec|c|I zpvvMQRYIn!;9*t6d{xT=wT*>pCyP{oN7MoQ>JuJShsjpQ$WgsKruxZMf03s>EY@M< z>rp(e$55b?s4CQ{6zgg0&`^Y7Es1-oEJ?mFPT2JnhU&QVVm{xs*R-H-pFeLi>^$DEe%`cs?66B{w5xc_u4AXIW0$RGx7|&XZR2fwkauh+@7gZ**lt?v(o?kB zv+T8h67U$_^IS=r=UU$PM6=H`mJbMVzhlD1=f%e`5DjJ{XZQsnn#^h<=|hTEQ^BvC cMTvG($~kw^^t(=?vQj+NDN*GW^UtNmBUrs`}4T>J(HQT<0Gt{V#86q@P8 z_n4<&k)=N{Uw^}AJS;GwEHsr_Y-*EjqF7?0S!%kHV+OL!jAXeSe0!dZ0(+5TwvYFN1R;VfR4uPc)zYE* z(<)lE(?&)G@hGuWJ0-M5?MsQBLUPI1QMw4k1S zK&jsUsc8^@a#mpa64Sb+CXN*Zdpi3P(~~k{+c>W`D&9pBg+ZL>g20uSk&&F9*(*IO zS)h61qu!ES5?Fn^7tUW+5}4Iba>efMP7S#h#B~hElQAr1q@>v1?+(>V1k3x{+pHDh zmOZ;_R_N^@?o^tL;fYz!wTP!Ih`Z}+1y>QGp4~7cPDI!#A1cwiz0o z$I)CoxzrEPAdiy)&c!&~j;;QJeL2jnT#T{nhdn1Q+tsSqvUi0weIgtPtt+nDH$x*D zT#U(MOdjI{_?{^W*Pf6YPWy+C2bB$V>^b4lqR7q<4|D%_cC)g*X&$Ay{N+RjI7I2jl^kU#Z?-M zGMXp~O_i#=s60zEr7kZi5xlHK(?V%UOQj93C|&U?3A9p%&|1mlRb?EnDN~43=J2|* zkT%L{+A6uUQ?~PlQb2p{LDc{(cB=%n1HvnuGKR^d%GjIL?~-PA^OSH1L5+tX9+ zNiQ{?-l~tc)xo@@j-rn`k$80)ebu=ns7vUl=Fnf=%m8%<1Jymes~*9po+U{wCRx49 zAWdbk7Qzs%HYu8ip;|2dVOk4@YwbwWx-vpbV5ByPQCbG+nx719CYjnivb05v)>iSJ zwvn;gcHY7h*4BblN%;v?P5RJ|P^>phsJ_h-63 zlo|SHX6h68M4!qmeXgI``XWBnvzeoB( zO};WB`PyjABBM3m7#&$`^k#{Xz)~Zbu6P%6c=H4Q6dNnjZ4ZW^6LO1kAQI3*`@TF&5%v^guk(%GHW<@tufrQCQ)w9 z;=Z*2Uxl@j2UZRbtvnu4#o2{s|1LQ}xIrwFHMmDPLgYvn;oL_N8>C7F4^YKcvx0{X T(wr<#LOk~Wjc~9dId1U}tS*2) delta 1165 zcmZ9LXKa>L6vuyeJony*wyXq8UlB=zShbW9sz4!#EK#tGfY=rU*;6(u<5e~e5FZRO ztVmf}t5TpT2ow}hC;^pGSp^D|SqlXr#sqx{MvXb=!#U?aKAhxV(IO|M(!RS}wgauX zwZ2kvOm)XE0zbWL$&#${{Q12d$Adp(MkJn$<`hPt#|6ImebTrT&E*Yyt3(M=J2+CcwWt%sR!jCZ zUZn6>ZRk-g+Xks269hFL3)aQOh@zlNT&y@2G>UyNm=V|bpMB>8wNxG_g3Oxn^@{4} zF)5EJ`Sh<|9H;+X&LrkB{cqr&#X~{2P@*Uf!l9Zm|HVq~*_%Ah=W;RF9eVhG;Ehn- zuw+N%PmhQ!>WLg46&pzqTX|gU;R$hwL~)Ax;xb9%HVvetp{z_JS%b#1Hceza$uf~A zWiy_VZD=Y}X(lshE{BjJ$J0Virlp)oE4h%T z@T|Pab4u{MilURMNoN($3o40Jl|mQQfv&1M-BcRgReyS@!SqyPcu`HGmzv88H-{iYlYOy2Aji7^tf`KzOKb%5dF|5jvHT zI)hPq5U=WSjMibs=yw>a7c)+0GG4D`qTa+LUBGL4KdJk*3OMZwIpc~r>xwCH7dh{4alzfC)Q{q#UxQ12JeU0>uK3Nl>bK{b z-)A}R diff --git a/bin/test/cards/maumau/model/MauMau4Test.class b/bin/test/cards/maumau/model/MauMau4Test.class index 7e2a8856a1788f34a9dad4ef68e50d4b715bd445..7b9976e4c5045deb816d0294f7e1015233c55874 100644 GIT binary patch delta 2826 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 diff --git a/src/cards/maumau/model/ActionHandler.java b/src/cards/maumau/model/ActionHandler.java index b71e657..49574f0 100644 --- a/src/cards/maumau/model/ActionHandler.java +++ b/src/cards/maumau/model/ActionHandler.java @@ -2,12 +2,13 @@ package cards.maumau.model; import cards.Card; +import cards.Rank; import cards.Suit; /** * Manages the actions and state transitions within a MauMau game. */ -class ActionHandler { +public class ActionHandler { private final MauMau game; private Suit chosenSuit; private int ctr7 = 0; @@ -32,6 +33,10 @@ class ActionHandler { this.handlerState = handlerState; } + public HandlerState getHandlerState() { + return handlerState; + } + /** * Adds the specified player to the game. * @@ -45,21 +50,23 @@ class ActionHandler { * Starts the game. */ void startGame() { - //TODO implement + handlerState.startGame(); } /** * Transitions the game state to GAME_OVER. */ void finishGame() { - //TODO implement + // handlerState.finishGame(); + gameState = GameState.GAME_OVER; + handlerState = new Finished(this); } /** * Transitions the game state to GAME_CANCELED. */ void cancelGame() { - //TODO implement + handlerState.cancelGame(); } /** @@ -68,7 +75,7 @@ class ActionHandler { * @param c The card chosen by the player. */ void chooseCard(Card c) { - //TODO implement + handlerState.chooseCard(c); } /** @@ -77,21 +84,21 @@ class ActionHandler { * @param suit The suit chosen by the player. */ void chooseSuit(Suit suit) { - //TODO implement + handlerState.chooseSuit(suit); } /** * Lets the player skip a round. **/ void skip() { - //TODO implement + handlerState.skip(); } /** * Handles the player saying "no 7" in the current state. */ void no7() { - //TODO implement + handlerState.no7(); } /** @@ -157,8 +164,23 @@ class ActionHandler { * @param c The card being played. * @return True if the card can be played, false otherwise. */ - boolean canPlay(Card c) { - //TODO implement - return false; + public boolean canPlay(Card c) { + if (chosenSuit == null) { + if (c.rank() == Rank.JACK) { + return true; + } else if (c.rank() == game.getCardHandler().getDiscardPile().getFirst().rank()) { + return true; + } else if (c.suit() == game.getCardHandler().getDiscardPile().getFirst().suit()) { + return true; + } + } + + if (c.suit() == chosenSuit) { + return true; + } + + else { + return false; + } } } diff --git a/src/cards/maumau/model/Initialized.java b/src/cards/maumau/model/Initialized.java index 88f829a..296a733 100644 --- a/src/cards/maumau/model/Initialized.java +++ b/src/cards/maumau/model/Initialized.java @@ -19,12 +19,12 @@ public class Initialized implements HandlerState { public void startGame() { try { handler.getGame().getCardHandler().dealCards(); - handler.setHandlerState(new Normal(handler)); handler.setGameState(GameState.PLAY); + handler.setHandlerState(new Normal(handler)); } catch (Exception e) { System.err.println("Not enough Cards!"); - handler.setHandlerState(new Canceled(handler)); handler.setGameState(GameState.GAME_CANCELED); + handler.setHandlerState(new Canceled(handler)); } } diff --git a/src/cards/maumau/model/JackChosen.java b/src/cards/maumau/model/JackChosen.java index 5a9bb82..c9a7743 100644 --- a/src/cards/maumau/model/JackChosen.java +++ b/src/cards/maumau/model/JackChosen.java @@ -14,8 +14,9 @@ public class JackChosen implements HandlerState{ public void chooseSuit(Suit suit){ handler.setChosenSuit(suit); + handler.getGame().getPlayerHandler().nextTurn(1); + handler.setGameState(GameState.PLAY); handler.setHandlerState(new SuitChosen(handler)); - //handler.setGameState(PLAY); } public void startGame(){} diff --git a/src/cards/maumau/model/MauMau.java b/src/cards/maumau/model/MauMau.java index 1b5bfd0..7e4fafa 100644 --- a/src/cards/maumau/model/MauMau.java +++ b/src/cards/maumau/model/MauMau.java @@ -78,7 +78,7 @@ public class MauMau { * * @return The action handler. */ - ActionHandler getActionHandler() { + public ActionHandler getActionHandler() { return actionHandler; } diff --git a/src/cards/maumau/model/Normal.java b/src/cards/maumau/model/Normal.java index 206b498..9b3f898 100644 --- a/src/cards/maumau/model/Normal.java +++ b/src/cards/maumau/model/Normal.java @@ -13,7 +13,10 @@ public class Normal implements HandlerState { public void addPlayer(Player player){} public void startGame(){} - public void finishGame(){} + public void finishGame(){ + handler.setGameState(GameState.GAME_OVER); + handler.setHandlerState(new Finished(handler)); + } public void cancelGame(){} public void chooseCard(Card c){ @@ -24,6 +27,7 @@ public class Normal implements HandlerState { handler.getGame().getPlayerHandler().nextTurn(1); handler.setHandlerState(new SevenChosen(handler)); } else if (c.rank() == Rank.JACK) { + handler.setGameState(GameState.CHOOSE_SUIT); handler.setHandlerState(new JackChosen(handler)); } else if (c.rank() == Rank.EIGHT) { handler.getGame().getPlayerHandler().nextTurn(2); diff --git a/src/cards/maumau/model/PlayerHandler.java b/src/cards/maumau/model/PlayerHandler.java index 85d9819..1f4a44a 100644 --- a/src/cards/maumau/model/PlayerHandler.java +++ b/src/cards/maumau/model/PlayerHandler.java @@ -56,12 +56,13 @@ public class PlayerHandler { public void localNextTurn(int n) { for(int i = 0; i < n; i++){ - players.addLast(players.getFirst()); + players.addLast(players.removeFirst()); + // players.removeFirst(); } } public void finishPlayer(Player p) { - ranking.addLast(players.removeFirst()); + ranking.addLast(players.removeLast()); } public Player getCurrentPlayer() { @@ -97,6 +98,6 @@ public class PlayerHandler { } public void finishGame() { - finishPlayer(players.getFirst()); + game.getActionHandler().finishGame(); } } diff --git a/src/cards/maumau/model/SevenChosen.java b/src/cards/maumau/model/SevenChosen.java index 2ede84b..b999aa1 100644 --- a/src/cards/maumau/model/SevenChosen.java +++ b/src/cards/maumau/model/SevenChosen.java @@ -20,16 +20,21 @@ public class SevenChosen implements HandlerState{ handler.getGame().getPlayerHandler().getCurrentPlayer().playCard(c); handler.increment7Counter(); handler.getGame().getPlayerHandler().nextTurn(1); - } else { - } } public void chooseSuit(Suit suit){} public void skip(){} + public void no7(){ - handler.getGame().getPlayerHandler().getCurrentPlayer().drawCards(2 * handler.get7Counter()); - handler.reset7Counter(); - handler.setHandlerState(new Normal(handler)); + if (handler.get7Counter() * 2 > handler.getGame().getCardHandler().getDrawPile().size()) { + handler.setGameState(GameState.GAME_CANCELED); + handler.setHandlerState(new Canceled(handler)); + } else { + handler.getGame().getPlayerHandler().getCurrentPlayer().drawCards(2 * handler.get7Counter()); + handler.reset7Counter(); + handler.setHandlerState(new Normal(handler)); + } + } } diff --git a/src/cards/maumau/model/WaitForMauMauState.java b/src/cards/maumau/model/WaitForMauMauState.java index 52c48c9..95acf68 100644 --- a/src/cards/maumau/model/WaitForMauMauState.java +++ b/src/cards/maumau/model/WaitForMauMauState.java @@ -10,9 +10,19 @@ public class WaitForMauMauState implements PlayerState { @Override public void nextTurn(int n) { // Draw a card and proceed to next turn - handler.getCurrentPlayer().drawCards(1); - handler.localNextTurn(n); - handler.setCurrentState(handler.getWaitForNextTurnState()); + handler.getRemember().drawCards(1); + if (handler.getCurrentPlayer().getCards().isEmpty()) { + handler.setRemember(handler.getCurrentPlayer()); + handler.localNextTurn(n); + handler.setCurrentState(handler.getWaitForMauMauState()); + } else if (handler.getCurrentPlayer().getCards().size() == 1) { + handler.setRemember(handler.getCurrentPlayer()); + handler.localNextTurn(n); + handler.setCurrentState(handler.getWaitForMauState()); + } else { + handler.localNextTurn(n); + handler.setCurrentState(handler.getWaitForNextTurnState()); + } } @Override @@ -23,13 +33,20 @@ public class WaitForMauMauState implements PlayerState { @Override public void maumau(Player p) { if (p == handler.getRemember()) { + + handler.finishPlayer(p); + + if (handler.getPlayers().size() == 1) { + handler.finishPlayer(handler.getCurrentPlayer()); handler.finishGame(); handler.setCurrentState(handler.getFinishedState()); } else { handler.setCurrentState(handler.getWaitForNextTurnState()); } + + } } } diff --git a/src/cards/maumau/model/WaitForMauState.java b/src/cards/maumau/model/WaitForMauState.java index 774645c..24c3386 100644 --- a/src/cards/maumau/model/WaitForMauState.java +++ b/src/cards/maumau/model/WaitForMauState.java @@ -10,15 +10,25 @@ public class WaitForMauState implements PlayerState { @Override public void nextTurn(int n) { // Draw a card and proceed to next turn - handler.getCurrentPlayer().drawCards(1); - handler.localNextTurn(n); - handler.setCurrentState(handler.getWaitForNextTurnState()); + handler.getRemember().drawCards(1); + if (handler.getCurrentPlayer().getCards().isEmpty()) { + handler.setRemember(handler.getCurrentPlayer()); + handler.localNextTurn(n); + handler.setCurrentState(handler.getWaitForMauMauState()); + } else if (handler.getCurrentPlayer().getCards().size() == 1) { + handler.setRemember(handler.getCurrentPlayer()); + handler.localNextTurn(n); + handler.setCurrentState(handler.getWaitForMauState()); + } else { + handler.localNextTurn(n); + handler.setCurrentState(handler.getWaitForNextTurnState()); + } } @Override public void mau(Player p) { if (p == handler.getRemember()) { - handler.setCurrentState(handler.getWaitForMauMauState()); + handler.setCurrentState(handler.getWaitForNextTurnState()); } } diff --git a/src/test/cards/maumau/model/MauMau1Test.java b/src/test/cards/maumau/model/MauMau1Test.java index 10ae63e..13ba1a3 100644 --- a/src/test/cards/maumau/model/MauMau1Test.java +++ b/src/test/cards/maumau/model/MauMau1Test.java @@ -4,7 +4,9 @@ import cards.Card; import cards.Rank; import cards.Suit; import cards.maumau.model.MauMau; +import cards.maumau.model.Normal; import cards.maumau.model.Player; +import cards.maumau.model.SevenChosen; import org.junit.Test; @@ -150,8 +152,10 @@ public class MauMau1Test { assertNull(game.getChosenSuit()); assertEquals(0, game.get7Counter()); + assertEquals(Normal.class, game.getActionHandler().getHandlerState().getClass()); chantal.skip(); assertEquals(PLAY, game.getGameState()); + assertEquals(Normal.class, game.getActionHandler().getHandlerState().getClass()); assertEquals(List.of(jacqueline, chantal), game.getPlayers()); assertEquals(List.of(), game.getRanking()); assertEquals("[A♦︎]", jacqueline.getCards().toString()); diff --git a/src/test/cards/maumau/model/MauMau2Test.java b/src/test/cards/maumau/model/MauMau2Test.java index f62fe2a..a2e28b4 100644 --- a/src/test/cards/maumau/model/MauMau2Test.java +++ b/src/test/cards/maumau/model/MauMau2Test.java @@ -4,6 +4,7 @@ import cards.Card; import cards.Rank; import cards.Suit; import cards.maumau.model.MauMau; +import cards.maumau.model.Normal; import cards.maumau.model.Player; import org.junit.Test; @@ -26,6 +27,7 @@ import static cards.maumau.model.GameState.GAME_OVER; import static cards.maumau.model.GameState.PLAY; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; public class MauMau2Test { private static Card c(Rank r, Suit s) { @@ -186,17 +188,22 @@ public class MauMau2Test { assertEquals(List.of(jacqueline, chantal), game.getPlayers()); assertEquals(List.of(), game.getRanking()); assertEquals("[Q♠︎, Q♣︎]", jacqueline.getCards().toString()); + // assertEquals("[Q♣︎]", jacqueline.getCards().toString()); assertEquals("[8♥︎]", chantal.getCards().toString()); assertEquals("[9♥︎, K♣︎, 7♣︎, J♦︎, 9♦︎, A♣︎, 8♠︎, 10♦︎, J♠︎, J♥︎, J♣︎, 10♥︎, K♥︎, Q♥︎, 7♥︎, 7♦︎, 8♣︎, 9♣︎, 9♠︎]", game.getDrawPile().toString()); assertEquals("[Q♦︎, K♦︎, 8♦︎, A♦︎, A♥︎, A♠︎, K♠︎, 7♠︎, 10♠︎, 10♣︎]", game.getDiscardPile().toString()); assertNull(game.getChosenSuit()); assertEquals(0, game.get7Counter()); + // assertEquals("[Q♣︎]", jacqueline.getCards().toString()); + // assertEquals(Normal.class, game.getActionHandler().getHandlerState().getClass()); + assertTrue(game.getActionHandler().canPlay(c(QUEEN, SPADES))); jacqueline.chooseCard(c(QUEEN, SPADES)); assertEquals(PLAY, game.getGameState()); assertEquals(List.of(chantal, jacqueline), game.getPlayers()); assertEquals(List.of(), game.getRanking()); assertEquals("[8♥︎]", chantal.getCards().toString()); + // assertEquals(Normal.class, game.getActionHandler().getHandlerState().getClass()); assertEquals("[Q♣︎]", jacqueline.getCards().toString()); assertEquals("[9♥︎, K♣︎, 7♣︎, J♦︎, 9♦︎, A♣︎, 8♠︎, 10♦︎, J♠︎, J♥︎, J♣︎, 10♥︎, K♥︎, Q♥︎, 7♥︎, 7♦︎, 8♣︎, 9♣︎, 9♠︎]", game.getDrawPile().toString()); assertEquals("[Q♠︎, Q♦︎, K♦︎, 8♦︎, A♦︎, A♥︎, A♠︎, K♠︎, 7♠︎, 10♠︎, 10♣︎]", game.getDiscardPile().toString()); diff --git a/src/test/cards/maumau/model/MauMau4Test.java b/src/test/cards/maumau/model/MauMau4Test.java index 54a10af..dcba3f6 100644 --- a/src/test/cards/maumau/model/MauMau4Test.java +++ b/src/test/cards/maumau/model/MauMau4Test.java @@ -26,7 +26,9 @@ import static cards.maumau.model.GameState.GAME_INITIALIZED; import static cards.maumau.model.GameState.GAME_OVER; import static cards.maumau.model.GameState.PLAY; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; public class MauMau4Test { private static Card c(Rank r, Suit s) { @@ -128,6 +130,7 @@ public class MauMau4Test { assertEquals(0, game.get7Counter()); chantal.chooseCard(c(JACK, SPADES)); + assertFalse(game.getActionHandler().canPlay(c(JACK, SPADES))); assertEquals(PLAY, game.getGameState()); assertEquals(List.of(chantal, jacqueline), game.getPlayers()); assertEquals(List.of(), game.getRanking());