PK6META-INF/MANIFEST.MFMLK-. K-*ϳR03MuI,.R(N.* .I,*PK4L43PK !6sctest/PK !6 sctest/view/PK !6sctest/view/resource/PK a}6'Hpt&t&(sctest/view/resource/Schellen Koenig.gifGIF89a}_^\''4ca%655q!+vWVq;544I/.??Qrpn)2ĹzJ-/&&HGBOEIHH~}-?߻>!?,}p(`jȤrl:ШtJňXb-Y &xL.zn]@~~-;u< X1z B;1-5?=.H/p7ĄGGT5:/$ng H>;5=/ ȯ"\pÇH`" ^ jTpa=$\ȳe˄/,N,OLȑcޟ]$d:\I&ދn5p8򥆌7&(B\ zч!s:رM?v克& JJ 9b4 bEtpcNJ!VNJf>a c 0BF !x@* PdC. rAXpxP$qVج-\`0P 8lhW1#L~8J1N(wxd ~v䛗{'frA )H uٍV# FoM@`5J9Dp <|}$%Cz~|4s )0@ 0B"`@h7`-& 2E`[&,[/ r){;6ިfwɀ 6@`Â(N5D0E;$0="W"t@`!dT 5@jcG  v 1:@UÇ `U 7zRFeTA- 0æv2AZO9)iRR'Rj2ߘ0b52\AR[ 3ƿpYt+,`+'Vk`w5_ o/%_L aJ\ vŹoxX D:^rfI1K0Švs&C+a 'Aq~^U8`m#tn8+03V&tAwpУRٿPO`7݇l 3oNx#@^#LT`PAFx+蝰w.3:@8[`A! {{` 3@B.PV咹#݋LW`S/@; r`@gA3j`  AP]yk! V@#N=@s0P]JAm!I<EU1އD ,)&E/Xu -)LzhF $[E\Ga[;ƅP8 Ɛ,JX\,d8t9f=T#81@4=؈3):/,c*fE? P((pvc.|Z9V* JS樝N7 D%jZ5 `H{"~-*+@(sX+QA#\XESh,z;AXӲH@uk6Κ `q#9dEXP6tjXNJm Ά@@FSOw>m"dc2z |"A K3l^R[ pLk|k3z!HN ڍyр%6@&E}?36k<\L/l8F4o6,138&%pN׃8H>4l'228Ъ K5S8` *{r?Pw8}ˍ{n#'f1W0M,I'3Е$,c xP~8&[q #m wpӈTPlR7̩ת ջGsP`ˋ6OcI@2 (HhrE:`n{ <7@dmmC\܀FP; nvRxA؝ 7\#h@NbMEW~ Lv5 BtԽSKȀ655R6;l ,ELK0.<j. 6{nb:u` :A~d=z+zp Ҁ@b$Ҩ ]L(ɮ݈:?D:k Af?W&lKA@4!滫-=14g= \h(P!JegʊM)W= =0MJ:U7oBa+J\GJ|CvݻsG;`++gLQTـ92=pz MV4pbNz0  B[!U"ofxw00j`4/P ҂,ӛ:fx"bMzV (ڂjU My2|!6kiyb%ˮl7[,lU "*SO;$V봰'ra2i)3"04kڵ`!: tK/=D#! LˣXp}n?{9Iac"ϤCB%>\͕\2:&+m; ++zk X+PIQMLy$(kfUmoH@2.;2i)Ф9r;M&A$TtLRkUyo#B5yC͛|Y>lnb>wg T  Pn{3)`B) \8k;*3jc[Dͤ+>X6K*V+T +pHEf%-\#U#C̣fĔ{"Rek*Ԣ S@i%,u!({P89*>5"SّA,:ǰQMb89ppv *e B{RQ*7 {9D8XFK 7gjE|FP躙]GSK/C,(ÌE;*iggUAEiy,T$*Ա8#5ʗ00X ɭ0x7wk Ld'Yl&+mm{y$0̪ yxiLکz/}#9"*]8L|jie*s*޳{Іy姛& ([+3ѩ kD[8t+=E " Ծl+1zεLz qp86 QzL֒<'!&;z|/>֡=MMOͣ:׬+"=Imh#Í(Cr֨ ,؆ck 0?}uffdm02Kd@N*E@L0M ߆ zDm"KE<"Q~8ڕ89& y@bc^ILn P/{05>}ی 3#Yf @=tLImd/͆)!Y+`=Tk 8W؝;Od6brۃ;m|9~!Ȣ$G5B=պêZ|y-'Iܢ5PMG:w>#z,d;ů{6&ׁt208ރޢ) ܬ> KL8~&7A\i4oD%ū3a`+PNS`{Z/ 5B$44; -\C:s"'`s# #ٷ!m"pS )8,-U:L+mV/=R%pceB>PX J"<|8\Y=mJ3@EU͉Tv$V2VC\aw][-I>W2_ݎm"_ɛ>7"2,<Ya 3B6҂DA0װD:N'3"(>`% `OcFQBC{#sW]El*Ô:%C"@BJ:U8Nu3i͇(),"d"22.."vj$#$[֘8#̶R F"vdf$D:=.drj0zzBrrD Dd {,(0h9/`:L 6hrf `#h/"hT~C,0i/HFM5l+(̨uǕ*1APXd"\  4@  +5 @mpZP !d:!X+ ٿ>Zİ j԰ObCiR%F #0,Y[rk@YIH(:" "Z[ N@-dpm ǐ|u C K'BǢiK%.R(Gu(BB5N 2taEq40cB)@OK"+0qL1j -Zhr5ɜp.(ZRA h .>#(@&`f.'Pob[SV’(bBd0 x@Hb QͅNݴ+}9w8t 6 (3;ܨ:5a* `C(?mQ(qy;@ $ [&ɢ,IA(HJ N<<լ˅@]`@Yb}Ġ&:eP+@#Ж j@ܤ. @v 4)? AxjC? `2t i'EЧĈeQb4\f3BlU)@Vo ]R~A тd)oO !g PgaP*Ӄ8&QbvֈU<=Z@ T0eSuBU4@@ ?b5c5<ZK:M: %?,m b2(a#RM 0@ܖ> 0uћ 2@`d3zI,4VW~1IҸ`pfo}l`h^|`K;)'h-G[ %@@.&,P| s~5'bs$u$45`Hk,}:(@*`r7kc#W7,crIS2ʶM.p 7\ `ext0Q""^c]53 #mGQECv8zL  hhh`+SJ ;@ m5ț6B[8uf|%Y[u@jvAXG|d(-ݱc8 zS0LoulELK_X#5{jcffϞk_][֌R@Jq]<& X Uk82^KZAJ uȹ>⚞v sӼ6?Pf!=yF_4LwV ѲX\el;fugwn<9NFXׁrnd7@%|z6 nZ吏+x{YlxF~ (GSO7z~>P0at`L@ nh `,*0k*@.@~`n*NK0#n!Iv j` ,a. E@>N@,@fRf`8r@^ hpPĶ dtZFb, `r0`p0h$ dlޢ,82yP pʥ@,.Fgl.@2`'aP齾yDCbpүH!Te Xb1XèTqwF0) ?qmnQcDB$h@nml KqQ " iP"@g^ nf`~a.1 `}1 K! B`"`! n߀Q "{QUf`bPqTC U2yc|!& >-NM'N ΄Q#K1R`'n m)r`}t,0vz@*ta+-kbƈp- 1)n)!2-o ZxtQ'Y pn-K!Va-1< V 6S' @LHTR5U3 5a3-;&BF7{Tr 83 L8]8Y3,55'3cJ3(ޭ8=ϳpbFF4?JpEEi1TAR@&C]rL5]HQIL=9/i1ڄEOT%u!PtL_)`' _@$P7@E0eJNO3T5qbB%^PT= aRqk7 Pa4Tt_Tc4mn&P3szB#&NV=y|"@8@ִ\*d 2I^`8{ W`(=bn@\U)%V5Ko8=cz aIcP` Vz46b)TjI5b%VkݓZfU6e6K}GeVb%5ٳgiWg״w!JGP6kvkvkWk6lvlvll6k}$t(Avn鑶nn6ovoֵm[0 p pwJ~qq!0r-r1ׄ~ 0sA7tY8LtQ7ut9Iueti@\twgwwUvvo xx7ywyyyZv;PK 364L33 manifest.infManifest-Version: 1.0 Main-Class: sctest.Start PK b}6jF(sctest/view/resource/Schellen Sieben.gifGIF89a}poh:Xc`.In "$>24 3012QTRDNsn'"(*E4MCUKJ>&||1R><9@eZK~ۅ^@WVO!?,}p(lrl:ШtJ 0,{% xL.zn 9X~~0u62 tD=4z B0/ ;6?:4:6'p'>;Gπ 6GHU66 'a;@0A f#JtHŋ3jx*@`!r\ɲˇO l(1'@ MV?5ȀPOi0ЫpA$h7@|ɵu'i.\aR໠C㝗 ʖ1Gp!@=$:l0Ұ{`ϱ=b1+Ff vhMݎk _f@ l΍)>Axu;"g@ 4L^a |/ $x߈& W4Ab <4x ؃tҦ«8`Vz 0`f@ffn&@-.nQJ}Wg  B01[fqKýV6VOsp$jm˵Ɯ HgV =[ 0"1w)h[0kA O>B 50w}ZP"A+>-h?»qM/K0pF.l'* g8p|yƞ17Į-$Fa$ ͼχP;׏'y {|6owңά˵P ~ 3ݽƅ/rGðkیGdM~ @e p[Cp'AesS_Php wi^Y \7N48 lѻiED@ Z P*1;.8A8_7@ܶj'0=PE"Sb?GA O*Pzl429*`p x}; A*@ G*i%J|Hk1c(Ih7_m- `q\$`_Բu+߃g@$׺ض`24)O д4K"B '&~ ,K< K1Hs@^J39`@0F \ȸlC"Wsȼ+|F 8@J7``\@l0hV:f.5@ XR:| c-@ P:8`勒 V05#AD0iG%÷ V$7 n+Zʠ^h8V0LS^h|+O\Tr(UYtoaX!` GzP W GL%-Ph+IJ0Tmu>Hx$=v VG c~QN"8 zz X`ȭ|;ЗuՖ~lg1 r c@)q\^cVJAj{8`_݀)0Ghk:[iq>DBܣJ1] ]?w.N`= rP#P/JdV>ր2v[ԧPQ* P3ܰ$;sXrxArGX6exJArh՘A]h']@mYC<enjNk4zƕGQ4QLV1.e*3դ/IEHރbfn}gT7sQ(A6c'<8wW| kk&?z0P2gK/̸-@Cbx֙!*ρ. @y ހG|t:0@qغH֩zป-!m{MmvWle<7z8۩nһ[j_؀a|3|׀T>0˖mU;:#kCg0hmyt~x%hE''9P<qrH6N}8e~x>G% rs*ԅI8݆0U'f֓}hCUx _$Rvx0$pn'Æmlc B2"l)V.t؃Nq`fl]$(Q imr P{ |yg]9#dUEF #!PP:T g0P-r<  ?g ҡpV&7ȓ*+0 -P1RX#c{:8(F: ks' Fx3"7]2`]+`q+ f _z* 2zp11gj %e Sٲ-2 "; :j:`˒'β@ 4 A*N/ i<Ěv8?ъUG(#GzCz@Av2 f '&"pe5W40VjSh|9d'<7p/ P[>*gV'J/2-{3Di00R?={Gj[Z95_KZ.y.0B=f4D19@I X$AA#}xhlX+ Ƅ/6mv iTzb-W{Lp}D|݁s} d]0 n7oF 𷄲rlk<ֺ !|h% GM{";B|ݝ@u%|6stଢ଼0hSGyvݻm!= s uke9Bgqڛ VO-M.`\0Q' W .o1oNfx.0 Ԧ/,`$Q`Gf(LޕV>X^`.b>genimWnpr> Xv~x~z|'.)Κ~舞灚.斾hV\$H.>n.F꥾r mNt~lz@p:n꿞/ Ͻ]u;>cVվQ1<= |^x]mkw "؊w$JbWI*K'+i .~VcюZ8Gy^X %M^ ޞcuϐv::Xk’}C13RM`wGmp\י-\ܻI8䍿h+K P,mܶ'HF~g p]j:o`u=/#3:vOapnf%pc-bhlvbW(G/Pw񵈱lxcRkhg]gcF&]gnmR%%Ո3[e,5d% &Z]Z/ ^)%->6?+gI6-8;-fv|]M˺%uGXL>s"ɴvQ4 @)مB|gBq-^!k+%|R xP>THT,V0zJRJDbފ8&*KVZx+*x."Z>:|>[Z" \op*. $J$j\X:;aNc4$$VRc>Q` yR NkS9ٰA%[vaU 80H1De.P:jLwa$)]̸q~]CO` [8IDSQ= 8,Q\ HGKB\x q*.Tq5R[ ** ]ֵ3Ȭyepƅ6Z)T kn޽Zz e)LC UӀ[ c<^ *1|k+B! " + \\}UXrN =ai=L`z@ֻ~P1p6p]NzVMV;EOJyE_y8a]_hp, w[xЗk`ާ(Q7da3`l34` p@طnc@NT:PxxE40o V`nCM`:Id:@ ЪyB'} Nȃ%@ &̄4 p p*Y8 , GQ*0x \Fr`|Ԡp:H]xA!XRp)Rq#(E93v MD7XR2.[7%I eyЍ.Nܓ*Δu)x&tX=QN' ьJ@EPZ%5)?O@HT#d`")JOST#&ӏ*r7NTՏ'$BbU;Ҡ4HUUnZWVcYъR[<0u]W}ū ^p`DaX.ul9e1Yn69Zюdum[O@mo+Ȗ-n`m%\.Tqeu]nM/k ;PK `}63b#b#'sctest/view/resource/Eicheln Koenig.gifGIF89a}Va\Z]]!364ӴTm4T8i (q%%@@483;;(#rok'[BM)! ǹxx*?+'%ťM~EJKG!?,}p(dlrl:ШtJf\,P lL.zn-Sd07v6/$Y1{B7/06?!$66(q,ſG<6Gܷ1(e8okx٘@@2[Ł_IHŋ3VHQ$!",M 0Aƃu8]',ƛ89\ H9 @FC<@0! ,2 @T(/sӘ2~g>@ B |Hp" Q@f۪E$/| a`u_p1p T&K?m!!Wq: ]/"AλgKI]+OLz.*_W˛P4ta¾º~rSC0`= 8jSj06;/؀@L}} R` @ "L@B"DHT" 7$!|L4A`ŐA?!Vr UlQv?hc14P@0j-G{`@"Mcei# * 0Bi,n y9麖 k#@`.4+RA h*d҃AQøR ꨏR0!pU jovg\ź0\-CBS>H $a];! |S:,p&>5"4(MT p> + N4A9_".mM!dxfK>`DL}a *vXZ/ NCH<" QLLcrQ\P*.pS?!5ix3.W<dRd:PdQG?2JG4#IzZ5c% L<5TI4d)KY8 Jc([-$/=@p|S9LDV 8P7UeCkc2_09˙ƈVT ݓK\C&| 0e eaT  F9,\0MՉ# HK&5L eznEE*=pu@"Nw|jtU7hIZucRa( @( P | ȫ$@ ؓY<ō>g5EkӲ֥z3=@tNk: 10]g ء&&5Ec[ @*?^U~+Aⱪ,q:ZZt ju|ȀJ-[zq X;ZԒ>b |A@`k{n="]` {A)z9@`]H=f6Sm7 XkZÚTe 5,dw%u`Sɶ^tӅ!qZt6hk&N`ip~cjI`^ Qp<׀eJ?J\h;$ ؀PY@/I,e6 /ʘƴ450\9OPTF-n-$X4`+hg%WZϯ䨴w 8@lNC'.hy[F {ԣf H ~/3aiL=`: <׿n;{!H[V: `@/Xlio'3o^M^Sv6`J; H`';8@^Fj}k^1٧{疸7mTA=\@9h:}~qsXg՞c@6JA}|J7R ZxsZfl ] AΛu:WI^r~F;"_gv~"^ B0{_oG;nb3C@ Rwi9 l.&@pyIPAuC>QǓl1,ܝ!z^%yВ{+22x2GKt}DN>B'B9~:C2f:2Wv%zp`Isy242.3>W~qC,Fro NjU ,TG;3]GKL3.4@,4AXH$~&X!&yCm$UdЂarE0,EH: ~c T~t+,,``%P+Jh ҃4v_2_Hfx=jXI@nIpr$Yqp a@%H6{8s2RX= X50(Kx+8qURX+6@Y% 1{YDcgFH?3K7t$ht ٘  "ș;g LVOf_W[B9#P0YCْZy޹r`r3&" y>YNGq!-|Hc_?(&d@#7F>"GhNWgMJ<2EY9cgAQ6BZzniWqUW5?*ju։T;3W!GG#qb9o9dEh}ڝ U6"`Ap,HF @e ͙:HJ@* `zT!`,0j*qߊ=ТwpGʕr@PEqk"; >௓N..g8k5DIo37IY:rEiTjA98h ϥP18(kK 7a0$ eEM6C9۵%$AKLZaA%f8l) [y2 8$2MCqA37dq5S3M10.,J" m5{`/9.G2/a󓳍#sbt@: U$ms#9q.#PE0V^C=pzAD*K:*;O[Ă3z@y 7E]PGY>6# tTE5*Ks `{MCps0E:c, t" 4iCu$v`̘=`Iy*ivv6fys,wnazSQ$LzD QE.*!3̕>[`Gx_ E_vnF GC4[P,vV 2G+,~A{CtmC"7EkkC"wu\YUE. _*` 3RiI9R,931|q*;$\Ce &1H CQJ#D:6tzʕLU0W;+:>j1h4@&+*PLy/gB5͈Ȗom. @vݏx8YBwZIqN)NL?>p?'?gT`su,-ڕT p: :qm>Є&|M"ۚ3}־ӗ_THR}u~^Ӥ fazA^ƺ dYCK7ut6{RroP4ݸaH6 0%mTYu::#(?źwz+m #0g-WM+N"<ۈHWM[ݻJ^$1` N֐dA+=m0n`ߗ} 7JmFR!t]ф7FpDNg['&jRF7/" 0# ޹l`C$]ʧg;?jAW-\Dڝ8f8~nPDKS)}+ p˺l3+mJmRl1P[?ʹ8!KO++62 `!2Y%ql5TӀ:oX "UCl{Pe%`Γ|vc,P <}ZMNyU N(6iAxh!po&'ՆH{W.RڊM)R޿5B &O:2SsHʜ|9OV+m׮j;=@2;./ J)NYU@aKOdLv7^Wܮ˻gB-n 9.{YU+m% !ʿ>Hspe:MyYLKӈ}6MJ߆U`!-]zE Pm4U57(N ՃAK?ݦ{JWGFv>UYm6~0/"/N7u[|HQn"C QC,3Ph8Ŗ D&#:‚q9S@(B$$ ;$%2lZl@@2^66:&2>@8|X| bXVXlN FhhT ):] 82&@BdHb\1\\Z<=B\P2bIV_ccjlugj2`byF0PA$L#/$ BM. }` 22`AF7/^8@^/p rq2Ap"ě`͖ q2Jx dJHp&x4kbQT\ix!맀D.! ! J>sq@L |%Cl8n6ڪ9k`w-S1Rx64BVl' C2b3Y<wtt @] G0$[Ѵ͜ FQn 39t\3:׋ Ӵ*5T"A( #J>n 2sjC|4!B ,0.Jx!lV 8!*T $)hrL TXǚ4 9UdK#x1Ca.qC,D3L!v7c@)Ϩr~@4Hu 5p p'H DM&H :S<̍qT5@LF#I[w9a  087 Me\s[~^ ClQLX'B\3beWy5݉7bzS߷ݗ  iST C$À%]y}`g+8+^P]Y~B`ZA';(XPQs N͍6a 4X5cTz@±f} :qa%zj( V!`%XfZa䑯/"د[/`\ 4 WP&vd?gs~!\.d H kXbA1&}M`Pء 4(!L >_:; TPe+(]& $ Z30a905dNxt{E 0Jl~&ǀ 8`A b`]a&0`Iz<Be`)__TP5!I(,,[ ttUb@h nIE!? BH0]? )} >Gd Qs,c 5xA x,:Kx.x' @ҕqA%tXP!@ @QLY$^pY_+ P U:A`10P%8E:VќfHO~L)n!d`(tj%4 *ģ')SlX ˘"]  2z@&P.<8 LΰREQ ֌,gD|0uli:q 1Ɣ)Gy=i|`H,u(UOtmZVGbd  (vmE:ЩRz^h^wU hAbR&ұqi) : HsxgdZL`LE,I:@:8@xP Tm:Fmz' >-L@y^`8e(} (Yu7em7숛O6Fs8@x'vrz`^ d^q'-Ɏ2];,t0]n";W^B;}*tr}LuԼ67~wl$N E rw GSkOP^<pOl;$~ʕėM63ǮS@ͽ @>z%HObohدZ xN"@ ,0`bP` @ TЏr PxlJ&phNP`@BHnvf`&| ``B YTpg/8-4D mo10 uH1@'`JzA|o gE?2` q41N{jH񃎉" MB-11 d`C.@6d] @1t1Pmq p11՘1D(`&m9/,0ؘ2ʬ] 9\0Ka zYXLQ@I!s }O=*bn@#"3ank!0NfƢ1pPP fa'U%p(p%22)-vX0JD&k*RX*2+r+I+Ip+2,Ų*e؃X" 2--2.r...LB"#uF)30Ev831s1+8~32%s2(~025s3)3."3Es4kx>2k0Is5GS|4?65is4c8`6C#7}738s88SR"7;PK a}6|""%sctest/view/resource/Rosen Koenig.gifGIF89a}geb鈇QVq&%54]X#p*t3Ӕ4A2/2?QaA4tY65 802 }}{ùyt+!GLFFHAƪ!?,}p(l6rl:ШtJn$,qh5kL.znہ`cv Y<{C2GρGURնс-/9'a 26J *\P#JHņh! "@|ɨœ(S4@ :Q2" G.p'+ UxB8?$p0 H " &$`狧_o7,];R6mD %$0"S $!aк,սԏ܅640B&*0H ` @ ڰ1WǸ!c4e c0`-~(z َVּu3ݧr cG@alXY#%*.nV;FGA%Hz<' >y 4P aPƑY s… GSzR |8p Is PW%pW0OX޶O:Jģ!64TV5f sO\]tvBu9ї}Zp~*ЙtK2`â@.#q ',A4sw

| â# C8  h z`3 8 :0:L>W,,,P$c;d0 %Qcp&c{+R{@NYtPu/ (^`PnOi/Yy00Z~w=7d%b5o<,Ag ODߝ |  p1xD Pt Sd;\cm~hv`ƸX |x4@@8 DjQisPvz@)*!+Ȣh a;!Nbh,$mÀU ,/F;} j` H>@\AΈiuT:s,&)VCHemʶ[ cb:OQ# P d9 $j Xc4 ,[6೪2!n`KIlCZuFf!usOe*3$4@$0@]-N" V O&6@nu+*:kV:piX9Yi40#DRS67uokV7nBP<-niT" D]EphEmd!3H揑tk҆G,}f BT-Zۂ l &9fZ,-` [@/\`8Ö07UduFH9whqe)wBe`4S|Lf dBaòyruOBwRI= `va@fw0i `,VpXbG@-w&ie`"r&hO;$ n>`@ $33k t40Uݘ<2sps(u]`@+E>or2v"_!_Qd~ve.7WvTo27s#"\&Y:r(ap#N6M`6,MV FjO#x=w=俫AbФ.'2?o~xsxd3 $XH {Q[zK! m6RDz^8a9nt*թ D3z*2<.K)(٘1CG w-sp @ @}F[$F+P J7Pvk JzG2r2}el~4XEYdW% "{$&'Ip0FW!7!~h`˃b$FBU+ JXL(8񄠴hr0 h. <@^Ȇ<Q+,pF)47tJqLJjT 0P@f<̔P0NGM҄D#1]dp; ]gp$2&ehH8GDHxK዁5/@d7i\ŇJ H`(/4`DF+hF 7==p/p UaJW@M(g$p@ @I @op9Sׂ;pX#r460pP34,P~KB@Uf7 Aֲ_W0 HMXPO8UM+9ɒ,eG%hX ZfAH=h^9=60V8tf)1gN6OIh@7٨&B.)c&@I8 HfًY1`'&l~09p%8*Ax؈i~&85(BTєІ&ә(j9;mɚs$yI/yyiҞXsrɘr2KӖp9GrId艗 {I2Jc՗5@dْG +-D׈, a-Y 1esiiXv4@FJ Z!PYP+pz,9de\36')*k'O:QZΑpVSQ+٧g)ؙ-#7iHĨ !q$sssarDdG D$8Zڒo /)0}eXaX-]ڛ-INHNCUM"@Lڨ: " X؇PP4Viψ=hj*G(*40zU!б yOi)Im)9N'ʬsoJj pdlk *ܸ9QD,^1[ª:5(Pcu[!i-4Zc+«J˃EZBD\JP6\ :Ŕb Qt[*،jHߺ3:@aJ87rߙdW~;5QFs+@ 5-2Z`%RdRK8@QڣxK:K& }.Ԟ)TH [5C ${O~;' j# B?*ИKd :A)0/75 Bm9ͬ.@DP4y ^𣏕C(&I3^[iYt2 ηL!q B*盙c)ɰT=I0Ȼٞy]/:/sd'iĿI 7U7Im7[-L}5V㞆ܞ)+ }>[y[&c;?}_*O7P=G>K4Vp~ɰ+P -2-\‚Ql?(yEm̸@چ  AB  a$C)X&(+AXvsUI& )}HͷR_:3'l%%((H>X # xVVLJB@@P8^X0`Hs OLC)2"( .IHX$ V@(RK%LXYQF^R$Dwz_2hZ&&\@BN@Q! )2NK.=FyUR~Q hCI 3 @\6!6M þ5ێ(*ՁN+8@#sr0U ,xւ  UJ>SoSK(!T87ڨ se)hւigVNH!ۮ;o S>?X/36 aC&jqYL[`^z`^-X‚r،) [LQ>pq1qaf6耪343[@=.cD aY(rm9<zMHJX`ZMviZRj aZ˦`xT`^h=^(ivW;1N^n&l~-{V;k@ Zt|5g)Zs4嫯dHn@0-@,: AZ46p8 (}⋹ҁ/[w 6}@AF5p1[04 X ).`ecExl\` p?kH?;p,pY_aYBB$2Ӕ Ԃ%`Ә92'p h+ =hB! 0:38&IK@8l0ѫUx[*CQ/x.cX'B0xŃ-R-4@IJkhI+V6JeZA)QIpdl 4 <`$xĜ Idr=D΄&_HW`ԁ6RS, ' >0N^ 3'>Ahg"@ktAfH~pDBJRӕ1-я4 L~"8%8Ey ` \oxp IG@"E*>QڱPC8%-AP`ITU%L`+ p̳U%<+Zɀ@A)IOAR 'bPIWHK҉i-PA=KCe@Lf G= &;Y"- 5*V+SWeVUgk EX3Ҷ'g(0%9Vʳυ2}88RA$VD%D6u@]  h`fd~W6Rz+C8/8$!:)L$D"( n$ !. Qd$6rba Kc 8%Ib7]mtjt ##1Rrj/?m`8|2R![48.8Y Bt̯`atE YnsV%|H/&C#"We`at=0,e S-m xy=TSJ઼Fr]`C7ؿ޶dLfǾ4O'>U8GZh}g|^Ƞx5%,$^r VK$43cFo *$ba~45P)A'l8홼!B(rM0eALVunTfJЪHA$T;64nw| _`s{8СĝC%u/>Yuݯ~7v3UxK~娓 ҂A?z_ɓy{W/+%}pKHd!G-}~>s $2L% 351i0:H4}Wc(ߛ\0 *Zo o/؏/o&Q /oTQZ *'CGpVDp#PNl oFb+/Ae*_"L]6ZGEZ`A0e 6J/r` T!0D/oBPx@ x^\A :$ZOoE4 n@ MK x`Q15q/0v(°Ȧ UqYpa[qz*b!3QcwqhE ^ /eP1q1q_4 ~<"1qɱ*jR1+b~y01Ð~Q2 @Q 2!:~![2"%2!R*&2#5L"=*P#ER _*<$*%]%a2&er&i&m%*P2;PK `}6{#S!S!#sctest/view/resource/Eicheln As.gifGIF89a}^ZY21肂V''ї1s! 222JVia_& T8=29&&n!?rom=Hyz/D<E:8O@#%$DGF?=!?,}p(ddȤrl:ШtJXB xL.zn5rG~}.8u*tD'yB884/?,&"H6p65ăG9GTր,>_:`H~8d@Ab*\ȰÇ`DDǏ 7P>tሗ0]l)I?*L9g1}eT}rР@J}rG 5FT>pөhӂD=G @Hpӳj &* >|+Һ^!CEτ "E Xx=v`B XHm# o/DS-o o(P@ k빭']3fpha`bP;˟O>800@ 3pl`\8Ev  @7pR'$޳ 7(p A D8 @Âх/@`88†$`@˕t@JR4.?07rq:5@Q, 7 PF {Qb  (0@a2ؕ;t d(p(0M}Ftp㙉Y tj<Ԑ)9@ '(fBVc0m:vg$\_xԀ7> g@*:µ"q( 9l96hnj4@ d00h9T'!$G\& (PQ˫8lK0* X@v0w7'S9\3:6GNc c6‚(\.4 ”1}r|<h"U[ypQ (krO0 a$)k6Ng*l3b= M nO&hp 퐁h@Cjq 0(2 G|^9츮wMʂ ` 1ap+w](A7o ؒNWkPS䓾@PrO@V䩀, aؒ|jz< 5Z&P*ic`Ч8)%O;M^Cr$PB|@, Y0Lh@'gy)CKqW@)A&td 9ݐtВ6@-`p4jbHJk3bG?;H=~I\+287Lׇ1@04<اb!Փ3(px =[9 kq@,z ^8 @Rq J? 4 X؃}k"4IO 0鬮e`<Ht`(Hk?$U5@*oZ//*zQ%ddU)X¨U\#@娔$*LilP͸V%NPb@ 0T KNZ%d*'ɣu,#):NN|m 3!)r4K\j w~XUms C='B"oyd^xMi ְ~N0^VidqK |Y;6KgZT)N7~JTd([ErZuow\R V@`wnp"'0j9O=(1zժj@ύK*kp_ڭ[A$gcCq`c@1f`f[i8@P U |ltE> =)܀R>_&X A Pyg?f(Κ|c|'W&PC>tQMo*/\MdS9n9uNz'b:7>5nfMi$c&nz9]x{ӛ)ji[#Cj9! C9`@D-@FSVKzu9mZ7c47~#<_TS'f?Vmqcu%a^{8:`cy 4eZ-gǼq?k%`;s3Omr;RzG?=Q/~')x| pSOg[k%}sGC\byWJS^/}l|٤s]|H (nf{<Pɿ|O^fBoٳS>>\M^z-hABt^TN"Uw~RZ'E1%rkw~'XZ>w}Nfq^D{P{PZo}{h^J2 Ȁ7V||w.g_7tw$g]%|,׀c|({g5XkB:A'Uz~$k | J3`` `0F(kTZZv^5{.0a(cOYrBz(LegtJ~u`B}z؇~XV>6XoDž8 6b0F- 6XeZz[\@$k6d\`+FȊz@؈a0(Ђca B -'քe peM32dC% (}՘Wȍ #EEbBHD-p| nE-x0 4Бs8%#1D<'1=iEdWVJj`GsFy:P؍W:/32'1{0-9O%'`)uE9z0%W0r`/ØRɉ`pN D)Ё ݣpehX"sl)w9A@$EH @;˨ب!O]dz8 R~i0h&W yH <~]xqn!8VGAy8> ux*|RY{eц‰){;RzIV!$'zx+GDZ~kEV!hrHDZ90ZbFXv|tFZP 5fQ*MX*LZQ=Mq5`:9@)FZ#9dxj0-X |*V7䑧@DedzS~51~\IwziS^zS^ +H :`X*>LJpũAÔiN 8 E1#Ьwjz՚:"@bH:j0zrj8tfԺZ؍$0=fưמZʍ DZj tI00akGH${YʆhZiyڔ?GSJj)I+*HZ O-Z [{|gbd;{bK bXeʫ#9UEy?3?i~ue֮z۰JKZEZ${ǘi <Évkz>ڷȴںjkJUllP8kcy|{:G)[Zz:^%SWZk+{,IՋ(50ڵ拷뼵 "5K9U;a~R GK״e{~e[,H!l 6k{3yk)[P 6UX-8"ɛ4zK[jv=U~ĊHED7]mg $oT||ϺxB-^|Ֆ~)‰M9E̓R().ը^ 9!ȉ0ñLդO#8ٴXqﭾd0Fƙ@!@VUjyF\#a I )}J>0  8:t"+"*||z.&:p n8>`` 8v$Z ^ 2^|43)-/.6_}Ќ9lB`?5bW[9NI#5\z+`mvȶUR} @0ֹ{ ]y)WY)<&bEq:A( 3 8+9Rcڵ'،iKT2[f?Ǵx0b>̹g\eNk_j`巳{Eؠ]XCJN{µXmk A/`HȭХԙPBxp->-E=Bd 4QA";)2*h rC6OD h5-`Il),r: an X!D4ՌT5;3= h'%>|0.D)TD, tY-ݺK`9 '>PU5Rp0 68 YUS: 0S}!b;AX`$7e7H U7 \m!HzU =|܂]݆x3nA 6AYd 4o{Cb%uOu%0B X+Gw+ a>7ˆk N`!!TGi)_,zS1 h5RV`♳[k,Q@TlMNoi;fowfT1w+];wbK5|5t A4. xn]ai1 lGS >@}-5LƠe`T8z1 G 6H\c@P%8(b> M ϜU$ ARP Ӏ%CW@vEHN)ڀQ 6@p)'x*H=N(!G0̠{`@SЄW^02LH f@ K= lg i =# .gCR:JKl')˄J~0ld6u@ AED$'$3A5tbJ t*TiNMPut qAO$ *ۈA><(i%TƊ\̫T׾z3Md @`ךHu ,d-PUU C2]}ā XPqöʭ˷Uk/ 5L(l:Fӥ^"8QU!Mx޶}U@d&@A`~"hb_ԲF) |78`>p^,R U1R q.?i` Dx AYE؁ bzB,F*X Ѓ'o7ʳrmR)ASfQ2э@Ta>So)P5B+͘+kY+f3]w5 S{CǑ*HeYw>FJ`oؔ `;` :'Tu@Ҷqsy63 7#\Y,l @ P], )%1~og=zpMLa3I3lOfhsy{0>u5@y8֝ G@5$mphb]tQ~_Xr0}.nl!gH\8b `K#𧇋n/>g]mkZow=][w:p0ѯ>|Yy[]{s_7~݋y CGE}OvO}<J(H1('hv7џ~w鿝 2PQiT!o0p 0pdrS(-1pk~`4A0EppIAP~{LpY]3~~mq0L;sUxP!90 rykj p / Hj` 0 p ɰ k ;PK b}6puu'sctest/view/resource/Schilten Sechs.gifGIF89a}ꞞeeeކUUU===uuuiii```YYYQQQnnn111]]])))---MMM}}}qqqIII%%%EEEyyyAAA 999555!?,}p(yrl:ШtJzR,Q :&xL.znGIbt~~.u!Y zB( B-?/-8G 7G-Hڷځ:0D@0*\Ȱ#/B7tb Ҧ}Iɓ(\2˒ cNc@}lE?"aڲQBx<%EzW[gv@Qi>0J~HݹIx`Oڏ&\hPb q˸1 d@A+ŎC[l/eyУ-|AM)1~VN&@[v㏕28gkߎv|\` Gޝȅ==> h=( ||U?|C 'tfUB!Ȝ{m 46L!/(#@ P0Ft-r <fؕzd#_- h0@ 0 x*|@A j#XuxuFZ. l䢭2 fBGR!h:zY B$;ܰ (н %SX&l;&+ڵg#rqnͰ"j(C@@/: ")B2HB{i ,] |j `sGbPHCY "Go"4J op|,۹[u%Bl`38G%ꁳA%jt6ܵB rC !P5]Uzu^[ 3Z 1!, JgXR0>/  y``Yw!&/y-9A 8N'Ⱥq 6LA n:>D j͍ˀA!@ *`50G7I@C ѽ|wb# o}eh; G_v!lWCfخLas0PԠ.pA RYuKj2A߱ $Bp( >0@dyb" 9x H2Bˇ? ` Mi;"Ĉ4`P 4/ m$gԀ P,'A48$ ,;>1 ț],}iL,gIX倥 gTyIM$ 2"*P^r4yt`9^2AY<VV9fO(fo,+IOZV36N8 YrŜBgMvK7@B4|FgC W3/Y@1xz(T#! Q`d$/ўԧiA)O}`=s$NԻӅ 0`W@),͟itRi3u0?#NUiXjwjkPBG>dM+b xoY<>k^ZB˯ Kv?^h},Fw[Z,2'ٚ0F(c9Ёiy5g~78H=1tŀ|ҝ"M^%xr!,hN}|>RY 6 vA I+peS\F6 Y}KqL5E9 =5wL(x/>MԢw@::FwfYAa@U] h 60xKmIg |D9Ʀv H?zߠ>Xhm$L.5n=8Hjwݫpwrj3X(:͂І]q1c(7-P7 P×ynr~W]э 5)U!(H?":Ih R0edHKkhSQ]2g ~d|wQ?Ϝ9:@rQ7SyW|dk2ʼsqh٪ s֣nvpl̑<7T^/Sų&]?@ּ8?^s @;hO~^W/l;{ eşeu{#vw~鷀([7^4RPGbw}$g x="a4"" .*4aWKC(8KwI!B8DH UJAhփ6pT PhRhr-X\؅[cWWYZfx_my>ipeKa#o(zfUqxȇ{8|H8d88ֈ(Hxr.P%P `Nb#FĨke6`t-Ȍ0{Q9C 't`Rf XiW9&6- *^Cx(+)p0jf#aL#G ^c\vaHp f `P#:p2[ D'F:3i9%k)0@ :$ lc,|a c3-YݐJz 5vb“T~#o 5iAȢAbS<6 I 20ѓՂ6P8R&# ^2K3:3A+M<^@3z[ : 1y$mPW;)c6h_L9 w<)p)0Xk[mS"+à%Ō Wp5<n1p*0ʤ\ʦ ~Vr#ȽkMxf!xh#3V9ݠ\q _pw>go.Er%tsh̊xL7^OȊӗ^7Yl͖x8L\Zj S t8 ͎L]ѝ21 !Q~ӇmO7o[eW.m3@8-;L+mÍxE,0M9K#qj.;eշ**ӽmx#H!fǿu,<8尿NAP‡Gf٦|>[nf"(GH5"@Ʌf =nb!ugӝ嬸is-TigWNk5 ʐ}ϕF铹;DuvGU^ꃡlFM}YӺ~jM`6ۨ^ /@u[Nߍ$T+~jnax߷{@.s$JT.-{~NܴN5wlqlRvJ3.Qb[*'``f(N{ȉM;(=?0@7T6f~->- }0'^.%CL]#u[OG0Y ]"Rc޷ c]_{ f՞!r}#MM1Ј݆ݤ d45? )Giϲl?ڋw/EO~ u6/UOˏkuE~!y/_?@%#J?ݬhy/LV*Ԓ<)R552pZ^< ً=Ș*|-=('( *Bh.FB*hh@L :aPZAbnZ wy!XtZu(-05P?AEAKO*Z^d%hZ>x6r{_ze+wzfQ=Ps 0ܨċK@xĎ 1 R8z!\ȗD*}`LwDA <\nT`!@^0 'MGN6ɥMSnĘa#J`t1K qԈVzoBUOl@mZ#D ( t!D$x`DȄUD{Mba 9 Bx<}8Դ'ܖBE{H7 [tk)]pdGdsj>~)"H2B= ܋6rs, rtAŸP 9䄁$2ȱb;ĐIiP2B:u6`Ve<%#z0ؔ-L@ 08H2I(lI:h8(J.H.1Ba.t3״`7}vb.SH- `HHQ@cDF8aSH)YE`$$5mFOCQG%Ԍ5V-vc_}tCqBW1WaVm 4 ́6 ojqZl9v`api3XW]v}Wu.&qӍ_ a@d'Q&5 bX߆s ydK69 $Jxa]s f.Y^#P +djPhF椗Wb R`DIP譹;gIίppV enpR9mVp9!Qs8 I/}QO]YoaIA>?-^/㒑O^兏i5^-}/O_rg_鯿|7 @ A ,h=@p  AB-t a,# ;PK b}6w"W(sctest/view/resource/Schilten Banner.gifGIF89a}432llk+uWWr%$cn!'#dX+9YW"BPH6魠og=潽ƯݓPON|n뫫˿^;9L@!?,}p( Ȥrl:ШtJ%@XbP:j8xL.znW$J+~~0ru4X&zB>%!0?%,.H$üH;T[π%$+<7nh>, H *\ȰÇ gߟdqÏ Cqؿ,('I"c !0>g_jIBπz4JHJ 1ߝ)gժTM{c;8P2ŷbȖ-*֔||}ɰ[1Â>82D޽|I xn ,ޯ I,`Q0 c@遛p faYF- ŖD{v{=taݺxU`P2Rn9$ !]t=X|%Vv q8\ܰCyhH&@{Zq| 9dz_7! h%081 @b t G( $"$CDݭ1݈cjt`h`G@P.brH"YM6_BL|Έ)C h`df~U}䵩pBCP.d烕7iJ3 fidzÖ1[h0@=piO,# .`~ , GȠjZ1 rv v'EONk;P(ý8pABRT#r CnZ]k\@;] ;ozA$P >דּ kžJMJ쎋%k/ $Ar -pN 4`K#jv%89 o`ƭH:C @u.X -*H@. /Ѕw;7_ƃݖu:`/h@V5k=fH  S)x Mػ8&q_WBE e"DRV;L;^,(;+oR )V<f.L1 c+-n[#8aJȒ.h@~QWrF5lPPGKKiJPlf#G\-*nA `^0f1sLa2#4$9vc[ Xy<}(% 1n 2 \`/e@!:)F6qTgh0/:@ofRdYAqyPq@5Fa5 PHO9H%J[q(PnN)-= ?.L@mr**p|6]: Y+B|<@XkYEL`-Z+TKp4Tzݶ &#,9HXoTh>7*ٖ3D>vYRɝ_Oi%h`RgPTqs@!ڮ @ vۉfbZFG\!R&h@ 7LeVٮԺ,@CNrMy)›ђG e7# &V)t}#Ǹ"9(zPx 90AX DhIpHJ2c,O%Z녁<Io/lNt G1% 4qCˈCp@#u}S/D]" zZ H@-?%ɦn٩j&ڇ8ip@ 0]^ %Јv[*`~5]![$lќm-m%;fARW{# 䀀{9G` ɒŒ0ʃq6@#Jywx? 4'S4Fw}9,ز mK;@wЇ b2{ꡨ+n!Z~ kWU`dw$o3([\6=]Xv!z*+XbN_y]<]Z"#}Fs.#qz}?n ,L֗x.@~%`EW~Np90Orb,W~T|W'=Z:j5%Pb7dGo} |u0x|qV*x|"G7(q؂G-{GlnU%z sg}y.8-E&l[׃)$7Zxaz8wN&p'FWXHhZ d1_xP9=~ Xor('cԳU S z`BU.T#g'WPr Qӧ];_jHmlXynxmVV[r%w0& TcUg h:[=8l(W,g+pc%Sfۗ؂B6 rUz 5}W,2P}9 TGX"H%_nɎ##ٓ>1rvR{0W.cx6'X|9ѓV9QҢVOJM}3yLP_4PW>1r UYc9+Ybgi](_lwoYOa6 u/yƖ#C XxX=Xf}`xC%Z? `:EꑁN]zYdpW"\p=yoD郃H=/0ʫ:I r(ܚ]Țv5 4 *uwwH̺(yiHn{P##G pJzʚ "낰:7Z@{˜]!K/ˎۊ4 ꌬ{.yPA*z9ʎMX-x 7K [b [90!P ґlFr:|Zi' d8!bq8?wZShY)*dNVIEggRy"_ 5[b,0 px*kF:pp;O6Khl3$rx* Ot۹"tiۓ ˌ\;J {z)uTGsxXzk u4xِ|P;N[曹Zbȭ9PW$Rg]9]_rgUJR*/#a4xP@f$%h_dBHy)q"kJRg,; uJJ[̖[v] x@ 0`G kU_e˦ 7l vB,p8,,Ŋ4s4ZPK"z%kh=l"OxxK(PB3^H*xL['jˎ_4 Ws`{m<|s[?$h=3<w@ | 7\y컄@Y̙.͌H/qjt_,4 |PB =THv/-]5 Ivጹk%YYp%@7Iɬ`T`ݳ8vkͳZM\]WyS8un}V6ˣ-o׋ مfC7]jt7>T3̊]&!Ś*/d$J|*=SA5XK|yީlYa˸vvѸX7A@ɧ|& t\yj1ٰ,״?pk,9d_'bQwps}I>srS3Bu nnwZ?[Ԝ-80&Pp%5CZ+8 ]oޏ+?j߸z4Gpt",[$~F-U?nf 7tW(p2j ;Q3+ %gXnZ87q:wzO{WCPi6+7AߣDg;S٣]^w ,})_p84*\4`_%U.GA>`.G}DJ٘$lmPda3R4d\a%drp ,q> DdФVj>E/aj-K#4+me#be>H0O~2 uƮv8)@KOB'f) Q& /:TyݕՈ~d#~$ 0+F_&ra->'ȴ-%V£K^9Өiu9\:@ 5 69Η퀃e~8rfRJR*Bd?@XMo0oxF X#v6dm-$oRX3+ISl2p+o8ṌWU3~?(4Tݰ8/c5z݀Rߕzoܸ)/.Yu7۔5+9,*uU$lF9*B ,D"N=Gb`?-\$HH{TY   'Y<.ٔ05^˕(b1\dֵdJ|y='`8| |  X( #k ..L*H(vXL|FH > "0  >ں&,!" '%#?/hkd hFJ8"Z\u4|p"yɡ33g̢iG%3fXo2H#J4 ĚU=.:hN?c$Xo`E%TIHSD2#GݑK ed'|N;  i.FBb* : &-xikˮ0 /Cdx l1>.aH洢.ƙb4Ō># TX=}M,֠")`@ P' I@Kb D@4;)7+('8~sD`W%(&@4VkP6vрNVbHxlnۯ9Iv0E3; #"J,Ja [ 0AZ 4@B2 f@ 1D()qJܢ1\ȐKa0 PB6` T@Sf<=Ǣ@)6H5+.9EMO2(ja00@IrSbjEA*iA.WXkF8A,N{R gv~JFݒEDTf8@T i)EV NJC<0atwY aA|'D{OwVx^xE @V#b)GE/2a RK} &B(*Gt\ɘY&Bcf]f;Hh@cY;$S~V1娥]~`U,|o>@΅_ ?7^;Ju渹Gd~''6 Za!_%E3Eb2&ciq=ȆnnٮڙQ$|Ah% qsB/a@oztX@Ft~$O|,B uhJ s>1~'D( % W=6I5 A#m!$9n;O gpY]WC!p}ءܞx +yfD&F㋢a$&" iF5RHBNɑG=GAPQier#!IIN%1I&a芍:"4)QJU\8-qK]ֲa?.La0FLe.,~4մ&#LMmH7uljs9ѹdAJ͓=O} '9;PK b}6w8#]]&sctest/view/resource/Schilten Ober.gifGIF89a}Wigf_\!Ϟ65%% Xs,v\65r332ſ66BT/=Ʒ}|{Kto'گMH. &K?RP%&%LMJ!?,}p(l6rl:ШtJP,q JoL.znX.}`/:vuD>6{-B96B= ;!<6ر 1;  AXb^Î(>r}^HxϽ{:g @!Dģv:uw|'L *~#Aph5!T`"(‰s( `A H C_9P Pu&! d$vP@&b-бALW 6$֗`iOɘ&8Lف))04D[~Tv-pC-(#ODGe pXA%7)+Bh\5$ 9Jl :A>C|`_SB<롯VvY;l@f`6`φ;CklB&gY϶mm6˵-h/@@60,+"0b!P>gZ@Ŗ.3 A/{L< /`샙 [* r垜V |0 @3<;lrCX6,F4\4y BP]Ja=`p5Dqc`vi`P1@]X0";2=8%]u A4K3 $ `9 t4DFNxʷU#*~^s< #,m׌t2طRB@Tuݛ^/1cP1:ht %TU@:g4`^6Q P1D  @s+ IZVT9`L" 1us2gdCIL9 SIt+`0#kg*i"[J1Rt jNtL̄4Lx,QO`WbS ,AgS|F0DR85AXuM G{ SX$R7?Y)fix'W/YƚQF-CA4fԄ"XV@P mTuWHZHZ &}`H%Vv mU٤jB45崱.JQP!Nq#!읪E=է ע2pz>5@ q{K0Z'ĩL@=5Ÿ 3ї?O3KB p/U/q\3-wd@q`Dmm$'Y`d36׹@KP";#@Y>0foz,F߯xG6PHMd I2w<ԃ0`F|,@0ŪN U% `~r]rcF<5 ڈS+X4O9^>:(`"b M;w)OM@|[,9M@X00;7dw؁h>9M @cc@LЁ emm:&[u:H t, z1g,oc-C 3 Br@rzosٔ0@V a$<,+`mdK= (SlfGe{G' ?SX|`'h?#"6u oz ߊB Wt;o_nU=ٵo7q~j1J>fF SZ|pKt57[\z$#ų afh6bN *gp'z{Gsm&fp`?ţZ@pT| # ~w,7{޵j67$7TX< PtW|PQ3CgqGl p PFNjh{zkR$@%HaŖ_D72eÅbxefχ0Wm(RvaE qpV?cA\r  1؈q[f `BCЇ9Ӊ*p x[hذ#P <0/z|yShpG]冇)gYqkw.y|R9~= Ar0wȋ9ui^Tw.sT~%`/cR9isiIr]P4/P#)"y|)3 83wY iԇ(:X,'ٝ&5%8So7#pc؜Xщh`tGov&3Yŗ,> 0sxhDa0I^ a%z+Zm(18؞F( rp|z6(Д>*{P:r/cL7o*:mPl탇S e0ɤ>PlbzrFoW@zkp0ZFy9-N>xq&GnǧWə4ill*ЃvsZ%w'[`!ZZ 0Ǩ!$FpVpM Lڬs*1Fzv|IZ~5z:K9M7r )2h%|w:~E#z#wJ4@W$ÝG'-*fL9PR"z(0R8{ʤ<,J"7:/0ڰjÁevrɕڱ $?(v(@n*YnH x'z|1ڜ 'E24;K%|pxz2 hppCn 2fpq[0;,xz(ظt*Ҧ]"PD ZDì Z< \[n8nv1?CCת "ۡ`y!O/vKyj놄ˤvvP2j!`ˬ7ɀo; |'טī!׬ {kLK*)4yڻClk7[ `KGz'A\ ܼ p :Lj3\l5ܹX[8}i><@[>P4y깟p%5vfL:+";2NΧeLe٫PtVMɃ6;<}"``m$\Мԅ*,* (*pup͹|*|tjmtWvQ… k _:p߹  vjI_: 5̓<RF oL<,*)0phr9T-޼L܋x @T,aXZHƱ>@il '||"_F?0,7(Pg*xgһ!U1JNH={+4 wrԸ L%H4z}`k.9Y2K]8-o~ `; >-$p.K=r;@R>pX/@#bw J<{۸ kG8ggقݢ9W1+ 7-wH ̤x-ּ6e퐃\xcX#Hnʟ=׮J=6&`A ,8s<])yeM3`ahlkܜԠM=3? ͷ4[Ҥ}އ "&jeՇ2MF8nB:8h+iهT2,~9V{",W*?΅Ag0G^lsSD%!f<{ vlA9MI%L'0Ȟo`I|aL<܊^Ky#}{n6][EhEN(ws @Yo N>@zύ71P&[bBxc3l_[찮rjGXGg:t0,¥}0Y: y-hp3 FgB\`a\cέy^~̧dNh 1sSR/CWII{]옫#t!@k^,OBGJOU{xƈr'`[TN8ʗ{ }`)?Vn3Ⱦ 1?UK cq0!l8xx'&|LJ 8QҪTE @ds|jw cO rH,cC%|k ⪠(΃@@+xaA$؁.\BMP`7<0 ̬N3yB@@ydsb`9l 0``LZ* PE5$Uv !Pn75@89|-.P=6Ub ̈́JvT9Ck V(>EVIA"w`6*1) Y%5`SJ 9цL @$6 Z3<0Tt 2R id㊠rHR [a[0*Vx[.23t^!O8 MNRZS[ztN"֦g gdyl0LV@7IӬ_4Lѻ:ǑemsEGx1JGNPu)΋8Ykb=fU)(ۨ": 4DCD`El ­kZ=@u jfY /*H  )n| QB {3 ñIqF ~)C'k HuD%q`[N:Ud@P [ IbA>k9!@B`Wm0D\w.lE-VuOrȊr `!Dݪj;Au,: F?Št qmVf8U#ZR%ɢ@>"Dh>P@+ K`(Hg,)A8l92@&)p]*Nڔ z Z(_**1LD9Q n&u~ԟ vFbYҹus@<# )6>CO4w-xAXAL =8@1 uD5W%VFUDb)a  OVIkv^*9JHk+[X}V7ꕱcwXr@,7 Ynv*gA˂P )hQ[YϮVP|-k#[vټ- wfvp.us]Nյu\*7}k45yћ^u{ѻu!\}z_;x6` ?!a OzEa oƅ@v%&| &vEb_W4ql`31X!E6򑑜d%/{=@@};PK 6c{3} } sctest/view/PlayerUI.class1sctest/view/PlayerUIjavax/swing/JFramejava/awt/event/ActionListenerserialVersionUIDJ ConstantValueȐk instances_Iplayer_Lsctest/client/Player; handPanelLsctest/view/HandPanel;()VCode  LineNumberTableLocalVariableTable(Lsctest/client/Player;)V Exceptionsjava/rmi/RemoteExceptionjava/lang/StringBuilder!Player # $(Ljava/lang/String;)V &('sctest/client/Player )*getName()Ljava/lang/String; , -.append-(Ljava/lang/String;)Ljava/lang/StringBuilder; 0 1*toString # 4  6 78setDefaultCloseOperation(I)V:java/awt/Dimension 9< =(II)V ? @AsetPreferredSize(Ljava/awt/Dimension;)V C DsetupUI F Gpack I JK getHeight()I M N= setLocationthisLsctest/view/PlayerUI;pSjava/awt/BorderLayout RU  W XY setLayout(Ljava/awt/LayoutManager;)V[sctest/view/HandPanel &] ^_getHand()Lsctest/object/Hand; Za b(ILsctest/object/Hand;)V d  Zf ghaddHandListener"(Ljava/awt/event/ActionListener;)V j klgetContentPane()Ljava/awt/Container;nCenter prqjava/awt/Container stadd)(Ljava/awt/Component;Ljava/lang/Object;)V v wx setVisible(Z)VactionPerformed(Ljava/awt/event/ActionEvent;)V |~}java/awt/event/ActionEvent *getActionCommand java/lang/Integer valueOf'(Ljava/lang/String;)Ljava/lang/Integer; KintValue sctest/object/Hand get(I)Lsctest/object/Card; & playCard(Lsctest/object/Card;)Z  printStackTraceeLjava/awt/event/ActionEvent;buttonNrLjava/lang/String;cLsctest/object/Card;e1Ljava/rmi/RemoteException; updateHand Z setHand(Lsctest/object/Hand;)V Z  updateHandUI  repaint SourceFile PlayerUI.java!  ) R*Y "+%+/2*+3*5*9YXȷ;>*B*E*²*HhL`& ! 2"6$:%I&Q(ROPRQDw9*RYTV*ZY*3\`c*c*e*i*cmo*u, ./&13284 9OPyz++{M*3\,N*3-W : #:;?#@%A*C4+OP+&%P*c*3\*c*FGHJ OPPK 6 /``sctest/view/PlayerUI.javapackage sctest.view; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.rmi.RemoteException; import javax.swing.JFrame; import sctest.client.Player; import sctest.object.Card; public class PlayerUI extends JFrame implements ActionListener { /** * */ private static final long serialVersionUID = -5437031600714716413L; private static int instances_ = 0; private Player player_; private HandPanel handPanel; public PlayerUI(Player p) throws RemoteException { super("Player " + p.getName()); player_ = p; this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setPreferredSize(new Dimension(600, 200)); this.setupUI(); this.pack(); this.setLocation(450, instances_ * this.getHeight()); instances_++; } private void setupUI() throws RemoteException { this.setLayout(new BorderLayout()); handPanel = new HandPanel(HandPanel.HORIZONTAL, player_.getHand()); handPanel.addHandListener(this); this.getContentPane().add(handPanel, BorderLayout.CENTER); this.setVisible(true); } /* * Is called by the handPanel's cardPressed() method */ public void actionPerformed(ActionEvent e) { String buttonNr = e.getActionCommand(); Card c = player_.getHand().get(Integer.valueOf(buttonNr)); try { player_.playCard(c); } catch (RemoteException e1) { e1.printStackTrace(); } } public void updateHand() { handPanel.setHand(player_.getHand()); handPanel.updateHandUI(); this.repaint(); } } PK ጾ6obK&zz/sctest/view/GameServerUI$GameUIPrintSream.class1:)sctest/view/GameServerUI$GameUIPrintSreamjava/io/PrintStreamui_Lsctest/view/GameServerUI;this$07(Lsctest/view/GameServerUI;Lsctest/view/GameServerUI;)VCode   java/lang/System outLjava/io/PrintStream;  (Ljava/io/OutputStream;)V  LineNumberTableLocalVariableTablethis+Lsctest/view/GameServerUI$GameUIPrintSream;uiprint(Ljava/lang/String;)V "!sctest/view/GameServerUI #printLogarg0Ljava/lang/String;printlnflush()V * '( , -.access$05(Lsctest/view/GameServerUI;)Ljavax/swing/JEditorPane;0 243javax/swing/JEditorPane 5setText SourceFileGameServerUI.java InnerClassesGameUIPrintSream   N*+ * *,)' ( A *+ ./  $%& A *+ 45  $%'( C*)* +/1:;< 678  9PK ጾ6Ǝ~MMsctest/view/GameServerUI.class1sctest/view/GameServerUIjavax/swing/JFrameserialVersionUIDJ ConstantValueMxWps+Lsctest/view/GameServerUI$GameUIPrintSream;logAreaLjavax/swing/JEditorPane;()VCode GameServer UI  (Ljava/lang/String;)V  setDefaultCloseOperation(I)Vjava/awt/Dimension  (II)V  !"setPreferredSize(Ljava/awt/Dimension;)V $ %setupUI')sctest/view/GameServerUI$GameUIPrintSream &) *7(Lsctest/view/GameServerUI;Lsctest/view/GameServerUI;)V , . /pack 132java/lang/System 45setOut(Ljava/io/PrintStream;)VLineNumberTableLocalVariableTablethisLsctest/view/GameServerUI;;java/awt/BorderLayout :=  ? @A setLayout(Ljava/awt/LayoutManager;)VCjavax/swing/JEditorPane B= F Hjavax/swing/JScrollPane GJ K(Ljava/awt/Component;)V M NOgetContentPane()Ljava/awt/Container;QCenter SUTjava/awt/Container VWadd)(Ljava/awt/Component;Ljava/lang/Object;)V Y Z[ setVisible(Z)V scrollPaneLjavax/swing/JScrollPane;printLog`java/lang/StringBuilder Bb cdgetText()Ljava/lang/String; fhgjava/lang/String ijvalueOf&(Ljava/lang/Object;)Ljava/lang/String; _m _o pqappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; _s tdtoString Bv wsetText By zrepaintlogstrLjava/lang/String;access$05(Lsctest/view/GameServerUI;)Ljavax/swing/JEditorPane; SourceFileGameServerUI.java InnerClassesGameUIPrintSream!  9***Y,*#*&Y**(+*-*+06"  -18 7 989%z2*:Y<>*BYDEGY*EIL*L+PR*X6D FH"J,K1M7289"\]^h,*E_Y*Eaekln+nru*Ex6W$X+Z7,89,{|}~%*E6@7 &PK ጾ6I+sctest/view/GameServerUI.javapackage sctest.view; import java.awt.BorderLayout; import java.awt.Dimension; import java.io.PrintStream; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JScrollPane; public class GameServerUI extends JFrame { /** * */ private static final long serialVersionUID = 5582476643510234781L; GameUIPrintSream ps; public GameServerUI() { super("GameServer UI"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setPreferredSize(new Dimension(300, 400)); this.setupUI(); ps = new GameUIPrintSream(this); this.pack(); System.setOut(this.ps); } class GameUIPrintSream extends PrintStream { GameServerUI ui_; public GameUIPrintSream(GameServerUI ui) { super(System.out); ui_ = ui; } @Override public void print(String arg0) { ui_.printLog(arg0); } @Override public void println(String arg0) { ui_.printLog(arg0); } @Override public void flush() { super.flush(); logArea.setText(""); } } private JEditorPane logArea; private void setupUI() { this.setLayout(new BorderLayout()); logArea = new JEditorPane(); //logArea.setEditorKit(new HTMLEditorKit()); JScrollPane scrollPane = new JScrollPane(logArea); this.getContentPane().add(scrollPane, BorderLayout.CENTER); this.setVisible(true); } public void printLog(String logstr) { /*try { logArea.insertString(logArea.getDocument().getEndPosition().getOffset(), logstr + "
", null); } catch (BadLocationException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ logArea.setText(logArea.getText() + "\n" + logstr); logArea.repaint(); //logArea.setCaretPosition(logArea.getText().length()); } } PK 6M sctest/view/CardButton.class1sctest/view/CardButtonjavax/swing/JButton EMPTY_IMAGELjava/lang/String; ConstantValue Empty RESOURCE_DIR  resource/IMAGE_EXTENSION.gifserialVersionUIDJڬʼnicon_Ljavax/swing/ImageIcon; orientation_I(Ljava/lang/String;I)VCode  ()V  !java/lang/StringBuilder # $(Ljava/lang/String;)V & '(append-(Ljava/lang/String;)Ljava/lang/StringBuilder; * +,toString()Ljava/lang/String; . /0createImageIcon+(Ljava/lang/String;)Ljavax/swing/ImageIcon; 2 4resource/Empty.gif 6 78setContentAreaFilled(Z)V : ;8setDefaultCapable = >8setFocusPainted@java/awt/Insets ?B C(IIII)V E FG setMargin(Ljava/awt/Insets;)V I J8 setFocusable L M8 setOpaqueLineNumberTableLocalVariableTablethisLsctest/view/CardButton;cardName orientation setCardName V WvalidatenamepaintComponent(Ljava/awt/Graphics;)V \ YZ^java/awt/Graphics2D`java/awt/image/BufferedImage bdcjavax/swing/ImageIcon ef getIconWidth()I bh if getIconHeight _k l(III)V _n op getGraphics()Ljava/awt/Graphics; br st paintIcon,(Ljava/awt/Component;Ljava/awt/Graphics;II)V@V xzyjava/lang/Math {| toRadians(D)D ~java/awt/geom/AffineTransform getRotateInstance"(D)Ljava/awt/geom/AffineTransform;?陙 ~ getScaleInstance#(DD)Ljava/awt/geom/AffineTransform; ~  concatenate"(Ljava/awt/geom/AffineTransform;)V ~ getTranslateInstance ]  drawImageP(Ljava/awt/Image;Ljava/awt/geom/AffineTransform;Ljava/awt/image/ImageObserver;)Z ] 3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)ZgLjava/awt/Graphics; componentG2DLjava/awt/Graphics2D;iLjava/awt/image/BufferedImage;imageG2DtransLjava/awt/geom/AffineTransform; java/lang/Object getClass()Ljava/lang/Class; java/lang/Class  getResource"(Ljava/lang/String;)Ljava/net/URL; b (Ljava/net/URL;)V java/lang/System errLjava/io/PrintStream;Image nicht gefunden: java/io/PrintStream $printlnpathimgURLLjava/net/URL; SourceFileCardButton.java!   e**+#** Y "+%%)-1 **3-1*5*9*<*?YAD*H*K*N6 (! * +--70<1A2F3U4Z5_8d9O ePQeReST$w3+#** Y "+%%)-1 **3-1*UN@A$C.F2GO3PQ3XYZ!*+[+]M_Y*1ad*1gdjN-m]:*1*q*<uw}:*1gtd,-*W ,-*WNFNP QR!Q%T.U:WBZHYM[[\^]l\o_{ehO>PQ {%`.WM./0|.*+M, bY, Y"+%)Np r tv,wO .PQ. %PK 6;Dtu u sctest/view/CardButton.java/* * Created on 25.02.2005 Filename: JGameCard.java */ package sctest.view; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.net.URL; import javax.swing.ImageIcon; import javax.swing.JButton; /** * A JButton with a Card image */ public class CardButton extends JButton { private static final String EMPTY_IMAGE = "Empty"; private static final String RESOURCE_DIR = "resource/"; private static final String IMAGE_EXTENSION = ".gif"; private static final long serialVersionUID = -7302102071467457143L; private ImageIcon icon_; private int orientation_ = 0; /** * Constructor: Create a new CardButton with the Card specified (as a string) and * the card orientation (HORIZONTAL or VERTICAL) */ public CardButton(String cardName, int orientation) { super(); if (cardName != null) { icon_ = this.createImageIcon(RESOURCE_DIR + cardName + IMAGE_EXTENSION); } else { icon_ = this.createImageIcon(RESOURCE_DIR + EMPTY_IMAGE + IMAGE_EXTENSION); } this.setContentAreaFilled(false); this.setDefaultCapable(false); this.setFocusPainted(false); this.setMargin(new Insets(0, 0, 0, 0)); this.setFocusable(false); this.setOpaque(true); //this.setBorderPainted(false); this.orientation_ = orientation; } /** * Set a new cardname and reinitialize the card image */ public void setCardName(String name) { if (name != null) { icon_ = this.createImageIcon(RESOURCE_DIR + name + IMAGE_EXTENSION); } else { icon_ = this.createImageIcon(RESOURCE_DIR + EMPTY_IMAGE + IMAGE_EXTENSION); } this.validate(); } /** * Paints the component in VERTICAL or HORIZONTAL orientation */ @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D componentG2D = (Graphics2D) g; BufferedImage i = new BufferedImage(this.icon_.getIconWidth() - 2, this.icon_.getIconHeight() - 2, BufferedImage.TYPE_INT_RGB); Graphics2D imageG2D = (Graphics2D) i.getGraphics(); this.icon_.paintIcon(this, imageG2D, 0, 0); if (orientation_ == VERTICAL) { AffineTransform trans = AffineTransform.getRotateInstance(Math .toRadians(90)); trans.concatenate(AffineTransform.getScaleInstance(0.8, 0.8)); trans.concatenate(AffineTransform.getTranslateInstance(0, -this.icon_.getIconHeight() - 2)); componentG2D.drawImage(i, trans, this); // g2d.translate(this.oldicon.getIconWidth()/2,this.oldicon.getIconHeight()/2); // g2d.rotate(2); } else { componentG2D.drawImage(i, 0, 0, this); } } /** * Load and Create the ImageIcon from the card image file specified * by path (Format: CardColor CardValue.jpg) */ private ImageIcon createImageIcon(String path) { URL imgURL = this.getClass().getResource(path); if (imgURL != null) { return new ImageIcon(imgURL); } else { System.err.println("Image nicht gefunden: " + path); return null; } } }PK 6lb sctest/view/BoardPanel.class1sctest/view/BoardPaneljavax/swing/JPanel BOARD_SIZEI ConstantValue buttonList_Ljava/util/List; Signature*Ljava/util/List;serialVersionUIDJ9)i()VCode  java/awt/GridLayout  (II)V   setLayout(Ljava/awt/LayoutManager;)V java/util/LinkedList  # %sctest/view/CardButton $' ((Ljava/lang/String;I)V * +,add*(Ljava/awt/Component;)Ljava/awt/Component; .0/java/util/List +1(Ljava/lang/Object;)Z 3 45 setEnabled(Z)V 7 85 setFocusableLineNumberTableLocalVariableTablethisLsctest/view/BoardPanel;ibuttonLsctest/view/CardButton; updateBoardUI((Lsctest/object/Board;Ljava/util/List;)V@(Lsctest/object/Board;Ljava/util/List;)V D E clearCards GIHsctest/object/Board JKgetPlayerOfPos(I)Lsctest/client/Player; .M NOindexOf(Ljava/lang/Object;)I GQ RSget(I)Lsctest/object/Card; U VW getPosFor(I)I Y Z[ getButton(I)Lsctest/view/CardButton; ] ^_getSize()Ljava/awt/Dimension; acbjava/awt/Dimension dwidth af gheight $i jsetSize lnmsctest/naming/CardNames opgetName((Lsctest/object/Card;)Ljava/lang/String; $r st setCardName(Ljava/lang/String;)VboardLsctest/object/Board;playersplayLsctest/client/Player;playerNrcLsctest/object/Card;LocalVariableTypeTable(Ljava/util/List; . R(I)Ljava/lang/Object; SourceFileBoardPanel.java!    O**Y*Y!"<!$Y&M*,)W*",-W*2*69. !"$!&+(1)<$D,I-N/: O;<&=+>?@A B c*C>W+F:6E,L6+P:**TX*\`l*\elh**TXkq96 68 9:;<"=)>H?R@W?Z8bD:Hc;<cuvcw \=JxyGz)1{|} cw~EW<*Xq9JKJM:;<=VWr*'!#%9S U"W$Y&[(]:*;<*zZ[B*"$9d:;<=PK 6܍GGsctest/view/BoardPanel.java/** * */ package sctest.view; import sctest.client.Player; import sctest.naming.CardNames; import sctest.object.Board; import sctest.object.Card; import java.awt.GridLayout; import java.util.LinkedList; import java.util.List; import javax.swing.JPanel; /** * A Panel with four CardButton objects that represent the current active Board * */ public class BoardPanel extends JPanel { private static final int BOARD_SIZE = 4; private List buttonList_; private static final long serialVersionUID = -7141846003079501463L; /** * Constructor: Set Layout and init CardButtons */ public BoardPanel() { this.setLayout(new GridLayout(2, 2)); this.buttonList_ = new LinkedList(); for (int i = 0; i < BOARD_SIZE; i++) { CardButton button = new CardButton(null, 1); this.add(button); this.buttonList_.add(button); } this.setEnabled(false); this.setFocusable(false); } /** * Reset the CardButtons to the buttons in the Board given */ public void updateBoardUI(Board board,List players) { clearCards(); for (int i = 0; i < BOARD_SIZE; i++) { Player play = board.getPlayerOfPos(i); int playerNr = i; if (play != null) { playerNr = players.indexOf(play); Card c = board.get(i); getButton(getPosFor(playerNr)).setSize(getSize().width/2,getSize().height/2); this.getButton(getPosFor(playerNr)).setCardName( CardNames.getName(c)); } } } /** * Sets all Card names (reps. images) to null */ private void clearCards() { for (int i = 0; i < BOARD_SIZE; i++) { this.getButton(i).setCardName(null); } } /** * Returns the button corresponding to the player with the number given */ private int getPosFor(int playerNr) { switch (playerNr) { case 0: return 0; case 1: return 2; case 2: return 3; case 3: return 1; } return 0; } /** * Returns the button i in the button list */ private CardButton getButton(int i) { return this.buttonList_.get(i); } } PK 6Z^sctest/view/HandPanel.class1sctest/view/HandPaneljavax/swing/JPaneljava/awt/event/ActionListenerCOLORSI ConstantValue HAND_SIZE  cardButtons_Ljava/util/List; Signature*Ljava/util/List;serialVersionUIDJFOaQ HORIZONTALVERTICALhand_Lsctest/object/Hand; listeners_%Ljavax/swing/event/EventListenerList;(I)V Exceptions!java/rmi/RemoteExceptionCode $ %()V'#javax/swing/event/EventListenerList &$ * ,java/awt/GridLayout +. /(II)V 1 23 setLayout(Ljava/awt/LayoutManager;)V5java/util/LinkedList 4$ 8 :sctest/object/Card <>=java/lang/Math ?@random()D@@" 9.Gsctest/view/CardButton IKJsctest/naming/CardNames LMgetName((Lsctest/object/Card;)Ljava/lang/String; FO P(Ljava/lang/String;I)V RTSjava/lang/String UVvalueOf(I)Ljava/lang/String; FX YZsetName(Ljava/lang/String;)V \^]java/util/List _`add(Ljava/lang/Object;)Z b _c*(Ljava/awt/Component;)Ljava/awt/Component;LineNumberTableLocalVariableTablethisLsctest/view/HandPanel; orientationibuttonLsctest/view/CardButton;cLsctest/object/Card;(ILsctest/object/Hand;)V p  rtssctest/object/Hand uvget(I)Lsctest/object/Card;handsetHand(Lsctest/object/Hand;)Vh updateHandUI } ~ getButton(I)Lsctest/view/CardButton; 9 toString()Ljava/lang/String; F Z setCardName F %repaint r size()I j \ u(I)Ljava/lang/Object;addHandListener"(Ljava/awt/event/ActionListener;)V & _-(Ljava/lang/Class;Ljava/util/EventListener;)V F addActionListenerlLjava/awt/event/ActionListener;buttonNr cardPressed(Lsctest/view/CardButton;)V & getListenerList()[Ljava/lang/Object;java/awt/event/ActionEvent F L ((Ljava/lang/Object;ILjava/lang/String;)V  actionPerformed(Ljava/awt/event/ActionEvent;)Vsource listeners[Ljava/lang/Object;fooEventLjava/awt/event/ActionEvent;  getSource()Ljava/lang/Object;  e pressedCard SourceFileHandPanel.java!          "p*#*&Y()*+Y -0*+Y -0*4Y67=t-9Y;Ak;CkE:FYHNN*9Y;Ak;CkE:FYHNN-QW*7-[W*-aW dV-.01$326=8B:F;R<X;_=p?|@?BDEF8IeHfgh?zimjkjk_lmlmn "_*#*,o*&Y()*+Y -0*+Y -0*4Y67>fFY*oqHN:+9Y;Ak;CkE:FYHN:QW*7[W*aW dNNO QST)V7YB[G]K_caobua|dfgh[keHfghwDli`jkjk|lmxy">*+od noefgz{%"j<!*|*oq*|*o<'**o`|**o`| *od*d* vwx v.z3{D|Tze~ie jfg,i05~"B*7Fdefgi"p"*)+=*|* d !e "fg" ">*)M,d>,,2!Y*+:,`2ֱd& "'6=e4>fg>k6 0i'"_+FM,*,de fg kPK 6<KKsctest/view/HandPanel.java/** * */ package sctest.view; import sctest.naming.CardNames; import sctest.object.Card; import sctest.object.Hand; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.rmi.RemoteException; import java.util.LinkedList; import java.util.List; import javax.swing.JPanel; import javax.swing.event.EventListenerList; /** * HandPanel is a Panel holding the CardButtons of a Players Hand * */ public class HandPanel extends JPanel implements ActionListener { private static final int COLORS = 4; private static final int HAND_SIZE = 9; private List cardButtons_; private static final long serialVersionUID = 5051908824891500716L; public static final int HORIZONTAL = 0; public static final int VERTICAL = 1; /** * Constructor: Create a new HandPanel with the orientation given * orientation = HORIZONTAL or VERTICAL * * @throws RemoteException */ public HandPanel(int orientation) throws RemoteException { super(); this.listeners_ = new EventListenerList(); if (orientation == HORIZONTAL) { this.setLayout(new GridLayout(1, HAND_SIZE)); } else { this.setLayout(new GridLayout(HAND_SIZE, 1)); } this.cardButtons_ = new LinkedList(); for (int i = 0; i < 9; i++) { CardButton button; if (orientation == HORIZONTAL) { Card c = new Card((int) (Math.random() * COLORS), (int) (Math .random() * HAND_SIZE)); button = new CardButton(CardNames.getName(c), HORIZONTAL); } else { Card c = new Card((int) (Math.random() * COLORS), (int) (Math .random() * HAND_SIZE)); button = new CardButton(CardNames.getName(c), VERTICAL); } button.setName(String.valueOf(i)); this.cardButtons_.add(button); this.add(button); } } private Hand hand_; public HandPanel(int orientation, Hand hand) throws RemoteException { super(); hand_ = hand; this.listeners_ = new EventListenerList(); if (orientation == HORIZONTAL) { this.setLayout(new GridLayout(1, HAND_SIZE)); } else { this.setLayout(new GridLayout(HAND_SIZE, 1)); } this.cardButtons_ = new LinkedList(); for (int i = 0; i < 9; i++) { CardButton button; if (orientation == HORIZONTAL) { button = new CardButton(CardNames.getName(hand_.get(i)), HORIZONTAL); } else { Card c = new Card((int) (Math.random() * COLORS), (int) (Math .random() * HAND_SIZE)); button = new CardButton(CardNames.getName(c), VERTICAL); } button.setName(String.valueOf(i)); this.cardButtons_.add(button); this.add(button); } } public void setHand(Hand h){ hand_ = h; } /** * Update the panel with the cards in the hand given */ public void updateHandUI() { for (int i = 0; i < hand_.size(); i++) { this.getButton(i).setCardName(hand_.get(i).toString()); this.getButton(i).repaint(); } for (int j = 0; j < HAND_SIZE - hand_.size(); j++) { this.getButton(hand_.size() + j).setCardName(null); this.getButton(hand_.size() + j).repaint(); } this.repaint(); } /** * Returns CardButton i in the cardButtonList */ private CardButton getButton(int i) { return this.cardButtons_.get(i); } private EventListenerList listeners_; /** * Add Listeners to all Cards in the Hand */ public void addHandListener(ActionListener l) { listeners_.add(ActionListener.class, l); for (int buttonNr = 0; buttonNr < HAND_SIZE; buttonNr++) { this.getButton(buttonNr).addActionListener(this); } } /** * Informs the Container (eg. JassFrame) of a buttonPressed event */ private void cardPressed(CardButton source) { Object[] listeners = this.listeners_.getListenerList(); for (int i = listeners.length - 2; i >= 0; i -= 2) { if (listeners[i] == ActionListener.class) { // Source = this, actioncommand = this.getName(); ActionEvent fooEvent = new ActionEvent(this, 0, source .getName()); ((ActionListener) listeners[i + 1]).actionPerformed(fooEvent); } } } /** * Called when a cardButton has been pressed */ public void actionPerformed(ActionEvent e) { CardButton pressedCard = (CardButton) e.getSource(); if (pressedCard.getName() != null) { cardPressed(pressedCard); } } } PK u6,u-sctest/view/BoardUI.class1lsctest/view/BoardUIjavax/swing/JFrameserialVersionUIDJ ConstantValue%{ boardPanel_Lsctest/view/BoardPanel;(Ljava/lang/String;)V Exceptionsjava/rmi/RemoteExceptionCodejava/lang/StringBuilder Board of   append-(Ljava/lang/String;)Ljava/lang/StringBuilder;  toString()Ljava/lang/String;  " #$setDefaultCloseOperation(I)V&java/awt/Dimension %( )(II)V + ,-setPreferredSize(Ljava/awt/Dimension;)V / 01setupUI()V 3 41pack 6 7) setLocationLineNumberTableLocalVariableTablethisLsctest/view/BoardUI; playerNameLjava/lang/String;?java/awt/BorderLayout >A 1 C DE setLayout(Ljava/awt/LayoutManager;)VGsctest/view/BoardPanel FA J L MNgetContentPane()Ljava/awt/Container;PCenter RTSjava/awt/Container UVadd)(Ljava/awt/Component;Ljava/lang/Object;)V X YZ setVisible(Z)V updateBoardUI((Lsctest/object/Board;Ljava/util/List;)V Signature@(Lsctest/object/Board;Ljava/util/List;)V F` [\ Fb c1repaintbLsctest/object/Board;playersLjava/util/List;LocalVariableTypeTable(Ljava/util/List; SourceFile BoardUI.java!  ;*Y+ *!*%Y,,'**.*2*58*.2:!9;:;;<=01c)*>Y@B*FYHI*K*IOQ*W8' ),#-(/9 ):;[\]^i*I+,_*Ia82 349 :;defgh fijkPK u6 Ɲ&&sctest/view/BoardUI.javapackage sctest.view; import java.awt.BorderLayout; import java.awt.Dimension; import java.rmi.RemoteException; import java.util.List; import javax.swing.JFrame; import sctest.client.Player; import sctest.object.Board; public class BoardUI extends JFrame{ /** * */ private static final long serialVersionUID = -5777565395794257541L; public BoardUI(String playerName) throws RemoteException { super("Board of " + playerName); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setPreferredSize(new Dimension(300, 300)); this.setupUI(); this.pack(); this.setLocation(0,400); } private BoardPanel boardPanel_; private void setupUI() throws RemoteException { this.setLayout(new BorderLayout()); boardPanel_ = new BoardPanel(); this.getContentPane().add(boardPanel_, BorderLayout.CENTER); this.setVisible(true); } public void updateBoardUI(Board b,List players){ boardPanel_.updateBoardUI(b,players); boardPanel_.repaint(); } } PK 6 sctest/ai/PK 6һ sctest/ai/SimpleAI.class1sctest/ai/SimpleAIjava/lang/Objectsctest/ai/JassAIjava/io/SerializableserialVersionUIDJ ConstantValueD4unYplayer_Lsctest/client/Player;rules_Lsctest/rule/RoundRules;hand_Lsctest/object/Hand;board_Lsctest/object/Board;turnNrIgone_Lsctest/object/CardList;<(Lsctest/client/Player;Lsctest/server/GameServerInterface;)V Exceptionsjava/rmi/RemoteExceptionCode ! "()V $  &  (*)!sctest/server/GameServerInterface +,getRules()Lsctest/rule/RoundRules; .  (0 12 goneCards()Lsctest/object/CardList; 4  (6 78getBoard()Lsctest/object/Board; : LineNumberTableLocalVariableTablethisLsctest/ai/SimpleAI;playerserver#Lsctest/server/GameServerInterface; computeCard()Lsctest/object/Card; EGFsctest/client/Player HIgetHand()Lsctest/object/Hand; K Msctest/util/GoneCardHelper LO P3(Lsctest/object/CardList;Lsctest/rule/RoundRules;)VRsctest/object/CardList LT UV getBockList/(Lsctest/object/Hand;)[Lsctest/object/CardList; XZYsctest/object/Board [\size()I QZ _a`java/lang/System bcoutLjava/io/PrintStream;ejava/lang/StringBuilderg Bock nr. di j(Ljava/lang/String;)V dl mnappend(I)Ljava/lang/StringBuilder;p played dr ms-(Ljava/lang/String;)Ljava/lang/StringBuilder; du vwtoString()Ljava/lang/String; y{zjava/io/PrintStream |jprintln Q~ get(I)Lsctest/object/Card; sctest/util/CardTool  getValidCards[(Lsctest/object/Hand;Lsctest/object/Board;Lsctest/rule/RoundRules;)Lsctest/object/CardList;helperLsctest/util/GoneCardHelper;bocks[Lsctest/object/CardList;icinit^(Lsctest/client/Player;Lsctest/rule/RoundRules;Lsctest/object/Board;Lsctest/object/CardList;)Vprulesboardgone chooseRuleSet4(Lsctest/scores/ScoreTable;)Lsctest/rule/RoundRules; scoreTableLsctest/scores/ScoreTable; SourceFile SimpleAI.java!   -* *#*+%*,'-*,/3*,59;-' .01"2,4< -=>-?-@ABCv**%DJLY*9*-NL QM+*JSM*9W^>2,2]&^dYfhkoqtx,2}>,2] ,2}">,2] ,2}*J*9*-N-};R7 9;!<*>4?9@BA]Be?mEsF|GEKLMKRS<H=>!67px*+%*,-*3*-9;]_ `ac<4=>6;g<=>PK 6 Ri__sctest/ai/SimpleAI.java/** * */ package sctest.ai; import java.io.Serializable; import java.rmi.RemoteException; import sctest.client.Player; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.object.Hand; import sctest.rule.RoundRules; import sctest.scores.ScoreTable; import sctest.server.GameServerInterface; import sctest.util.CardTool; import sctest.util.GoneCardHelper; /** * A simple (quite stupid) AI implementation * */ public class SimpleAI implements JassAI, Serializable { /** * */ private static final long serialVersionUID = 4959365294170473305L; private Player player_; private RoundRules rules_; private Hand hand_; private Board board_; private int turnNr = -1; private CardList gone_; public SimpleAI(Player player, GameServerInterface server) throws RemoteException{ this.player_ = player; this.rules_ = server.getRules(); this.gone_ = server.goneCards(); this.board_ = server.getBoard(); } public Card computeCard() throws RemoteException { this.hand_ = this.player_.getHand(); GoneCardHelper helper = new GoneCardHelper(board_, rules_); CardList[] bocks = new CardList[9]; bocks = helper.getBockList(hand_); if (board_.size() == 0) { for (int i = 0; i < 1; i++) { if (bocks[i].size() > 0) { System.out.println("Bock nr. " + i + " played" ); return bocks[i].get(0); } } for (int i = 8; i >= 1; i--) { if (bocks[i].size() > 0) { return bocks[i].get(0); } } } else { for (int i = 8; i >= 1; i--) { if (bocks[i].size() > 0) { return bocks[i].get(0); } } } CardList c = CardTool.getValidCards(hand_, board_, rules_); return c.get(0); } /* * (non-Javadoc) * * @see jass.JassAI#init(jass.JassGame) */ public void init(Player p, RoundRules rules, Board board, CardList gone) { this.player_ = p; this.rules_ = rules; this.gone_ = gone; this.board_ = board; } public RoundRules chooseRuleSet(ScoreTable scoreTable) { return null; } } PK 6k%22sctest/ai/RoundStats.class1sctest/ai/RoundStatsjava/lang/ObjectCOLORSI ConstantValue scoreTeam1_ scoreTeam2_ bockList_[Lsctest/object/CardList; trumpfList_Lsctest/object/CardList; goneList_ colorList_ validList_root_Ljavax/swing/tree/TreeNode;player_Lsctest/client/Player;board_Lsctest/object/Board;rules_Lsctest/rule/RoundRules;gone_cardNr_turnNr_^(Lsctest/client/Player;Lsctest/object/Board;Lsctest/rule/RoundRules;Lsctest/object/CardList;)VCode ! "()V $  &  (  *  ,  .  0 1"updateLineNumberTableLocalVariableTablethisLsctest/ai/RoundStats;pbrulesgone ; <"createColorStats > ?"createGoneStats A B"createBockStats DFEsctest/client/Player GHgetHand()Lsctest/object/Hand;Jsctest/object/CardList L  I! OQPsctest/util/CardTool RS getAllOfColor3(Lsctest/object/CardList;I)Lsctest/object/CardList; IU VWaddAll(Lsctest/object/CardList;)VcardsicolorC \  I^ _`getGoneOfColor(I)Lsctest/object/CardList;bsctest/object/Hand ad W af ghsort(Lsctest/rule/RoundRules;)V jlkjava/rmi/RemoteException m"printStackTrace goneofcolhLsctest/object/Hand;eLjava/rmi/RemoteException; tvusctest/rule/RoundRules wx specialColor()IzAnzahl Trümpfe: |  ~ I get(I)Lsctest/object/Card; O isBockH(ILsctest/object/Card;Lsctest/object/CardList;Lsctest/rule/RoundRules;)Z I add(Lsctest/object/Card;)V I xsizetrumpfeLjava/lang/String;cardsLj getBockList()[Lsctest/object/CardList; getCardNr getColorList getGoneList getScoreTeam1   getScoreTeam2   getTrumpfList()Lsctest/object/CardList; getNrColor(I)Icolor getValidList   SourceFileRoundStats.java!      (* *#*%*+'*,)*-+*-*/2& 2x z3456#7'834(45(6(7(8(91"C *:*=*@2;<= >3  45<";*'CL*IK=#*KIYMS+NN*K2-Tޱ2"DEHI"J(K2H:M3*;453X(Y( Z?"Q*I[<A*[IYMS*-]MaY,cN-*+e :i*[2-T,47j2. RS TU#V,X7Y9Z>\HSP^34Q45 FY#%n,op9qrB" *+syL*'CM*,*+sN{* I}*'CL=E*}IYMS>(+*-*+*}2++ք 2Bd efgh&g)k2l:m?nLoQpeqso~mu3>45:N<KN0Y/*}23 45x/*#23 45/*K23 45/*[23 45x/*23 45x/*23 45/*{23 45> *K223 45 /*23 45PK 6eA..sctest/ai/RoundStats.java/** * */ package sctest.ai; import java.rmi.RemoteException; import javax.swing.tree.TreeNode; import sctest.client.Player; import sctest.object.Board; import sctest.object.CardList; import sctest.object.Hand; import sctest.rule.RoundRules; import sctest.util.CardTool; /** * GameStats takes a Game object and collects some statistics about it * */ public class RoundStats { private static final int COLORS = 4; private int scoreTeam1_; private int scoreTeam2_; private CardList bockList_[]; private CardList trumpfList_; private CardList goneList_[]; private CardList colorList_[]; private CardList validList_; private TreeNode root_; private Player player_; private Board board_; private RoundRules rules_; private CardList gone_; public RoundStats(Player p, Board b, RoundRules rules,CardList gone) { this.player_ =p; this.board_ = b; this.rules_ = rules; this.gone_ = gone; this.update(); } public void update() { this.createColorStats(); this.createGoneStats(); this.createBockStats(); } /** * Create lists with each containing the cards of a color of the active Players hand */ private void createColorStats() { CardList cards = player_.getHand(); this.colorList_ = new CardList[COLORS]; // All Cards of Color i for (int i = 0; i < COLORS; i++) { this.colorList_[i] = new CardList(); CardList colorC = CardTool.getAllOfColor(cards, i); this.colorList_[i].addAll(colorC); } } private void createGoneStats() { this.goneList_ = new CardList[COLORS]; for (int i = 0; i < COLORS; i++) { this.goneList_[i] = new CardList(); CardList goneofcol = gone_.getGoneOfColor(i); Hand h = new Hand(goneofcol); try { h.sort(rules_); } catch (RemoteException e) { e.printStackTrace(); } goneList_[i].addAll(h); } } /** * Create lists with Bocks sorted by its level and color */ private void createBockStats() { if (rules_.specialColor() != -1) { String trumpfe = "Anzahl Trmpfe: "; CardList cardsL = player_.getHand(); this.trumpfList_ = CardTool.getAllOfColor(cardsL, rules_ .specialColor()); } bockList_ = new CardList[9]; CardList cardsL = player_.getHand(); for (int j = 0; j < 9; j++) { bockList_[j] = new CardList(); for (int i = 0; i < cardsL.size(); i++) { if (CardTool.isBock(j, cardsL.get(i), gone_, rules_)) { bockList_[j].add(cardsL.get(i)); } } } } private int cardNr_ = 0; private int turnNr_ = 0; /** * @return Returns the bockList array where the array has the form arr[level] */ public CardList[] getBockList() { return this.bockList_; } /** * @return Returns the card. */ public int getCardNr() { return this.cardNr_; } /** * @return Returns the color. */ public CardList[] getColorList() { return this.colorList_; } /** * @return Returns the gone. */ public CardList[] getGoneList() { return this.goneList_; } /** * @return Returns the scoreTeam1. */ public int getScoreTeam1() { return this.scoreTeam1_; } /** * @return Returns the scoreTeam2. */ public int getScoreTeam2() { return this.scoreTeam2_; } /** * @return Returns the trumpfList */ public CardList getTrumpfList() { return this.trumpfList_; } public int getNrColor(int color) { return this.colorList_[color].size(); } /** * @return */ public CardList getValidList() { return this.validList_; } } PK 6S ;Qsctest/ai/JassAI.class1sctest/ai/JassAIjava/lang/Object computeCard()Lsctest/object/Card; Exceptions java/rmi/RemoteExceptioninit^(Lsctest/client/Player;Lsctest/rule/RoundRules;Lsctest/object/Board;Lsctest/object/CardList;)V chooseRuleSet4(Lsctest/scores/ScoreTable;)Lsctest/rule/RoundRules; SourceFile JassAI.java  PK 6:,sctest/ai/JassAI.java/** * */ package sctest.ai; import java.rmi.RemoteException; import sctest.client.Player; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.rule.RoundRules; import sctest.scores.ScoreTable; /** * General interface defining the functions available to the game for computing * cards by AI */ public interface JassAI { /** * Compute a card to be played by the player * @return The card computed by the AI * @throws RemoteException */ public abstract Card computeCard() throws RemoteException; /** * Initializes the AI with the Player and the Game object * @param p The player which holds this AI * @param game The game object */ /* * (non-Javadoc) * * @see jass.JassAI#init(jass.JassGame) */ public void init(Player p, RoundRules rules, Board board, CardList gone); public abstract RoundRules chooseRuleSet(ScoreTable scoreTable); } PK 6sctest/naming/PK 63Vsctest/naming/EColorNames.class1@sctest/naming/EColorNamesjava/lang/EnumEichelnLsctest/naming/EColorNames;RosenSchellenSchilten ENUM$VALUES[Lsctest/naming/EColorNames;()VCode  (Ljava/lang/String;I)V          LineNumberTableLocalVariableTable thisgetName(I)Ljava/lang/String; ( )*values()[Lsctest/naming/EColorNames; , -.name()Ljava/lang/String;iI 243java/lang/System 56 arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOf/(Ljava/lang/String;)Lsctest/naming/EColorNames; : 7;5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFileEColorNames.java Signature-Ljava/lang/Enum;@1@@@@   xTYYYYYSYSYSYS!  4 "1*+#! " $ %&3 '2+!"  /0 )*6YK*Y<YM1,!" 78* *9!"<=>?PK  6Asctest/naming/EColorNames.java/** * */ package sctest.naming; /** * EColorNames holds the card color names * */ public enum EColorNames { Eicheln, Rosen, Schellen, Schilten; public static String getName(int i){ return values()[i].name(); } } PK 6q 77sctest/naming/CardNames.class1Osctest/naming/CardNamesjava/lang/Object()VCode  LineNumberTableLocalVariableTablethisLsctest/naming/CardNames;getName((Lsctest/object/Card;)Ljava/lang/String; sctest/object/Card getColor()I  getValue sctest/naming/EColorNames (I)Ljava/lang/String;  sctest/naming/EValueNames"java/lang/StringBuilder $&%java/lang/String '(valueOf&(Ljava/lang/Object;)Ljava/lang/String; !* +(Ljava/lang/String;)V- !/ 01append-(Ljava/lang/String;)Ljava/lang/StringBuilder; !3 45toString()Ljava/lang/String;cLsctest/object/Card;colorIvalue colorNameLjava/lang/String; valueName getRandomName Deprecated ACBjava/lang/Math DErandom()D G HIvalues()[Lsctest/naming/EColorNames; K HL()[Lsctest/naming/EValueNames; SourceFileCardNames.java!/*   4**<*=N:!Y-#),..2   4467 )89$:9;<=< >5?p4@FkK@JkL!Y*#),.+.2 )*+ &;<=<MNPK 6S>++sctest/naming/CardNames.java/** * */ package sctest.naming; import sctest.object.Card; /** * CardNames is a utility class for constructing user-friendly readable * string-representations of cards */ public abstract class CardNames { /** * Get a user-friendly name of the card * @param c The card * @return A string containing the color and value name of the card */ public static String getName(Card c){ if (c == null){ return null; } int color = c.getColor(); int value = c.getValue(); String colorName = EColorNames.getName(color); String valueName = EValueNames.getName(value); return colorName +" "+ valueName; } /** * Get a random card name * @deprecated * @return A string representation of a random card */ public static String getRandomName(){ String colorName = EColorNames.getName((int)(Math.random()*EColorNames.values().length)); String valueName = EValueNames.getName((int)(Math.random()*EValueNames.values().length)); return colorName +" "+ valueName; } } PK 6=Gv  sctest/naming/EValueNames.class1Ysctest/naming/EValueNamesjava/lang/EnumVSechsLsctest/naming/EValueNames;VSiebenVAchtVNeunVBannerVUnderVOberVKoenigVAs ENUM$VALUES[Lsctest/naming/EValueNames;()VCode  (Ljava/lang/String;I)V       #  &  )  ,  /  2  4 LineNumberTableLocalVariableTable thisgetName(I)Ljava/lang/String; < =>values()[Lsctest/naming/EValueNames; @ ABname()Ljava/lang/String; DFEjava/lang/String G: substringiI KMLjava/lang/System NO arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOf/(Ljava/lang/String;)Lsctest/naming/EValueNames; S PT5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFileEValueNames.java Signature-Ljava/lang/Enum;@1 @@@@ @ @ @ @ @YYYY!"Y$%Y'(Y*+Y-.Y01 YSYSYSY"SY%SY(SY+SY.SY1S35  x 61*+75 6 8 9:7 ;2?C56  HI =>63YK*Y<YMJ,56 PQ* *R56UVWXPK  6isctest/naming/EValueNames.java/** * */ package sctest.naming; /** * EValueNames holds the cards value names * */ public enum EValueNames { VSechs, VSieben,VAcht,VNeun,VBanner,VUnder, VOber, VKoenig, VAs; public static String getName(int i){ return values()[i].name().substring(1); } } PK a}6C#sctest/view/resource/Rosen Acht.gifGIF89a}W864_]'///궶((>JEutrKKJ{'!䤤@? N'lQ>fllGɣMrEDAO==z|1(S^\J@(_l@] m9єTPӏHFd91P6@ %@M{RuD |pS d8y*鳁vAXC j70kmlx TUQ~ d;m 3bZCA\ #TgR' b,@ A=i(^ <5(kf&/ƀE@fnťIlЌ^5ה僺@ 8z= ؐP+ K{O X}2o<y9Eǔ[ 0nT;i>|efb.Y,>=̏uԁQ;84QsAnIJ -GNŪ@L c8 vk=@1 mmHMoOjk7yۚ@rd0 2O6|r'\_W[k4{ c7^Dh(_Ew8 |,.9N-PTvO(&~V~D |Ohٽ.*EH'Ar/H< 4 Վd?nG8yA =PH;8e5I$ĄQ.I,p$u' @~QKD60nK6LRz0$&`g:ZUͦ)LC'PZtG(srb4~8EQ2=Chq=hoD> '+&% `1MxP#-C;Rׅ\$msPDW8S<$y~Tn%p75/P'PP[~ZufNCoG+gjP+v;$8ADdEG=1U>LcOc3:fP0 5P7eUl&b~uFB':%0ut3}=Pp5zʸ# P: rEH_vXxn$@=va%A p}Mz47y F;]>b2K7%^lASH 0Sc8\/DfU. X-TU/%*b YTd49)pCr1_Y(I)j rl-n/+_yad9x`QTLe)`0gqiǖhOpIMU_jɝv@+,x!J_ u%Q`^e3B:`W`sU.C<6`9"ZI$0@u:Bi}~Y1v\CVEMR3lz\Z&f]'T|2D_yuy(y=T8sjD>P\tʩ:z% s\;s\ 00Z3p(Y.ٓ.\5zn#ک~06f_C v~gY#0=NӺgrSd],p+á >qi|K@1Rpdd8 T)N3Qf33:)7"1OD0&冭ū~Jtr9rBwC )2y!&(hx8Piq۵GDrD`!6 t] Id)>;|~ku#h=  P o;{hc$u{c^Mg7@<M e{q_6 y 0l3r( 5`}K뼆m׋#9`uʋh[ -pvмk۷B6k~=5Sz|ٿV7( (ix#$pً*0~:a ºzB; _2.& ZF06@Zx;k̫&vV?9HlePqp"@ ¹C,mixIRiVqf6.8XdIJ9Q[0%[yR pBU=  RL">VsFZ(G!а0Ć/\!;XdGgW8pԺ*l'5J9l ׋U`{#|˿e֓z ݁ԣ}\׶ ;TTwf$  ' yݎi]aIe2}n7c:%HKf~MÓ1<"m#84c;M?^[s9QM6]4|kIR='(dNZeM5=2 {b} YR(4p2>8 ]P)73- 3M\ ;唉,FzV'sb\{VHx)K+*z8WT\&44+QBԪ{Uc7Ӌ.5 S>;U #1w qGH7T0BoŞgXmQg8{w0Kإ1a%蕸PL$jx$p W j~ Z 1 _MtMX1x5n§{M4y LNHP82Ki]_t*"%|Ux,%P _Hy'qE?3hJwߖs1R%p)=QfЀ 6K3rM/{lz=l=B6H o 0Uj'ŜvBl/wo Mt@sꄗ{Ǐǃg~V@{_؟w1@eWx ;%2oW6X4=т`X@֪C|Q瘜4$EZMXĴfy.~Ll pJJ: -J #7b``V >#!95(,03YU96VV^R`:R jRk%i]`dgGlH4nm :F]< W3f)066R2pnx "' Z5R CčR)%tXaE3T!M m@d dBf+=F A>3QE1T LB@+1<.h*cNu=pA۶ 8𢃻Xƒ#> \>p9ly.!sSMA,  @ #TÂ3R(r uKtzH,3ryR7GwaDC9H@ @w([ vue`C͜'p&WF)d `V+(fH?24Ȣhυ6sav`[ E0&hp@:ۮ.i@h~8Q:FB0*()0^D>>R8RP: .x(IM C!5aB9` uیl ql Xp-rT8 . ʭ 5$e7A  b؎ --t35?1 ,nRK-UL.tCYS`mv"f85Uf &v=aTT0XVKaf:p·4N `Bf0Ԁ{]F%ݜ$E]LY|]&_L bv8>1 0{QfvP,r:`iJh|/<#q`&ML=p`kf%pSPٝ:ǒڱ,g 2{n 4Ѥz  ÷^ hm_fKHj 8bP;&U 59/3\v@j{oo:]u(`+NGhS;uH0<;0Xh-%S/}EG?v ڕdd rƼu bivz>?aBUWk0tgmxP8d `SvUjs`ԅz!j0' "pC |Q Py1OppLb  ;xvePtD՝Z b Z┉ 0QaGdR2JZ34-%Ѯ/s(w*FCBag\`(B(BM&L/[J@T`aVWpP8`;&N<4YC'L @=R$ %PS1{AvfeIbަY+@ܴFAs<*HE4$@ozsAtqzD<B7 T=h*pu%[8h`|55ٿ:ZAe@@-\T ZU<, K8O(r2UխKwkd}Q* s:J8 kیDn /wa.Kiaԍ@'h T湗 20^PYbck`4ˌǗۋ{0 $ѻ-ɂW/z&3LJ iJNfᘠhL@Rg+uFgսy&8<~v`x`w҆N ]6kcJҘ6%DbRϺԧC `ȭ_!YӚطu!dR3(㐀2̶vmm<(!塷 эm[+V 1xhme;e};6 ;@cp/\ !qO1*8Rns%7Qr-w9cF5qsyt5~>/My U#Wwl4^dzA !Xo;PK a}6UWa"a"!sctest/view/resource/Rosen As.gifGIF89a}TKLN낁Ү97333bb&,+J4+Vjqqpf-oH:JI YmoH50= 8.>}>P!HX??U1!Ɠ$Ӹc` I '%Q,WBA?;] "8]\:G H*љF ɴ8;v Hh˪y&W;00P&! /g_VdfL7(QÆؼQ8XOa=[9!r{Ѽnݛw=tyRLV=.Zo\l׆9xtY 1obv^"4Ѐ>yǞLker=0Y@ @0fx 9c8 0ԅE@Q8a # w^;ޑ]T_ Ё )̅00\P '{jj: @ < ,9 > pfb5 $jcdDberqQ ܪ+cE;& @2 pPS:.|')uߙl"@8.2sBCmMM\&>o%|z94@¹Ǯ~ EB{Tn{ +x k꾰0 88grҧVg+((!n*< 0{ßӌ /l{%$p x `oĀב| h@(`>.f/KX\4`i\L3<~;px@&JFWIওP%^ CQ4$.x1O{GQ8ISopL9)PcZzNhn=iَ9h ΪTKTrIL'' %1uWC%Ph@Z3o7d`W|5=IJ 5N*'V0vnKѴ>I#eJ&쀊,6D5*M<6 /hmz8] |\ou7%:fս<E =dB89RuZk֭Q&4WzM栉ܩf8sy0wG %xv@8CwJ8侪Mv`˰ʬD@F]RxÃF(u@kj1?Pad8̓Uה %rKLQX/95[W(o=qOڛ i(ڞK8ƶgy,cٝ\(c핪L?a&Mʩ)U+r/{_t|/y]73 tu.p*UP-M/^ 2t`uVPY6uY+FPd0hp})mhIa[z R;8gx;WX>!e=tN:e[ i|2t 12_ ՌҠv8 ?oxI3;mI.P+$ Tsa6AәZZA# Ι6]{it@$1@4Q?~> ̂]d}70cI9-$ p-xt_[!OB*07~/| tY:ǀ{l#b~ <<"2}1L|npq Q(`:<@7wc~@M~G7Lr!1`:6T5{ 8#+0vZ{4)z-$|#dft..7 4Nbe5xph,c( } Ȃ MX@$A~~|$;`a k.^"DYb3+5lYւwU%S[0 Uc3gx.,KppYEzz/V0d?36'=,A7N>Z7ֈ\O98_<>-~^n2#bq(U_pIeiM'Uh.eS1JQ&vDk!EWa%(;v({FoUO([HˈwUhWN,[M"H wV(%BM" BLH< wPp&~BJ9!Sb|`%  pz"|zv`y9o SQVYg%7P,!`:w F1`͢ i20=Hi)7y2Bx #>%`|: S97`vh`.2>К Y,y~ X6P`H <<0qAi( +1ŨNIHtk@5@PGezzY!|b\2  J/*D|PC}0&Ң,u>@`* u(C3P(2 ïh`)+ue#&ZmP =Kk70*?& "?W]P;9ຫ 0;P \ۥ{WStAA @1)Q/ߤ]{+ؚ|RK!p$  C縒F" Pw9:xXL{ cx3s pӍz:],kTa Ļ`UTr:#"q{;p:/'@yYF|ox&I#L72{u]tݚ*jP qW{@&+$M<PmPKoDLjgª|2):Q7)aK2" MCE, HzN"@ Y'ڌa*OݤS""D\ ILq$QHC-'KyK%ni]&~\j5D,뫪] aTVl bt[:=`L '3 xt )JlN% sV 9Z,akL7Pflb ydG"@l| `P䖺P=PSF%<%|ovLJ43P4ǂX3T5XjSK`}jmҤ\1W 1ݑVYߣ3`\ JoH %!]ΚqaC2t{yi2,& )@ А@}'MH3 [W{EiTp_^#z~"JCD5KjaG%}o{7@\ti .qcľQL{k}~3 adGR( Q: ^P]Xڅ֔!5>ZPk}>KZ((Jvv2 L$<@:fвоrx{ynvz2";L<:H NADHMKx(p|yEJXm}WXyv`c >%F Jm -̷p@`k^ x "; 88}C" :XxRXC2!Jñ#/y(` (pa#(qK41 N+ 8j ^cR_"H!R*J :!``iV!Y|d\{&D[u1nϞ;Ыe"H)e o44,ȧ#Aϻ ) RD fZV B"qL='ǰ= LǴy;l ?(P% pY+Dħ^1ٔja炯Dx¤(.-D煉xp2Q?x0ڰZ,CTsX4vfꨩD9ȤyI@\6Sۀ[`†̗V9'rˍXM8an[~G׏ZEY<<e&}a[ [6 ]^=,P/suvQcSB+ 8*R[5QW%EffGM $Z`4s dc-%jlob8h0[z! c V" 0B10)l!A f:V P Oc6@xutEaM1x"ܔA 8J$r#4y_ Aޔ'h:h&>"q& (2" @dYI<`;ҌPw\ P6s  40Jh #e8ڕ&lk@rDLx~2 $&4bDPpg9D%@Os2$t@IY{%T'WA ^~ }1w4F[2d }q8=T2.-, @7pMęPh39ףRD=hn! @ RKI"UfbP@QDJ #// 1Yz4ds*lmk? h,]$.p3$\͂  NH`T'JF賗jZOa DvG i1nw}6…$$@.a3%]tj 'szddUܻF. BG^ު~0E!E!X. R:" :G{ xe%k fDX7q 13`Ja6kO9Cq Є$/wCuc$*2/7:fZ{|a!`Gaߘ8rysXYLD1f0R,Ƀ=Эz@jk`؀PJ5rh/^ l d<k1S8D D tѳ&7xx h |`, Em2`e@erp zpJo>Þz :@XD %//L}; Ԁ{ᭂwouT<8Ԣ4n~H\: @re\л.qˎ\@ RʿEeCr8R@|Pˀj]ą[`x!V,V D:p>w]ggwWVj_rH.;Nf;s[ikA4†.@?.w'/=[Y:  MRn, A}b^)< lx>g_Mc~jIDqXoG/n@j@OPm p0p l \͝r;GQAGKpP x@Kgslwm @C Pgpo 0 gp Ր2l / pP@_v, ְِ N }` u 1 ?j 3<A1EqIfQ1UqY] .(7Xq1uqy}1qPJfik~1$~1qDRqɱ@Vٱ`qܱQSq1x` >2! ё Y%r")"-"12#?! ;PK b}6؄7q%%'sctest/view/resource/Schellen Under.gifGIF89a}c`^5S4*vk""#Uo..d\'=1./H@P{yx^/?ø+4:861I_?C0š4::ńGHUGISGπ:.ng 7 o`?e.gτ/4FEb]48"Dt8lɀ2ZAѢE\Gџ7$R`x?@.7$pH?8u\0G4fh:կ=p/^qN  8 pAN؄") `nhbqzPa-KNF`p bݓ>. @*@;&X#E9`;M"Nj;|#g 0pUӺ.enh K͕x6t$@uȨWC|ISFĆxBXEz5b)l  $D %w]i7M} ,["N DQz2p MÄ)q) <@0$cMV0<l, 2H*&C!o0 040%eCAqiyIN->@ #o>oLfj m(Y 90DC !6ڕńv{topF_ PbV% n"GJZFyvu[;C\2*0H+?S ;c@ڛAU @00<p; /̰0q ξ1G$ 50/G^2<\V `UsDҩ98+HФ]!Ա6C(V;jJ,˳DKt=B#DdX9TWpPw"eAҢ ? ҎڇE-_@>PЁ@1x@( 0*frq@ & > Xn:$iԲQUHpк\^z~ʎ wknAF1U *>f@~ fn@a"Bϩh q=1aݍYv ;x'Z/ntdd vGO%6ktL<(O%UcAvQwb nl*+ _2+NC0x ziJf3s`]%X`?9]q ߝVL6OkY>񫖊))ѪP`іV\T7Xz B)Q|GЂqWnE6eo @G&5ͩ?Otqu3l780(@@t.]ݴT0;zaH`\RMT3ј_,vn퓜^ x 6+baDcnq:fSQ`=0g3 TMQ~Ot9AZUaAFI~.؃67Ee:M;@,"bt;d[='@-n]8>XrEG#sdzI ,9`(hTU6W:fm*5p v $bS͚ͅ*9<}*ρ*o T ;i0ZҦ}u&R  Y;W Kx:dVWS֗)t6<;~|}fwS&aEp4#cV tQ*`< XZlF(D}d6cw-;,@63CG\y%ft /X,,dJ8Qks2 zF1C_hQ =Is!qWdIrMb9c2P7PEN s!GhCo%Ј=Ԇor@`EM=_N` sb%ʣg,@F0=`rEEU0SzU^$h6|/6'(s1`ipX8z&WU¨rXAW`.)v)dNg7K+Xu%TUA(X hʔo5)gaI{ԏ<(>)@'@Hpi# .'i*@hxch5vQh#4O#J)\I(Gp)0`7fA0Al p1 6m<ٔL B(@JRdKi6/L)HYUp]9duٟ|O)1Q.Ơi3=1p%p30%iH:Yv 8/$  0Z%+L @b iE={VDC0lA@iU(MTP^jOSzץ\d0ib*&4d++ 0 WE)Y ` BzMR{Tp<Y(OAt2l+iz:0E *+0(! ٞvx7R:f4zۦ qU4EP' T*r4+ 0.:Y/Ī?G0Ц7m;(i @ܦLYpY_eS `vZۭ*O讘i{y"*?!G%iLZa2;*N5KvrA䨔%!5qИa US<B\kBmTe#Qd+K:i{cZ.&Atk2.IszJ^U52 %rc`ěqkcTK( @ b+n=Dk> ЧIw:H[CW"L?5p6aۻiऽ[l~g9L P G(#ۺK:gcZUK0J"4E4Ԉґ 1J6ZFRH83z T䫧' \&v$mY E,!OW U+\W#QL0|8ҡ#$@PPC조?8#̽o:Q<2,CԴyS TRwTf,ORK|o j EMBf<4Hdț[(p`{~dp| `z|*ʳuUʩ<4`dM5b㺘\tO$ 7 (АPdY#=I=|pgʠk,nP1eT]&zP K|k\FL4Х%t5da$D"3cԌƼ&:L,T M-r-dK04c xv˰HL[ՀMwQ;pٜ0\݄{,e}j6K pfVzzAm%>Iuӈ&$7!h=m zZU|E*KPi\=pH -ͦn y*XH=~դ~~œԻڶmo6 $}pzsGP<ڇ,n\>q R$||T6YfOe9=zv4z&; AjLeC`GX#S03;u?ѽyAP2Vm[O)ڈ<Ut=IHyəb  oL[0^3$4T@J\1!xŠE&R/0AEx W{7fٳgx  80TXT $P $$$>h,dr KJ$*.. D $Ȳb:djmpsws}9 -y!ӀP FpE/IE#, *@`x̫3@{0RAA%b|f㴄n8j()2gBǏ4D 孥|d$. @̚ $$Jn`(Lv`1⊃~%Pϻ?RnSb 05tlYTEε-/2"^k!n| =*B#c Y]IQ!rHrI41*600i H yzN "0 ƪàNRc 00h 0`XxAXFZKƊɺxQi/& FPt`$Јr % R@!0'JQ B*@/XC™'KȊX(I$,@?r ʫ Ba 5q5IB'EQFx!Ly3+hGqT  n!xH U%Oe#ѠfT UP| 4!!ck( Lʁ55,PkUx-Z<ӥ[ZoIq%tEJ@.J `JԷSNK&pt}2:E `VTW^S^ :!P@;vlকɷ$H~cF"Ř:\, 2 R9W2zUh@+"A 1HB;xX1Ϯa:` @? Pp$g幆v>Qp3(< @w 3 $ *oCh,@5e螀td?@@ &A٫wHp> Ё(AeC0A.kxA,1|a` @>95FL[ PՆ:qc6n2`:zPA @`H,`PO Pi H?@~ě*P;\`8b {D%3Om </0}o;_LRRtu @k;0o/@&yWOK&03)` $lpv/Z .xV,,&0*ixG|o(#&M&+Њǰ+d&wgGGEv,+'4p j,gGx4l=[ eHR !j@*@ D  Ðov 0|xHE~# "1_hJf@  hple g'k@Ы `Jb+!^[0Uq/~>KHmp'-t`='`MQ q Fv`dQLQ(qp7`͑ '~){n DZ@;h! jihd"2R#7#Jxtga0R;d`lzDF^@hrok bG^oO4"&&r#z+Ig@6L@mt*і:,S1++W+,7ҡjv _`+| dd者^H3QSQ+Us+g0W1#9@. T k(`FSgTbGڮ3_`(hxȩ{VS5Ŧ55a#g@W P*U&:{p8'jhn\:::Se`Rxbl=x$zcb\3S@>pAS :}. :  &dtn7uKjm^@ܳl.c|rr`=bS?At~5G&K }F4xՊ{j fKh֩n4n0C/D}I0{$- /?S:w.#PNu F4I384NuNnLoNQMɎR??_&(59Crz`SKIaV5&GU:[C_P5e$PkIW."uX+W& ۾K;Y5ZuZUZ_Z5[u[u[[5ZOcxOu]ٵ]]5^u^]; HIP_6`v`Q~ැ'avaa`a%vb)vbe``b9c=v D >dMvbESdUbd]eoTvf')afav0vfihX6hvhx;PK `}6 K&sctest/view/resource/Eicheln Sechs.gifGIF89a},Z`ZP522 V:&H=op/%]B?GC%$psnLM"E򌚕椥N๹?%0(C!?,}p(Y.rl:ШtJZz,H nL.zn/.b8v.uD9{ B839;?%q6*GЁ9G؂94$"a xb Bx7ŋ3j|Ǐ Cʼn<`04&ФM8sy3#Jh 9x ֓Α Bf[rb ҔYhӪ=[uc B5Ɓ .,۵ 6qဦ0L2ᦇݰML3gˇ lڧVTG`,hQ5ȡyù :F?|Q8#lq@\|G Fx"{U~"8ax $2`C@~H b/P@/8quzȣ@}=bkKB PDLLIaNJRR"u |]G/W!TFM&/dC}\x F/feQ䍨ր>$hy$B  %0'0CGZOz/0Љ2 &%IYZc@pÖiޙ.Y@& @A Aq6B%>J@)6(xA­z#6v*kVIn C(F2P6l?%)~p">5PZ@( l.A}M;H+f4])6 " |*򲌵R.pN[@aZj͸ovg2cgvB,8 @L^q[Ow CT"@j3HqY* 5PZ (W(h:эł#@CGBbH P0!\(CG>rcHJZ18:Hxk8e+/tG ЕCˡ 8afKiP>+aeΥspUω|@ VhH2ۨH2gFTCybz0qF::OsbdW@)#J\4Z\gݨ:88P'ROHt^>StPW>IU*y'TuЩkTQp@TպR+YDt< ,`>A Hlb+@֫8 _ɶDYͬf7@"!" (v,XTA3J(lgK[PK{Xeƅ}F 8θzKTM,t0v]n"r-ZC Mz m@RrA Iͩ^C!i>]ً46[?4<7X/' cw4|_uUPl8 >0X7.`YBqh1z} 4@rdwmu3`xR5׺| xY^汋c.M]>.`܀CL9`D\jچ{n1x*@=x&N2":;z@@cjC9#@GxH|?>@0QvwHeΚx3]wz Ե,vTX3R/E4 $;tCa3kP?`GV]/(! 4y7n7e܇ֽ#m"n Fe=;^ ÑM}5F"o[Ϩx8iZ.ͮWM"<>2[! Ee\݃²t5G.5,?un8Vۮb9u.X&w9ЃF iӠpUv#`-8]"OݻWan|C/11#};܎e<-Aƞm~iޜ c/a̞{AFc;w~v1 JO<7C o\|}qJ2͞ ~SGWGxDEzf`;>q"02ZpFq5=_Q,gp+qt3T3Vwww~'T|DWE.PU|W\}(=FdRHS|K|%)`ꇄSl8a>NX\X_/ p5}VX}P8؆8a2VhTTivU\Se]r~=$@=p?EFaх?<S`EGiKS+XEr- dR^5_rP،#V+V@2`|(%<Zx rX0x>ۤ wqX@pFDa :Z%G ZQvŐ 萹*sgBdXM I(0H&) * 5uɇ0R\Gȓ[C&;9`p'Db%` LEUЕ` M(#ՑX@]xy`FD9KHT7d0YiU1l[R]%M6ChdY~;eY?З7FGB*8:g=`S;(zq$_a@|(~YE|7 zkWkNohdcX _;dCM)zcIT9.|> d}'wI/}Fs+If'5JwG8h}f&3~@vimpjgbօ9P}ƠW(+GjwuQ#DVg,l eX'qV6h&qd)no(T$I3CunN5IoU<0o(p[w0A Fz ~Ok!ۀgv0"~z4,b't!øvI;+rk(f %ay|hwlzk@Rs]YuV%OujXr:d Zbt}]?'Aqr#myaaohzmW4pݻWTQdU~KqiL-u%5SnI&þWstȞUM1p`PiRҮHISdIB"NlU=7!>E^KDEB"%p73e^er![CCO.GQbPU@ī"32w$TTK Hx(Q)9[ 1WϤM4*_E>FP%_H5Bb1ONd=dQ3\8 KQ{I%GIO@KoT)6G|8A05s$[Ͻ_Q#$x4p^ 3޳^Sqk6% 05:71.;6@}v(jqd6zf7K+-O/XB"/Dyp?0nC  Е4b9@HrtH?J1 $HPEgH4FT~ 9%5ɘbs4ɝ^ 햛+%I% v \({u].Q'@׮?E0 -x).1!,^@j< a,bpUWIKJ\8_VW5\#0#5x:"$)f I@C֮gN\7˶Se7q!ba#!Ch-owX"/9DYU9 Pe9 B3\EKG Z<(SL3 7T#q.Z#==QBuݽ"@ ʪ Fnφ? +Č:tz(e"T;h}b XAڵ5÷"x(Lbt!)V{h/}j66E0_Z9.[0n!@bN 8tLh>n`J=e1l4CF/)..[@6UxHZy "9pPP$4sA%Ăs2@P`@^XD3kPEVq! bk>lȡ8@JZѡ ReªK(r 0,.Upjk$9@f&Kఔ9Y`̳H"8 $+(lX Na>*(03l#!`[:Q`/Nd9Hz.}~AqpnlFU\y565LWCSAKB!?,}p(ėoQ gЧG+ !ZTԣO)e)ԨCQHa#C=7rD >IvϮg!BA \XТ2&X 5F0 #p(XpL}268qs)B8p"A˙-AqΞC(4CP+.K۶b{|q.P`C #F ݀u n-F.fz>: |HS}`Mb"@`1/n ()%zp@cNai '3șEzܜ|TC\z f֡sCf `*$": ׃5إdzϦt'J92='nȝ+U9 z: ++8@aۊl&[gmB*p'.ի嫯%@kt-(#<+qy=@ѕ/I(-*Lh=4O̧v m4ːxkj<И- 8^Ik3C5 X09 @+ƕ2ٗ.'м[)'IL~R$lA@v^|9pQ;pg.},M3xfH&B8w,P {Nl&:R 5⚜#z X<2;qJ0EU>x"8C4L3cѨ5Z`ca@E8KdS*T$@@NDO,d颈HER)t=p!ޱ }P. 6i*P8N8Kiz-}L"J]s ИԞ 8`sBSsЩ@ny`0Qy\sT$D(3@ :)B MD Gw~OI7iѸ AFG-Sx -Mz«, Iy)З,(4œYDISH8(G﹀ Q89̡3oVX.B]sNT<ز`"N$pΐ'`Z} ~tNQ霨+_OYn6pXAJÞ5 [;&Yv\Hf}vv *!;մ' jj+K4'HVHXhm3KHk֑-Oc1sTK\ݽ..W)<~+0腗.kS>i{1ݛj&}m@Vq= J걥FGՍ.I,}8x.,Wo6V#wl`1Zhw5;~ܥBX&rWܠ$3 | DZNsf;.Ltt5p4 :s˶>+8-k~ޒFWzґN?=wV40)8eq?]#L8NgU+W@ng]R:K2j_46+ lJFp' a=J>2f%. *ܔ#A:2|.Mpm 'N[ϸ7g%PLm V-gNs#8Ϲw^s@_9l<$'#;NԧN[PzIP}(bzk7׾v;׽$vn:w} ̺Kz6|_ / digՎ_1<@y߼걎SWzx/\>=y&J^z(f` ^8}{kHy0Т/E/q=$e䣟tw=}wD0A!`;sv M{WyuSws$!@!eggw7H지GCjuw؇*6@:40% $`|xsv$$ {G8u$r,h  tgF_"cyPw Wpc#ZHFx#G\c}O6oW UQ~pH;>7×Vgp´8І)P%mz7W9w{"=؈ oXh(`xi|kԛwd,¼EJLS۱ey{˷;I{exwy%0q ˈ+yp*+ 8'2w|tw~8urr䫁Vs'FԀX&|'rU+5ƈr*9+0\Xc&,& ; Y(`5(s9'LB39R84 YI>:\T a&[_r(.g,5n+ws`4*w7y'2ǻAr P&;gdv; !s,s+ȏub7buɚ,n`q}\ʦ|ʨʪʬʮʟ mw˸̐ '$6 p"_CiBQ1ЂkF8 ͅąznFWVn}Vdu8G:;A(Ώem Z 8h=4b5I\ s-jbmnA= +zh* b- ,d|==Mdx"P,KH!`" NFa @^t%Q@͎6=Io6e_<=6@YO&OQ~b=]GY0]P[,RbVƺEkcH`NUK3]_um{ ֆV|RQ'2$ȎaW'-Il[=meaXWQPͭNH%R`NٷM9Hb5a*7|deX:iHa8W9Ri2ݥ5q!V+YHa@ ]fMnTPP'u?-Rf5V; XWVL$Hf7V>'pܝClDoI^ ,ϤT{莔7$K+1Q(*V2Cjd4K]>-ҮC @tAl/'12럞F^{]#mj+D~C6c3Bqi E3   #IPÈ2R^K hP'_6)@2]IZTE ,4:hXƸR•&. '!0cI p>NmQ.juYEaxDVGQ#x7< NNF(Ģ*PFzz,&Z* "N8i/#)-m(j"^bH}LMQUWgZ gk,svm{}?MFBDdPN6㛝'[* p:ضE^} 5 pFeNyS^6( W ^90f` aÁ5n#J@DWVRrƒi js=-,lM"R mHhffEƮ^a 4 5{QHlU`6lX݊!28p`Ӧ Tv\Mctʔ*l%N1"nׯb mțF_.zy 峭p(~=Ko[1 ƳLPD+8p8! 9PA QEQLQY$E;z$0! x R!,# 9 &@)+R-@8!(,3LLO7SN3S= A %M4C/ mQMTQzK0I9G !TOQI-SQMUUYUU8T ;PK 6х  sctest/Start.class1 sctest/Startjava/lang/ObjectserverRunning_Z()VCode  LineNumberTableLocalVariableTablethisLsctest/Start;main([Ljava/lang/String;)V   startServerSpieler  addHumanPlayer(Ljava/lang/String;)V   addAIPlayerargs[Ljava/lang/String; !  #%$java/lang/System &'outLjava/io/PrintStream;)'Trying to start already running server! +-,java/io/PrintStream .println 021 java/rmi/registry/LocateRegistry 34 getRegistry()Ljava/rmi/registry/Registry;6 No registry! 08 9:createRegistry(I)Ljava/rmi/registry/Registry; <>=java/rmi/RemoteException ?printStackTraceA GameObject CEDjava/rmi/Naming FunbindHsctest/server/GameServer G CK LMrebind&(Ljava/lang/String;Ljava/rmi/Remote;)VOServer waiting..... QSRjava/net/MalformedURLException TU getMessage()Ljava/lang/String; <SXjava/lang/ExceptionexLjava/rmi/RemoteException;e1 Ljava/net/MalformedURLException; getServer%()Lsctest/server/GameServerInterface;`//localhost/GameObject Cb cdlookup%(Ljava/lang/String;)Ljava/rmi/Remote;f!sctest/server/GameServerInterfacehServer not found! #j klexit(I)V W>server#Lsctest/server/GameServerInterface;Ljava/lang/Exception;rsctest/client/HumanPlayertjava/lang/StringBuildervHuman sx  sz {|append-(Ljava/lang/String;)Ljava/lang/StringBuilder; s~ UtoString qx e registerPlayer(Lsctest/client/Player;)ZnameLjava/lang/String;pLsctest/client/Player;sctest/client/AIPlayerAI e registeredPlayers()I s {(I)Ljava/lang/StringBuilder; x SourceFile Start.java!  /*     P     $l "(*/W K"5*K7WK*;@BK@GYIJ"N*K"*P*K"*V* <&)<.36W7KNQ7K\< N&'(+-.4)6*7.=6>7DCENFOG\H]IgKkL *YZ*[ZO Y\] YZ ]^ ~"_aeK*"g*i*L+mW & RQ S TUWYZ \  noYp  B_aeL+"g*iqYsYuw*y}M+,WM,m9<W * cb d efh1i<k=lAo *B 3no1 =Yp  G_aeK*"g*iYsYw*}L*+WL+m>AW * ut v wxz6{A}B~F  8no6 BYpPK 6{!; sctest/Start.javapackage sctest; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import sctest.client.AIPlayer; import sctest.client.HumanPlayer; import sctest.client.Player; import sctest.server.GameServer; import sctest.server.GameServerInterface; public class Start { /** * @param args */ public static void main(String[] args) { startServer(); addHumanPlayer("Spieler"); addAIPlayer(); addAIPlayer(); addAIPlayer(); //addHumanPlayer("Matthias"); //addAIPlayer(); //addHumanPlayer("Thomy"); } private static boolean serverRunning_; public static void startServer() { if (serverRunning_) { System.out.println("Trying to start already running server!"); return; } try { LocateRegistry.getRegistry(); } catch (RemoteException ex) { System.out.println("No registry!"); } try { LocateRegistry.createRegistry(Registry.REGISTRY_PORT); //System.out.println("Registry created"); } catch (RemoteException e1) { e1.printStackTrace(); } try { Naming.unbind("GameObject"); } catch (Exception e) { // do nothing } try { Naming.rebind("GameObject", new GameServer()); System.out.println("Server waiting....."); } catch (MalformedURLException ex) { System.out.println(ex.getMessage()); } catch (RemoteException ex) { System.out.println(ex.getMessage()); } serverRunning_ = true; } public static GameServerInterface getServer() { GameServerInterface server; try { server = (GameServerInterface) Naming .lookup("//localhost/GameObject"); if (server == null) { System.out.println("Server not found! "); System.exit(0); } return server; } catch (Exception ex) { ex.printStackTrace(); } return null; } public static void addHumanPlayer(String name) { GameServerInterface server; try { server = (GameServerInterface) Naming .lookup("//localhost/GameObject"); if (server == null) { System.out.println("Server not found! "); System.exit(0); } Player p = new HumanPlayer("Human " + name); server.registerPlayer(p); } catch (Exception ex) { ex.printStackTrace(); } } public static void addAIPlayer() { GameServerInterface server; try { server = (GameServerInterface) Naming .lookup("//localhost/GameObject"); if (server == null) { System.out.println("Server not found! "); System.exit(0); } Player p = new AIPlayer("AI " + server.registeredPlayers()); server.registerPlayer(p); } catch (Exception ex) { ex.printStackTrace(); } } } PK 6:(sctest/StartApplet.class1sctest/StartAppletjavax/swing/JAppletjava/awt/event/ActionListenerNEWGAMELjava/lang/String; ConstantValue Start New GameADDAI Add AI PlayerADDHUMANAdd Human PlayerserialVersionUIDJmf()V Exceptionsjava/awt/HeadlessExceptionCode  java/awt/Dimension ! "(II)V $ %&setPreferredSize(Ljava/awt/Dimension;)V(java/awt/GridLayout '! + ,- setLayout(Ljava/awt/LayoutManager;)V/javax/swing/JButton .1 2(Ljava/lang/String;)V .4 56addActionListener"(Ljava/awt/event/ActionListener;)V 8 9:getContentPane()Ljava/awt/Container; <>=java/awt/Container ?@add*(Ljava/awt/Component;)Ljava/awt/Component;LineNumberTableLocalVariableTablethisLsctest/StartApplet; newGameButtonLjavax/swing/JButton;addAIPlayerButtonaddHumanPlayerButtonactionPerformed(Ljava/awt/event/ActionEvent;)V LNMjava/awt/event/ActionEvent OPgetActionCommand()Ljava/lang/String; RTSjava/lang/String UVequals(Ljava/lang/Object;)Z XZY sctest/Start [ startServer X] ^ addAIPlayer`java/lang/StringBuilderbHuman _1 Xe fg getServer%()Lsctest/server/GameServerInterface; ikj!sctest/server/GameServerInterface lmregisteredPlayers()I _o pqappend(I)Ljava/lang/StringBuilder; _s tPtoString Xv w2addHumanPlayer y{zjava/rmi/RemoteException |printStackTracearg0Ljava/awt/event/ActionEvent;comeLjava/rmi/RemoteException; SourceFileStartApplet.java!       k**Y,, #*'Y)*.Y 0L+*3*7+;W.Y 0M,*3*7,;W.Y0N-*3*7-;WA6 ",1: D!I"R#\$a%j(B*kCD,?EFD'GF\HFIJI+KM, QW, Q\,Q%_YacdhnruN-x&@CyA* +./235&7C8D:H>B*ICDI}~DDPK y6C,sctest/StartApplet.javapackage sctest; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.rmi.RemoteException; import javax.swing.JApplet; import javax.swing.JButton; public class StartApplet extends JApplet implements ActionListener { public static final String NEWGAME = "Start New Game"; public static final String ADDAI = "Add AI Player"; public static final String ADDHUMAN = "Add Human Player"; /** * */ private static final long serialVersionUID = 7894828462244434622L; public StartApplet() throws HeadlessException { super(); this.setPreferredSize(new Dimension(300,300)); this.setLayout(new GridLayout(4,1)); JButton newGameButton = new JButton("Start New Game"); newGameButton.addActionListener(this); this.getContentPane().add(newGameButton); JButton addAIPlayerButton = new JButton("Add AI Player"); addAIPlayerButton.addActionListener(this); this.getContentPane().add(addAIPlayerButton); JButton addHumanPlayerButton = new JButton("Add Human Player"); addHumanPlayerButton.addActionListener(this); this.getContentPane().add(addHumanPlayerButton); } public void actionPerformed(ActionEvent arg0) { String com = arg0.getActionCommand(); if (com.equals(NEWGAME)){ Start.startServer(); } if (com.equals(ADDAI)){ Start.addAIPlayer(); } if (com.equals(ADDHUMAN)){ try { Start.addHumanPlayer("Human " + Start.getServer().registeredPlayers()); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } PK a}68à(sctest/view/resource/Schellen Banner.gifGIF89a}kmm*)X32=4'$%:8+xHv#Yr=_W*ncB9!BSTKKmƍ7ݿB虙QE뷷@弼ϠKj4!?,}p( Ȥrl:ШtJ0Xb`Rt(xL.zn f>~~1<uD3z:?))3B1$5H29ńHGTֶπ39,8`n6<"4Ap2*\ОÇ#JH!C ">1`fdœ(S`?Uɛ+s\i3Xl}beO;*W' 0?!J(Riݺ'FQ**V 8r!` 4hh! ׻- ֏>T^EB@-H>AɇocJT`ߠR.k!$0f0Ա=SXʜF'ɴ=5Mn׀,7moǓǑUz0l-r)ǻAAWf뵇3p!v-Pؠd00o5gup ΗDx0PH(Buj  4ZD9 40:Ћ1xZ hN _سyAF 0pAI$p Ux P tA6R( I@B <Bĩy @x *B\Z 蚐B 2@lB:va`ߴ C d¶ '4P@`. 9 M, Ƶh:<y1# Op2)-m+WM5j`7*hI$vjQ, l9OS\SX>I5g@I C#DZdīpPMB&EidmHcbtzJ3{l%KlGE7QJ4P Tc:0J$*g3q:øjHꓥp1ތ J`r Rve(1( ykCՂTU@t{cN@Ans <9Mu>3Z`©0d5Zr]ȵI3PGjbeP4Q x[?Z[[؞.u)=T,PN ӡ>6)M5Rmѻ~ScI9R4(3#77ib0TxU(xCZNt"@ Pn+=n+;*;YUhm=A7;жr K/dJx[i?P9Lm/aP^?2>yV']]~Q5~}S!jgޗ[G~ek0ݵ  GuhEf$&7`x.ڔ2Zd7IpBt8zCEzɠƹ IM)*tp!ǥY( 2 @Y3u]@(sšp"J $CWZp&Z7Vwpaȝ@[jyYTDGn%yGz@7P @*IPZ@3@/\IbbɆ:yzEH ć2Jpc)ʑk&XEF ]9Z麠z@מrDǑ` *)6yPԷrA#tO 5@IKptznj )*KJo;D2'ې?y &P-"+EpN:QOڮjYٌе7F  & xi&Grl3Fi<{Иɷ43EM%?8yK풫Fj[wov~QizKXLCi).knr 3IF&KP+2{1<5p:S4Ы&kmyɣu鰣Cvz9.DyۛFi oiK w W)-w{r 稾[uy ˩{KM$T`¿qr(6T9w0[ 0hA,mҒ5Td4J ˜8b8.gzv>QJMUƉ§hXE ~%eB5p si|K4Lr}jU֓-=@QB3Xw=lW-<@dgFىX;߲ ޷nk9lЀ,$pu-;~2(U) 'èpbYW*u gd^xlX[^DOv^cKS>_N`Be‡4ގX/Z:^F,!01 as&xUe2p] i[MŽ.Y9e@VfK*h Kj'Kqs#rdvlij*ٝ.)VkVD7\PVL$ "[7 c ]]mvפ5eD*Hb"L";UrBQAJ!4ϴ@ 8QU?オ1\#q[rADR40#= W*`Aopf>V(?ִ/"k_#g1X$ ^Acfa2\MĐ."aWP2vbT^a_M-\- |9T"S^73BOtu3? o$`jy# :NS0ބ@`<Hh E|eHT6p- pjo"e f82hfhk"94,| BzڼhhbpI00$0 X@j!%*/U8;&TVJMQSM8:l)^cekpjx$$2jl2MRv)E!pȁ{}KEbN.bQǍ];0ċ'a52৬? ")XjԀbSdxj yQ`bd,PTHNJ4>1pY׭Ts@ET92' p=23&Ц5!LJV0%7i)fǫ>(*)V/&W'28 w4"j !(ku{ŋ+.P~"sf*^&s]rh1Di8tX"<"[V=jh=V-t>Lt-6 `cM0o84ޢ9q:Y0i0>q- 6GЁ*GGUطҁ2 : aca s֣ÇJHbċth0ea"90xѢɓ(I*# ^:FLIfMe fsPpδId?]QTЊAJըcI\v^x#pZU),+O~*Q^iH`V5oׯ}\Сb 0cǨSWdd><hA*mƂ@A|2=̮zS], !L]۹cA9t^z*Np)%ÃiQg+)(eن|9DC("Q`0A ЀxɖrHpW":(|*^’ /u`@7xO;BՃ>%`0aH*#69PJ#n$RGLPC :P)u5~>0Uzc}qp&S'  j衇nPAW .Lژ20gj* S[A5KB[IYu l~p@!RLr rL-oC&-Hl[@AsBWQpI㰴V,2\18rl<u\w}׹Af@JDžʰ]#J(g}o,t _ϰBK݃X)8SLi~qg&14k{+ԢSpT_/{ 7lDy~8؛s-hlBْ#@Kq&t5w{ :DMk7n~,>x0@AGr*X5%KA^L,(x[ A #L~ɡ G(lh^;t z  ƽh` Mn(w m<`\fG 6cl8XAhHlp^LSc x\@a {6/FҐ,` HK38$i3la"RweܲSєY9}e-w, Х$t$Etb1IeR=_3^%t-q̙`Vl@02*3AW{wy2V$ ݎs,e惧_3/Z>T$7u\@WWR5x<+sU})H0g\HI ŗDG}#_'<@Z0ޭ'm &9Ǭu߻,j&@ }Cc[mW  c{'96VDATyx{w\K.(y }zcwP(t7 V%^'x#.ȃ IQStj$r ؃266 }HKH0=d!7TE`KvD9\xe^XF7.X=؃] kfVKVw|V8God( p4;wD>g0P}H8_wxcN];P`(H犅,'Kx2P2Df1X[X7ua8qʘڸ!f@pPWX(0B(8u m،7VNB{Wwf?({`i~@t"9 ِ?W>qXW82)P39(/{Ղ.iD!;).5~~sHI' sCAEq0;ɀQ1I_ ,1)Y, HZ ē-{aI7\K[FKzꮌ[JO0P#:6Ŀ}uڊFnqQ` ~ȂqU+yeK-ǿ_xKP'&aȘz-9TothƢ{a A^,~(XmhoP{?I ǭ,~#|6_xZ>)U[\l,sjF {̨|˿W/n̮w"I:͏\yGkω͕UcVwW<0Gϕ;L[V%G Y 3P#j%q=}\F+-W87y-lA siiVY'ԗۋnLN;9c,դY.x3&$6 ,Nm)<j `K(K]Fvע40iBs#eMP4 1W`ڠMaHi9/0d:wv^#>\Р! Lh@ޕu]%t% 5NnL+Msk.[ JsT]),䃞Lk~]ET-qm~@ ۯ<_u]t>AR$M뾎و\<삾 +pPaHp,@>'fɗL,3u苣/` cIDHE 1ɓ(pJ2NQ&hT>@>.UnI'b)F_3.ijJ.4\fN"*Ip @}>DNON ,xS0[aT4,QEX8q,IIbA#Ƴ5z(;QAGyD"D>a,C9*F4T9=ioGN*.5gD8G P.y,/ Dpx'mRi0)kBS~F*HEu"o1 0M70uc=?p]/|GȠ_N$YFc2c{\3 IUp:jtP6 a8Q67>'%cԃ^8~cXV222&0d@c8Zf06j*^ zR>dfN Z hF|MX-s449;?A7*:MV_j!fkgqtez3&Dm4\1:70)6[U9Eszҩ &6^,[B4OW8Bu0BA AD@ C-!I4 GG .Ў> @ƀvdB"@pܚFA³!'ڞ+TpK#`p$0f)CI@rcuBlG)XH 5cLT$b! >Jȡ>BS όLzo 48LRI,`HBpEG32@-[rAIX%,7ҡ*K&{kߐ2 4H4TETaZh=7! T͜l9Ef!QcfjPSe3<%euTRᨩ<$@XrN@PENo}O4yx`@ f@eԦݩU=67 uqv}x5O]p7hn Yr_~Xch W W.8QtX0ߙϨfIi~AE0 P裑Giςk駡z驓F_~T/l! [.N[̮xR[Y  .O\!()VCode  (Ljava/lang/String;I)V       #  &  )  ,  /  2  4 LineNumberTableLocalVariableTable thisvalues*()[Lsctest/rule/UntenRules$UntenHierarchy; <>=java/lang/System ?@ arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOf;(Ljava/lang/String;)Lsctest/rule/UntenRules$UntenHierarchy; D AE5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFileUntenRules.java InnerClassesJsctest/rule/UntenRulesUntenHierarchy Signature9Ljava/lang/Enum;@0 @@@@ @ @ @ @ @YYYY!"Y$%Y'(Y*+Y-.Y01 YSYSYSY"SY%SY(SY+SY.SY1S35 x61*+756 8 9:63YK*Y<YM;,56 AB* *C56FGH IK@LMPK 6qVZ@@sctest/rule/UntenRules.class1sctest/rule/UntenRulesjava/lang/Objectsctest/rule/RoundRulesserialVersionUIDJ ConstantValue}偩J*s3$SWITCH_TABLE$sctest$rule$UntenRules$UntenHierarchy[I()VCode  LineNumberTableLocalVariableTablethisLsctest/rule/UntenRules; getHigherCard>(Lsctest/object/Card;Lsctest/object/Card;)Lsctest/object/Card;sctest/object/Board   getPower,(Lsctest/object/Card;Lsctest/object/Board;)Ic1Lsctest/object/Card;c2dummyLsctest/object/Board; & ' getValueRank ) * getColorRankcbpowerIgetScore(Lsctest/object/Card;)I 2 3()[I 576%sctest/rule/UntenRules$UntenHierarchy 89values*()[Lsctest/rule/UntenRules$UntenHierarchy; ;=<sctest/object/Card >?getValue()I 5A B?ordinalisValid@(Lsctest/object/Card;Lsctest/object/Hand;Lsctest/object/Board;)Z F G? cardsPlayed I JKget(I)Lsctest/object/Card; ;M N?getColor PRQsctest/util/CardTool ST getAllOfColor3(Lsctest/object/CardList;I)Lsctest/object/CardList; VXWsctest/object/CardList Y?size cardToCheckhandLsctest/object/Hand;board firstCard firstColoro'Lsctest/rule/UntenRules$UntenHierarchy; compareHigher,(Lsctest/object/Card;Lsctest/object/Board;)Z e fgiterator()Ljava/util/Iterator; ikjjava/util/Iterator lmnext()Ljava/lang/Object; io pqhasNext()Zposc1highestOnBoard boardIterLjava/util/Iterator;nextCposBoardLocalVariableTypeTable*Ljava/util/Iterator;getName()Ljava/lang/String;}Unten specialColorhashCode  z{ java/lang/String  toCharArray()[Csumcarray[Ci(Lsctest/object/CardList;)I V list()Ljava/util/List; ejava/util/List  /0Lsctest/object/CardList;  5 aC10 5 aC6 5 aC7 5 aC8 5 aC9 5 aCAs 5 aCJ 5 aCK 5 aCQjava/lang/NoSuchFieldError SourceFileUntenRules.java InnerClassesUntenHierarchy!   /* oYN*+-*,-+, !"$* !"!#$k>*+,%>d*+,(h`>,. 02*+!,$-./0W14+:2@.F 1469;>@BD  . 9@;C=E?HAJCMEOGQISKUNWW+!CD8+-E,-H:L6,OU+L. UVX YZ^'_)c2d4f6l>88Z!8[\8]$"^!_.'54:662N-@+: -@dst!u)s3x*55+!5,$`a*",E,HN-L6+L  4""+!",$ ^! _.bcG*+,>6,d:#h;:*,66n2  (/3=CERGG !G,$@r. =s.7tuv!( w.x 7tyz{-| ~?, ?| <*M> ,4`<, * .  .//=+:h;N*-`=n#-*//,-.+! 3YW4 K*@OW*@OW*@OW*@OW*@OW*@ OW*@OW*@OW*@OW*Y &)*367@CDMPQ[^_ilmwz{ 5@PK 6:#sctest/rule/UntenRules.java/** * */ package sctest.rule; import java.util.Iterator; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.object.Hand; import sctest.util.CardTool; /** * @author Besitzer * */ public class UntenRules implements RoundRules { /** * */ private static final long serialVersionUID = 9071799591540238963L; private enum UntenHierarchy { C6, C7, C8, C9, C10, CJ, CQ, CK, CAs; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getHigherCard(jagafa.object.Card, jagafa.object.Card) */ public Card getHigherCard(Card c1, Card c2) { Board dummy = new Board(); if (this.getPower(c1, dummy) > this.getPower(c2, dummy)) { return c1; } else { return c2; } } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getPower(jagafa.object.Card, jagafa.object.Board) */ public int getPower(Card c, Board b) { int power = 0; power = this.getValueRank(c, b); power += 100 * this.getColorRank(c, b); return power; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getScore(jagafa.object.Card) */ public int getScore(Card c) { switch (UntenHierarchy.values()[c.getValue()]) { case C6: return 11; case C7: return 0; case C8: return 8; case C9: return 0; case C10: return 10; case CJ: return 2; case CQ: return 3; case CK: return 4; case CAs: return 0; } return 0; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#isValid(jagafa.object.Card, jagafa.object.Hand, jagafa.object.Board) */ public boolean isValid(Card cardToCheck, Hand hand, Board board) { if (cardToCheck==null){ return false; } if (board.cardsPlayed() > 0) { Card firstCard = board.get(0); int firstColor = firstCard.getColor(); // Wenn keine Karten von der startFarbe auf der hand, dann egal // welche Karte gespielt wird if (CardTool.getAllOfColor(hand, firstColor).size() == 0) { return true; } else { // Wenn noch Karten von der startFarbe, dann muss Karte von der // gleichen Farbe sein if (cardToCheck.getColor() == (firstColor)) { return true; } else { return false; } } } return true; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getValueRank(jagafa.object.Card, jagafa.object.Board) */ public int getValueRank(Card c, Board b) { for (UntenHierarchy o : UntenHierarchy.values()) { if (o.ordinal() == c.getValue()) { return 8-o.ordinal(); } } return -1; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getColorRank(jagafa.object.Card, jagafa.object.Board) */ public int getColorRank(Card c, Board b) { if (b.cardsPlayed() > 0) { Card firstCard = b.get(0); int firstColor = firstCard.getColor(); if (firstColor == c.getColor()) { return 2; } else { return 1; } } return 2; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#compareHigher(jagafa.object.Card, jagafa.object.Board) */ public boolean compareHigher(Card c1, Board b) { int posc1 = getPower(c1, b); int highestOnBoard = 0; Iterator boardIter = b.iterator(); while (boardIter.hasNext()) { Card nextC = boardIter.next(); int posBoard = this.getPower(nextC, b); if (posBoard > highestOnBoard) { highestOnBoard = posBoard; } } if (posc1 >= highestOnBoard) { return true; } return false; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getName() */ public String getName() { return "Unten"; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#specialColor() */ public int specialColor() { return -1; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ public int hashCode() { int sum = 0; char carray[] = this.getName().toCharArray(); for (int i = 0;i()VCode  (Ljava/lang/String;I)V       #  &  )  ,  /  2  4 LineNumberTableLocalVariableTable thisvalues*()[Lsctest/rule/TrumpfRules$ObenHierarchy; <>=java/lang/System ?@ arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOf;(Ljava/lang/String;)Lsctest/rule/TrumpfRules$ObenHierarchy; D AE5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFileTrumpfRules.java InnerClassesJsctest/rule/TrumpfRules ObenHierarchy Signature9Ljava/lang/Enum;@0 @@@@ @ @ @ @ @YYYY!"Y$%Y'(Y*+Y-.Y01 YSYSYSY"SY%SY(SY+SY.SY1S35 x61*+756 8 9:63YK*Y<YM;,56 AB* *C56FGH IK@LMPK 6K -sctest/rule/TrumpfRules$TrumpfHierarchy.class1]'sctest/rule/TrumpfRules$TrumpfHierarchyjava/lang/EnumV6)Lsctest/rule/TrumpfRules$TrumpfHierarchy;V7V8V10VQVKVASV9VJ ENUM$VALUES*[Lsctest/rule/TrumpfRules$TrumpfHierarchy;()VCode  (Ljava/lang/String;I)V       #  &  )  ,  /  2  4 LineNumberTableLocalVariableTable thisgetName(I)Ljava/lang/String; < =>values,()[Lsctest/rule/TrumpfRules$TrumpfHierarchy; @ ABname()Ljava/lang/String; DFEjava/lang/String G: substringiI KMLjava/lang/System NO arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOf=(Ljava/lang/String;)Lsctest/rule/TrumpfRules$TrumpfHierarchy; S PT5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFileTrumpfRules.java InnerClassesYsctest/rule/TrumpfRulesTrumpfHierarchy Signature;Ljava/lang/Enum;@0 @@@@ @ @ @ @ @YYYY!"Y$%Y'(Y*+Y-.Y01 YSYSYSY"SY%SY(SY+SY.SY1S35 !x 61*+75 6 8 9:7 ;2?C5(6  HI =>63YK*Y<YMJ,56 PQ* *R56UVW XZ@[\PK 6CMppsctest/rule/TrumpfRules.class1sctest/rule/TrumpfRulesjava/lang/Objectsctest/rule/RoundRulesserialVersionUIDJ ConstantValueywwO# trumpfColor_I3$SWITCH_TABLE$sctest$rule$TrumpfRules$ObenHierarchy[I(I)VCode  ()V  LineNumberTableLocalVariableTablethisLsctest/rule/TrumpfRules; trumpfColor getHigherCard>(Lsctest/object/Card;Lsctest/object/Card;)Lsctest/object/Card; sctest/object/Board  # $%getPower,(Lsctest/object/Card;Lsctest/object/Board;)Ic1Lsctest/object/Card;c2dummyLsctest/object/Board; , -% getValueRank / 0% getColorRankcbpowergetScore(Lsctest/object/Card;)I 798sctest/object/Card :;getColor()I = >()[I @BA%sctest/rule/TrumpfRules$ObenHierarchy CDvalues*()[Lsctest/rule/TrumpfRules$ObenHierarchy; 7F G;getValue @I J;ordinalcolorisValid@(Lsctest/object/Card;Lsctest/object/Hand;Lsctest/object/Board;)Z ExceptionsPjava/rmi/RemoteException R S; cardsPlayed U VWget(I)Lsctest/object/Card; Y[Zsctest/util/CardTool \] getAllOfColor3(Lsctest/object/CardList;I)Lsctest/object/CardList; _a`sctest/object/CardList b;size dfesctest/naming/EValueNames ghVUnderLsctest/naming/EValueNames; dI 7k l(II)V _n opcontains(Lsctest/object/Card;)Z cardToCheckhandLsctest/object/Hand;board firstCard firstColorcaListLsctest/object/CardList; z|{'sctest/rule/TrumpfRules$TrumpfHierarchy }~getName(I)Ljava/lang/String; d| java/lang/String equals(Ljava/lang/Object;)Z z C,()[Lsctest/rule/TrumpfRules$TrumpfHierarchy; zIio'Lsctest/rule/TrumpfRules$ObenHierarchy; compareHigher,(Lsctest/object/Card;Lsctest/object/Board;)Z  iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object; hasNext()Zposc1highestOnBoard boardIterLjava/util/Iterator;nextCposBoardLocalVariableTypeTable*Ljava/util/Iterator;()Ljava/lang/String;java/lang/StringBuilder |sctest/naming/EColorNames valueOf&(Ljava/lang/Object;)Ljava/lang/String; (Ljava/lang/String;)V Trumpf append-(Ljava/lang/String;)Ljava/lang/StringBuilder; toString specialColorhashCode  }  toCharArray()[Csumcarray[C(Lsctest/object/CardList;)I _ list()Ljava/util/List; java/util/List  45   @ C10 @ C6 @ C7 @ C8 @ C9 @ CAS @ CJ @ CK @ CQjava/lang/NoSuchFieldError SourceFileTrumpfRules.java InnerClasses ObenHierarchyTrumpfHierarchy!     F **01 2   oY!N*+-"*,-"+,89:<*&'(')*$%k>*+,+>*+,.h`>DF HP*1'2*3 45t+6=<?+E2H.^ [YWJG:864* * FYZZH\J^L`NbVcYe[g^ifjimkomqosrv tt1'oK LMNO,z++6*-Qa-T:66*/,X:^7Y*cijm,X^+6R!(19BLU[]iktvxHzzq'zrszt*!Wu'(Pv 9$wx-%e+6*+> y+E 2 ?:662N-H+E-H2 !*3ITYc4ee1'e2* & I0%/+6*,Q,TN-66+6&  )+-4//1'/2*u' v G*+,">6,:#7:*,"662  (/3=CERGG&'Gt*@  = 7'(  7}DY* ;/* ;| <*M> ,4`<, *     4/=+ǹ:7N*-`= #-"*//2x- 1'>YW? K*ҶHOW*նH OW*ضHOW*۶HOW*޶HOW*HOW*HOW*HOW*HOW*Yа '*+589CFGQTU^abknox{|@@z@PK 6Fߌ??sctest/rule/TrumpfRules.java/** * */ package sctest.rule; import java.rmi.RemoteException; import java.util.Iterator; import sctest.naming.EColorNames; import sctest.naming.EValueNames; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.object.Hand; import sctest.util.CardTool; /** * @author Besitzer * */ public class TrumpfRules implements RoundRules { /** * */ private static final long serialVersionUID = 8755160916431972131L; private int trumpfColor_; private enum ObenHierarchy { CAS, CK, CQ, CJ, C10, C9, C8, C7, C6; } private enum TrumpfHierarchy { V6, V7, V8, V10, VQ, VK, VAS, V9, VJ; /** * @return */ public static String getName(int i) { return values()[i].name().substring(1); } } /** * @param trumpfColor */ public TrumpfRules(int trumpfColor) { this.trumpfColor_ = trumpfColor; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getHigherCard(jagafa.object.Card, jagafa.object.Card) */ public Card getHigherCard(Card c1, Card c2) { Board dummy = new Board(); if (this.getPower(c1, dummy) > this.getPower(c2, dummy)) { return c1; } else { return c2; } } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getPower(jagafa.object.Card, jagafa.object.Board) */ public int getPower(Card c, Board b) { int power = 0; power = this.getValueRank(c, b); power += 15 * this.getColorRank(c, b); /* * if (c.getColor()==trumpfColor_){ int value = c.getValue(); if (value == * ObenHierarchy.CJ.ordinal()){ power *= 500; } if (value == * ObenHierarchy.C9.ordinal()){ power *= 250; } * } */ return power; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getScore(jagafa.object.Card) */ public int getScore(Card c) { int color = c.getColor(); switch (ObenHierarchy.values()[c.getValue()]) { case C6: return 0; case C7: return 0; case C8: return 0; case C9: if (color == trumpfColor_) { return 14; } return 0; case C10: return 10; case CJ: if (color == trumpfColor_) { return 20; } return 2; case CQ: return 3; case CK: return 4; case CAS: return 11; } return 0; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#isValid(jagafa.object.Card, * jagafa.object.Hand, jagafa.object.Board) */ public boolean isValid(Card cardToCheck, Hand hand, Board board) throws RemoteException { if (cardToCheck == null) { return false; } if (cardToCheck.getColor() == trumpfColor_) { return true; } if (board.cardsPlayed() > 0) { Card firstCard = board.get(0); int firstColor = firstCard.getColor(); // Wenn keine Karten von der startFarbe auf der hand, dann egal // welche Karte gespielt wird if (firstColor == trumpfColor_) { CardList caList = CardTool.getAllOfColor(hand, firstColor); if (caList.size() == 1 && caList.contains(new Card(trumpfColor_, EValueNames.VUnder.ordinal()))) { return true; } } if (CardTool.getAllOfColor(hand, firstColor).size() == 0) { return true; } else { // Wenn noch Karten von der startFarbe, dann muss Karte von der // gleichen Farbe sein if (cardToCheck.getColor() == (firstColor)) { return true; } else { return false; } } } return true; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getValueRank(jagafa.object.Card, * jagafa.object.Board) */ public int getValueRank(Card c, Board b) { if (c.getColor() == trumpfColor_) { for (int i = 0; i < 9; i++) { if (TrumpfHierarchy.getName(i).equals( EValueNames.getName(c.getValue()))) { return TrumpfHierarchy.values()[i].ordinal(); } } } for (ObenHierarchy o : ObenHierarchy.values()) { if (o.ordinal() == c.getValue()) { return o.ordinal(); } } return -1; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getColorRank(jagafa.object.Card, * jagafa.object.Board) */ public int getColorRank(Card c, Board b) { if (c.getColor() == trumpfColor_) { return 5; } if (b.cardsPlayed() > 0) { Card firstCard = b.get(0); int firstColor = firstCard.getColor(); if (firstColor == c.getColor()) { return 2; } else { return 1; } } return 2; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#compareHigher(jagafa.object.Card, * jagafa.object.Board) */ public boolean compareHigher(Card c1, Board board) { int posc1 = getPower(c1, board); int highestOnBoard = 0; Iterator boardIter = board.iterator(); while (boardIter.hasNext()) { Card nextC = boardIter.next(); int posBoard = this.getPower(nextC, board); if (posBoard > highestOnBoard) { highestOnBoard = posBoard; } } if (posc1 >= highestOnBoard) { return true; } return false; } /* * (non-Javadoc) * * @see jass.rule.Rules#getName() */ public String getName() { return EColorNames.getName(this.trumpfColor_) + " Trumpf"; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#specialColor() */ public int specialColor() { // TODO Auto-generated method stub return this.trumpfColor_; } /* * (non-Javadoc) * * @see java.lang.Object#hashCode() */ public int hashCode() { int sum = 0; char carray[] = this.getName().toCharArray(); for (int i = 0; i < carray.length; i++) { sum += (int) carray[i]; } return sum; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getScore(jagafa.object.CardList) */ public int getScore(CardList b) { int sum = 0; for (Card c : b.list()) { sum += this.getScore(c); } return sum; } } PK 6*(sctest/rule/KijRules$ObenHierarchy.class1N"sctest/rule/KijRules$ObenHierarchyjava/lang/EnumCAS$Lsctest/rule/KijRules$ObenHierarchy;CKCQCJC10C9C8C7C6 ENUM$VALUES%[Lsctest/rule/KijRules$ObenHierarchy;()VCode  (Ljava/lang/String;I)V       #  &  )  ,  /  2  4 LineNumberTableLocalVariableTable thisvalues'()[Lsctest/rule/KijRules$ObenHierarchy; <>=java/lang/System ?@ arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOf8(Ljava/lang/String;)Lsctest/rule/KijRules$ObenHierarchy; D AE5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFile KijRules.java InnerClassesJsctest/rule/KijRules ObenHierarchy Signature6Ljava/lang/Enum;@0 @@@@ @ @ @ @ @YYYY!"Y$%Y'(Y*+Y-.Y01 YSYSYSY"SY%SY(SY+SY.SY1S35 x61*+756 8 9:63YK*Y<YM;,56 AB* *C56FGH IK@LMPK 62vv*sctest/rule/KijRules$TrumpfHierarchy.class1]$sctest/rule/KijRules$TrumpfHierarchyjava/lang/EnumV6&Lsctest/rule/KijRules$TrumpfHierarchy;V7V8V10VQVKVASV9VJ ENUM$VALUES'[Lsctest/rule/KijRules$TrumpfHierarchy;()VCode  (Ljava/lang/String;I)V       #  &  )  ,  /  2  4 LineNumberTableLocalVariableTable thisgetName(I)Ljava/lang/String; < =>values)()[Lsctest/rule/KijRules$TrumpfHierarchy; @ ABname()Ljava/lang/String; DFEjava/lang/String G: substringiI KMLjava/lang/System NO arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOf:(Ljava/lang/String;)Lsctest/rule/KijRules$TrumpfHierarchy; S PT5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFile KijRules.java InnerClassesYsctest/rule/KijRulesTrumpfHierarchy Signature8Ljava/lang/Enum;@0 @@@@ @ @ @ @ @YYYY!"Y$%Y'(Y*+Y-.Y01 YSYSYSY"SY%SY(SY+SY.SY1S35 !x 61*+75 6 8 9:7 ;2?C5(6  HI =>63YK*Y<YMJ,56 PQ* *R56UVW XZ@[\PK 6`کsctest/rule/KijRules.class1sctest/rule/KijRulesjava/lang/Objectsctest/rule/RoundRulesserialVersionUIDJ ConstantValueE+9kp trumpfColor_I0$SWITCH_TABLE$sctest$rule$KijRules$ObenHierarchy[I(I)VCode  ()V  LineNumberTableLocalVariableTablethisLsctest/rule/KijRules; trumpfColor getHigherCard>(Lsctest/object/Card;Lsctest/object/Card;)Lsctest/object/Card; sctest/object/Board  # $%getPower,(Lsctest/object/Card;Lsctest/object/Board;)Ic1Lsctest/object/Card;c2dummyLsctest/object/Board; , -% getValueRank / 0% getColorRankcbpowergetScore(Lsctest/object/Card;)I 798sctest/object/Card :;getColor()I = >()[I @BA"sctest/rule/KijRules$ObenHierarchy CDvalues'()[Lsctest/rule/KijRules$ObenHierarchy; 7F G;getValue @I J;ordinalcolorisValid@(Lsctest/object/Card;Lsctest/object/Hand;Lsctest/object/Board;)Z O P; cardsPlayed R STget(I)Lsctest/object/Card; VXWsctest/util/CardTool YZ getAllOfColor3(Lsctest/object/CardList;I)Lsctest/object/CardList; \^]sctest/object/CardList _;size acbsctest/naming/EValueNames deVUnderLsctest/naming/EValueNames; aI 7h i(II)V \k lmcontains(Lsctest/object/Card;)Z oqpjava/rmi/RemoteException rprintStackTrace cardToCheckhandLsctest/object/Hand;board firstCard firstColorcaListLsctest/object/CardList;eLjava/rmi/RemoteException; ~$sctest/rule/KijRules$TrumpfHierarchy getName(I)Ljava/lang/String; a java/lang/String equals(Ljava/lang/Object;)Z ~ C)()[Lsctest/rule/KijRules$TrumpfHierarchy; ~Iio$Lsctest/rule/KijRules$ObenHierarchy; compareHigher,(Lsctest/object/Card;Lsctest/object/Board;)Z  iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object; hasNext()Zposc1highestOnBoard boardIterLjava/util/Iterator;nextCposBoardLocalVariableTypeTable*Ljava/util/Iterator;()Ljava/lang/String;java/lang/StringBuilder sctest/naming/EColorNames valueOf&(Ljava/lang/Object;)Ljava/lang/String; (Ljava/lang/String;)V Kij append-(Ljava/lang/String;)Ljava/lang/StringBuilder; toString specialColorhashCode   toCharArray()[Csumcarray[C(Lsctest/object/CardList;)I \ list()Ljava/util/List; java/util/List  45   @ C10 @ C6 @ C7 @ C8 @ C9 @ CAS @ CJ @ CK @ CQjava/lang/NoSuchFieldError SourceFile KijRules.java InnerClasses ObenHierarchyTrumpfHierarchy!     F **01 2   oY!N*+-"*,-"+,;<=?*&'(')*$%k>*+,+>*+,.h`>JL NV*1'2*3 45t+6=<?+E2H.^ [YWJG:864* * F_``HbJdLfNhViYk[m^ofpiskumwoyr| tt1'oK LMB~+6*-Nk-Q:66*9,U:[(7Y*`fgj :n,U[+63UZoR "+3<FOUZ\amoxz|R~~s'~tu~v*aw'"Zx 3.yz\{|-%h+6*+> }+E 2 ?:662N-H+E -Hd2 !*3IT\f4hh1'h2* & I0%/+6*,N,QN-66+6&  )+-4//1'/2*w' x G*+,">6,:#7:*,"662  (/3=CERGG&'Gv*@  = 7'(  7DY* ;/*  ;| <*M> ,4`<, *     4/=+˹:7N*-`=#$%#$-'*//2z- 1'>YW? K*ֶHOW*ٶH OW*ܶHOW*߶HOW*HOW*HOW*HOW*HOW*HOW*Y԰ '*+589CFGQTU^abknox{|@@~@PK 6`kjjsctest/rule/KijRules.java/** * */ package sctest.rule; import sctest.naming.EColorNames; import sctest.naming.EValueNames; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.object.Hand; import sctest.util.CardTool; import java.rmi.RemoteException; import java.util.Iterator; /** * @author Besitzer * */ public class KijRules implements RoundRules { /** * */ private static final long serialVersionUID = 4984140762377907056L; private int trumpfColor_; private enum ObenHierarchy { CAS, CK, CQ, CJ, C10, C9, C8, C7, C6; } private enum TrumpfHierarchy { V6, V7, V8, V10, VQ, VK, VAS, V9, VJ; /** * @return */ public static String getName(int i) { return values()[i].name().substring(1); } } /** * @param trumpfColor */ public KijRules(int trumpfColor) { this.trumpfColor_ = trumpfColor; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getHigherCard(jagafa.object.Card, * jagafa.object.Card) */ public Card getHigherCard(Card c1, Card c2) { Board dummy = new Board(); if (this.getPower(c1, dummy) > this.getPower(c2, dummy)) { return c1; } else { return c2; } } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getPower(jagafa.object.Card, * jagafa.object.Board) */ public int getPower(Card c, Board b) { int power = 0; power = this.getValueRank(c, b); power += 15 * this.getColorRank(c, b); /* * if (c.getColor()==trumpfColor_){ int value = c.getValue(); if (value == * ObenHierarchy.CJ.ordinal()){ power *= 500; } if (value == * ObenHierarchy.C9.ordinal()){ power *= 250; } * } */ return power; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getScore(jagafa.object.Card) */ public int getScore(Card c) { int color = c.getColor(); switch (ObenHierarchy.values()[c.getValue()]) { case C6: return 0; case C7: return 0; case C8: return 0; case C9: if (color == trumpfColor_) { return 14; } return 0; case C10: return 10; case CJ: if (color == trumpfColor_) { return 20; } return 2; case CQ: return 3; case CK: return 4; case CAS: return 11; } return 0; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#isValid(jagafa.object.Card, * jagafa.object.Hand, jagafa.object.Board) */ public boolean isValid(Card cardToCheck, Hand hand, Board board) { if (cardToCheck.getColor() == trumpfColor_) { return true; } if (board.cardsPlayed() > 0) { Card firstCard = board.get(0); int firstColor = firstCard.getColor(); // Wenn keine Karten von der startFarbe auf der hand, dann egal // welche Karte gespielt wird if (firstColor == trumpfColor_) { CardList caList = CardTool.getAllOfColor(hand, firstColor); try { if (caList.size() == 1 && caList.contains(new Card(trumpfColor_, EValueNames.VUnder.ordinal()))) { return true; } } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (CardTool.getAllOfColor(hand, firstColor).size() == 0) { return true; } else { // Wenn noch Karten von der startFarbe, dann muss Karte von der // gleichen Farbe sein if (cardToCheck.getColor() == (firstColor)) { return true; } else { return false; } } } return true; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getValueRank(jagafa.object.Card, * jagafa.object.Board) */ public int getValueRank(Card c, Board b) { if (c.getColor() == trumpfColor_) { for (int i = 0; i < 9; i++) { if (TrumpfHierarchy.getName(i).equals( EValueNames.getName(c.getValue()))) { return TrumpfHierarchy.values()[i].ordinal(); } } } for (ObenHierarchy o : ObenHierarchy.values()) { if (o.ordinal() == c.getValue()) { return 8 - o.ordinal(); } } return -1; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getColorRank(jagafa.object.Card, * jagafa.object.Board) */ public int getColorRank(Card c, Board b) { if (c.getColor() == trumpfColor_) { return 5; } if (b.cardsPlayed() > 0) { Card firstCard = b.get(0); int firstColor = firstCard.getColor(); if (firstColor == c.getColor()) { return 2; } else { return 1; } } return 2; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#compareHigher(jagafa.object.Card, * jagafa.object.Board) */ public boolean compareHigher(Card c1, Board board) { int posc1 = getPower(c1, board); int highestOnBoard = 0; Iterator boardIter = board.iterator(); while (boardIter.hasNext()) { Card nextC = boardIter.next(); int posBoard = this.getPower(nextC, board); if (posBoard > highestOnBoard) { highestOnBoard = posBoard; } } if (posc1 >= highestOnBoard) { return true; } return false; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getName() */ public String getName() { return EColorNames.getName(this.trumpfColor_) + " Kij"; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#specialColor() */ public int specialColor() { return this.trumpfColor_; } /* * (non-Javadoc) * * @see java.lang.Object#hashCode() */ public int hashCode() { int sum = 0; char carray[] = this.getName().toCharArray(); for (int i = 0; i < carray.length; i++) { sum += (int) carray[i]; } return sum; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getScore(jagafa.object.CardList) */ public int getScore(CardList b) { int sum = 0; for (Card c : b.list()) { sum += this.getScore(c); } return sum; } } PK 6g)sctest/rule/ObenRules$ObenHierarchy.class1N#sctest/rule/ObenRules$ObenHierarchyjava/lang/EnumCAs%Lsctest/rule/ObenRules$ObenHierarchy;CKCQCJC10C9C8C7C6 ENUM$VALUES&[Lsctest/rule/ObenRules$ObenHierarchy;()VCode  (Ljava/lang/String;I)V       #  &  )  ,  /  2  4 LineNumberTableLocalVariableTable thisvalues(()[Lsctest/rule/ObenRules$ObenHierarchy; <>=java/lang/System ?@ arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOf9(Ljava/lang/String;)Lsctest/rule/ObenRules$ObenHierarchy; D AE5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFileObenRules.java InnerClassesJsctest/rule/ObenRules ObenHierarchy Signature7Ljava/lang/Enum;@0 @@@@ @ @ @ @ @YYYY!"Y$%Y'(Y*+Y-.Y01 YSYSYSY"SY%SY(SY+SY.SY1S35 x61*+756 8 9:63YK*Y<YM;,56 AB* *C56FGH IK@LMPK 6"?CCsctest/rule/ObenRules.class1sctest/rule/ObenRulesjava/lang/Objectsctest/rule/RoundRulesjava/io/SerializableserialVersionUIDJ ConstantValue+ 1$SWITCH_TABLE$sctest$rule$ObenRules$ObenHierarchy[I()VCode  LineNumberTableLocalVariableTablethisLsctest/rule/ObenRules; getHigherCard>(Lsctest/object/Card;Lsctest/object/Card;)Lsctest/object/Card;sctest/object/Board   !getPower,(Lsctest/object/Card;Lsctest/object/Board;)Ic1Lsctest/object/Card;c2dummyLsctest/object/Board; ( )! getValueRank + ,! getColorRankcbpowerIgetScore(Lsctest/object/Card;)I 4 5()[I 798#sctest/rule/ObenRules$ObenHierarchy :;values(()[Lsctest/rule/ObenRules$ObenHierarchy; =?>sctest/object/Card @AgetValue()I 7C DAordinalisValid@(Lsctest/object/Card;Lsctest/object/Hand;Lsctest/object/Board;)Z H IJget(I)Lsctest/object/Card; =L MAgetColor OQPsctest/util/CardTool RS getAllOfColor3(Lsctest/object/CardList;I)Lsctest/object/CardList; UWVsctest/object/CardList XAsize cardToCheckhandLsctest/object/Hand;board firstCard firstColoro%Lsctest/rule/ObenRules$ObenHierarchy; b cA cardsPlayed compareHigher,(Lsctest/object/Card;Lsctest/object/Board;)Z g hiiterator()Ljava/util/Iterator; kmljava/util/Iterator nonext()Ljava/lang/Object; kq rshasNext()Zposc1highestOnBoard boardIterLjava/util/Iterator;nextCposBoardLocalVariableTypeTable*Ljava/util/Iterator;getName()Ljava/lang/String;Oben specialColorhashCode  |} java/lang/String  toCharArray()[Csumcarray[Ci(Lsctest/object/CardList;)I U list()Ljava/util/List; gjava/util/List  12Lsctest/object/CardList;   7 `C10 7 `C6 7 `C7 7 `C8 7 `C9 7 `CAs 7 `CJ 7 `CK 7 `CQjava/lang/NoSuchFieldError SourceFileObenRules.java InnerClasses ObenHierarchy!     3* ! oYN*+-*,-+,'()+*"#$#%& !k>*+,'>d*+,*h`>35 79*-#.&/012W36+<2B.F CA?=:8531  . @@BBDDFGHIJLLNNPPRRUUWW-#EF3-G,-G:K6,NT+K& \]^b"c$g-h/j1p>33Y#3Z[3\&"]#^0)!26:662N-B+<-Bz{!|&z0*22-#2.&_`,!",a,GN-K6+K  4""-#".& ]# ^0deG*+,>6,f:#j=:*,66p2  (/3=CERGG"#G.&@t0 =u07vwx#( y0z 7v{|}-~ A, A| <*M> ,4`<, * 0  01/=+:j=N*-`=p#-*//.-0-#5YW6 K*BOW*B OW*BOW*BOW*BOW*BOW*BOW*BOW*BOW*Y '*+589CFGQTU^abknox{| 7@PK 6u..sctest/rule/ObenRules.java/** * */ package sctest.rule; import java.io.Serializable; import java.util.Iterator; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.object.Hand; import sctest.util.CardTool; /** * @author Besitzer * */ public class ObenRules implements RoundRules,Serializable { /** * */ private static final long serialVersionUID = -3022148869115151433L; private enum ObenHierarchy { CAs, CK, CQ, CJ, C10, C9, C8, C7, C6; } public ObenRules(){ } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getHigherCard(jagafa.object.Card, jagafa.object.Card) */ public Card getHigherCard(Card c1, Card c2) { Board dummy = new Board(); if (this.getPower(c1, dummy) > this.getPower(c2, dummy)) { return c1; } else { return c2; } } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getPower(jagafa.object.Card, jagafa.object.Board) */ public int getPower(Card c, Board b) { int power = 0; power = this.getValueRank(c, b); power += 100 * this.getColorRank(c, b); return power; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getScore(jagafa.object.Card) */ public int getScore(Card c) { switch (ObenHierarchy.values()[c.getValue()]) { case C6: return 0; case C7: return 0; case C8: return 8; case C9: return 0; case C10: return 10; case CJ: return 2; case CQ: return 3; case CK: return 4; case CAs: return 11; } return 0; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#isValid(jagafa.object.Card, jagafa.object.Hand, jagafa.object.Board) */ public boolean isValid(Card cardToCheck, Hand hand, Board board) { if (board.get(0) != null) { Card firstCard = board.get(0); int firstColor = firstCard.getColor(); // Wenn keine Karten von der startFarbe auf der hand, dann egal // welche Karte gespielt wird if (CardTool.getAllOfColor(hand, firstColor).size() == 0) { return true; } else { // Wenn noch Karten von der startFarbe, dann muss Karte von der // gleichen Farbe sein if (cardToCheck.getColor() == (firstColor)) { return true; } else { return false; } } } return true; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getValueRank(jagafa.object.Card, jagafa.object.Board) */ public int getValueRank(Card c, Board b) { for (ObenHierarchy o : ObenHierarchy.values()) { if (o.ordinal() == c.getValue()) { return o.ordinal(); } } return -1; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getColorRank(jagafa.object.Card, jagafa.object.Board) */ public int getColorRank(Card c, Board b) { if (b.cardsPlayed() > 0) { Card firstCard = b.get(0); int firstColor = firstCard.getColor(); if (firstColor == c.getColor()) { return 2; } else { return 1; } } return 2; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#compareHigher(jagafa.object.Card, jagafa.object.Board) */ public boolean compareHigher(Card c1, Board b) { int posc1 = getPower(c1, b); int highestOnBoard = 0; Iterator boardIter = b.iterator(); while (boardIter.hasNext()) { Card nextC = boardIter.next(); int posBoard = this.getPower(nextC, b); if (posBoard > highestOnBoard) { highestOnBoard = posBoard; } } if (posc1 >= highestOnBoard) { return true; } return false; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getName() */ public String getName() { return "Oben"; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#specialColor() */ public int specialColor() { return -1; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ public int hashCode() { int sum = 0; char carray[] = this.getName().toCharArray(); for (int i = 0;i()VCode  (Ljava/lang/String;I)V       #  &  )  ,  /  2  4 LineNumberTableLocalVariableTable thisgetName(I)Ljava/lang/String; < =>values,()[Lsctest/rule/CoiffeurRules$ObenHierarchy; @ ABname()Ljava/lang/String; DFEjava/lang/String G: substringiI KMLjava/lang/System NO arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOf=(Ljava/lang/String;)Lsctest/rule/CoiffeurRules$ObenHierarchy; S PT5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFileCoiffeurRules.java InnerClassesYsctest/rule/CoiffeurRules ObenHierarchy Signature;Ljava/lang/Enum;@0 @@@@ @ @ @ @ @YYYY!"Y$%Y'(Y*+Y-.Y01 YSYSYSY"SY%SY(SY+SY.SY1S35 x61*+756 8 9:7 ;2?C56  HI =>63YK*Y<YMJ,56 PQ* *R56UVW XZ@[\PK 6oЈsctest/rule/CoiffeurRules.class1sctest/rule/CoiffeurRulesjava/lang/Objectsctest/rule/RoundRulesserialVersionUIDJ ConstantValue;2O;5$SWITCH_TABLE$sctest$rule$CoiffeurRules$ObenHierarchy[I()VCode  LineNumberTableLocalVariableTablethisLsctest/rule/CoiffeurRules; getHigherCard>(Lsctest/object/Card;Lsctest/object/Card;)Lsctest/object/Card;sctest/object/Board   getPower,(Lsctest/object/Card;Lsctest/object/Board;)Ic1Lsctest/object/Card;c2dummyLsctest/object/Board; & ' getValueRank ) * getColorRankcbpowerIgetScore(Lsctest/object/Card;)I 2 3()[I 576'sctest/rule/CoiffeurRules$ObenHierarchy 89values,()[Lsctest/rule/CoiffeurRules$ObenHierarchy; ;=<sctest/object/Card >?getValue()I 5A B?ordinalisValid@(Lsctest/object/Card;Lsctest/object/Hand;Lsctest/object/Board;)Z F G? cardsPlayed I JKget(I)Lsctest/object/Card; ;M N?getColor PRQsctest/util/CardTool ST getAllOfColor3(Lsctest/object/CardList;I)Lsctest/object/CardList; VXWsctest/object/CardList Y?size cardToCheckhandLsctest/object/Hand;board firstCard firstColor 5a bcgetName(I)Ljava/lang/String; eafsctest/naming/EValueNames hjijava/lang/String klequals(Ljava/lang/Object;)Zi compareHigher,(Lsctest/object/Card;Lsctest/object/Board;)Z q rsiterator()Ljava/util/Iterator; uwvjava/util/Iterator xynext()Ljava/lang/Object; u{ |}hasNext()Zposc1highestOnBoard boardIterLjava/util/Iterator;nextCposBoardLocalVariableTypeTable*Ljava/util/Iterator;()Ljava/lang/String;Coiffeur specialColorhashCode  b h  toCharArray()[Csumcarray[C(Lsctest/object/CardList;)I V list()Ljava/util/List; qjava/util/List  /0Lsctest/object/CardList;  5 V10)Lsctest/rule/CoiffeurRules$ObenHierarchy; 5 V6 5 V7 5 V8 5 V9 5 VAS 5 VJ 5 VK 5 VQjava/lang/NoSuchFieldError SourceFileCoiffeurRules.java InnerClasses ObenHierarchy!   /* oYN*+-*,-+,$%&(* !"!#$k>*+,%>d*+,(h`>02 46*+!,$-./0W14+:2@.F :=8?5A3C1  . =@?BADCGEIGLINKPMROURWW+!CD2-E,-H:L6,OU+L& YZ[_!`#d,e.g0m>22Z!2[\2]$"^!_.'&>`+:dgd tu vuwt$z*&&+!&,$"m.*",E,HN-L6+L  4""+!",$ ^! _.noG*+,>6,p:#t;:*,66z2  (/3=CERGG !G,$@~. =.7!( . 7b- ?, ?| <*M> ,4`<, * .  m.//=+:t;N*-`=z#-*//,-.+! 3YW4 K*@OW*@ OW*@OW*@OW*@OW*@OW*@OW*@OW*@OW*Y '*+589BEFORS]`ajmnx{| 5@PK 6Psctest/rule/CoiffeurRules.java/** * */ package sctest.rule; import java.util.Iterator; import sctest.naming.EValueNames; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.object.Hand; import sctest.util.CardTool; /** * @author Besitzer * */ public class CoiffeurRules implements RoundRules { /** * */ private static final long serialVersionUID = 4288520684076743657L; private enum ObenHierarchy { V10, VJ, V9, VQ, V8, VK, V7, VAS, V6; public static String getName(int i) { return values()[i].name().substring(1); } } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getHigherCard(jagafa.object.Card, jagafa.object.Card) */ public Card getHigherCard(Card c1, Card c2) { Board dummy = new Board(); if (this.getPower(c1, dummy) > this.getPower(c2, dummy)) { return c1; } else { return c2; } } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getPower(jagafa.object.Card, jagafa.object.Board) */ public int getPower(Card c, Board b) { int power = 0; power = this.getValueRank(c, b); power += 100 * this.getColorRank(c, b); return power; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getScore(jagafa.object.Card) */ public int getScore(Card c) { switch (ObenHierarchy.values()[c.getValue()]) { case V6: return 0; case V7: return 0; case V8: return 8; case V9: return 0; case V10: return 10; case VJ: return 2; case VQ: return 3; case VK: return 4; case VAS: return 11; } return 0; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#isValid(jagafa.object.Card, jagafa.object.Hand, jagafa.object.Board) */ public boolean isValid(Card cardToCheck, Hand hand, Board board) { if (board.cardsPlayed() > 0) { Card firstCard = board.get(0); int firstColor = firstCard.getColor(); // Wenn keine Karten von der startFarbe auf der hand, dann egal // welche Karte gespielt wird if (CardTool.getAllOfColor(hand, firstColor).size() == 0) { return true; } else { // Wenn noch Karten von der startFarbe, dann muss Karte von der // gleichen Farbe sein if (cardToCheck.getColor() == (firstColor)) { return true; } else { return false; } } } return true; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getValueRank(jagafa.object.Card, jagafa.object.Board) */ public int getValueRank(Card c, Board b) { for (int i = 0; i < 9; i++) { if (ObenHierarchy.getName(i).equals( EValueNames.getName(c.getValue()))) { return 8 - i; } } return -1; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getColorRank(jagafa.object.Card, jagafa.object.Board) */ public int getColorRank(Card c, Board b) { if (b.cardsPlayed() > 0) { Card firstCard = b.get(0); int firstColor = firstCard.getColor(); if (firstColor == c.getColor()) { return 2; } else { return 1; } } return 2; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#compareHigher(jagafa.object.Card, jagafa.object.Board) */ public boolean compareHigher(Card c1, Board b) { int posc1 = getPower(c1, b); int highestOnBoard = 0; Iterator boardIter = b.iterator(); while (boardIter.hasNext()) { Card nextC = boardIter.next(); int posBoard = this.getPower(nextC, b); if (posBoard > highestOnBoard) { highestOnBoard = posBoard; } } if (posc1 >= highestOnBoard) { return true; } return false; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#getName() */ public String getName() { return "Coiffeur"; } /* (non-Javadoc) * @see jagafa.rule.RoundRules#specialColor() */ public int specialColor() { return -1; } /* * (non-Javadoc) * * @see java.lang.Object#hashCode() */ public int hashCode() { int sum = 0; char carray[] = this.getName().toCharArray(); for (int i = 0; i < carray.length; i++) { sum += (int) carray[i]; } return sum; } /* * (non-Javadoc) * * @see jagafa.rule.RoundRules#getScore(jagafa.object.CardList) */ public int getScore(CardList b) { int sum = 0; for (Card c : b.list()) { sum += this.getScore(c); } return sum; } } PK 6Ǿsctest/rule/RoundRules.class1sctest/rule/RoundRulesjava/lang/Objectjava/io/Serializable getHigherCard>(Lsctest/object/Card;Lsctest/object/Card;)Lsctest/object/Card; compareHigher,(Lsctest/object/Card;Lsctest/object/Board;)ZgetPower,(Lsctest/object/Card;Lsctest/object/Board;)IgetScore(Lsctest/object/Card;)I(Lsctest/object/CardList;)IisValid@(Lsctest/object/Card;Lsctest/object/Hand;Lsctest/object/Board;)Z Exceptionsjava/rmi/RemoteException getValueRank getColorRankgetName()Ljava/lang/String; specialColor()I SourceFileRoundRules.java       PK 6]1P sctest/rule/RoundRules.java/* * Created on 25.02.2005 Filename: Rules.java */ package sctest.rule; import java.io.Serializable; import java.rmi.RemoteException; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.object.Hand; /** * Interface for defining a RuleSet (eg. Oben, Unten, Trumpf) * All Methods have to be implemented */ public abstract interface RoundRules extends Serializable{ /* TODO: Add interface method for in-round rule change */ /** * Gibt die bessere der beiden Karten zurck * @return The card with the higher power * @param c1 The first card * @param c2 The second card */ public abstract Card getHigherCard(Card c1, Card c2); /** * Check wether a card beats all the cards on a board given * @param c1 The relevant card * @param b The relevant board * @return True, if the card specified beats all the cards in the Board */ public boolean compareHigher(Card c1, Board b); /** * Liefert den Wert der Karte relativ zum liegenden Board * @return The power of a card with respect to a Board * @param c The relevant card * @param b The relevant Board */ public abstract int getPower(Card c, Board b); /** * Liefert den Punktewert der Karte * @return The score of a card * @param c The relevant card */ public abstract int getScore(Card c); /** * Liefert den Punktewert des Boards * @param b The board to evaluate * @return */ public abstract int getScore(CardList b); /** * Prft die Gltigkeit der Karte bei gegebenem Board und Hand * @return True, if the card is a valid play * @param c The card to check * @param h The hand holding the card * @param b The Board on which the cards wants to played */ public abstract boolean isValid(Card c, Hand h, Board b) throws RemoteException; /** * Liefert den internen Wert des Wertes der Karte bei gegebenem Board * @return An internal Rank of the cards value compared to other cards on a board * @param b The relevant board * @param c The relevant card */ public abstract int getValueRank(Card c, Board b); /** * Liefert den internen Wert der Farbe der Karte bei gegebenem Board * @return An internal Rank of the cards color compared to other cards on a board * @param b The relevant board * @param c The relevant card */ public abstract int getColorRank(Card c, Board b); /** * Liefert den Namen des RuleSet * @return A String containing the name of the RuleSet */ public abstract String getName(); /** * Liefert die Spezialfarbe falls bentigt * @return The color with a special role in the RuleSet */ public abstract int specialColor(); }PK `}6N'sctest/view/resource/Eicheln Sieben.gifGIF89a}V\WO4 V(3-329%hj+G>$^C*?FC'&wFO#mpnV%񦧧⵵1 9P@}YLE!?,}p(L`lrl:ШtJ0+h eG.znn l`4w)vD5|B0<7;6?-6((1Gт7W6؃"5=br:A0l*C#JH"3!BE0f"I(S|#h|cP urXɳyx9O Xϊ%JAԫQ>%6 k jz fXeKw-Ph$+˖L4cͼCa:q0l !18랒 k^@ .l2f󭍂C8nN2#m,`\s|Y ]yЀ;D!e)̥g; z x\a( D Qp#]H=4P 2{3X]e(2[c;()?Vm=$yK FiޔrY旻X|-zfaa:sDnn9G9O~POi*Zm||t8i$d'~RpVrYhXB+ Y3y`` -0@@Y8ڮU;*K%p X0@ZJmKIK;lP.$j%8Mo fuBzt[rvmK*J0=h\0`A ܴ*V[hPE) /ٰB@I3#5ؐx|'$l^gmD(T2wܡv=  v[AP037;g㢀4Mk:>ckK2*s\S7+: cL/mMP2%Q LO{69p \ ;9Z #]`!/a@ J*@Nr`Ⴧ H3 1VMܛ ,`3A@/TZ H^&?RZ[@5׳R$>`rcg0 NY!QPёFPQxԦ)?6S"P@Ldt*?͒qݒH9Z߉ Y ]8e&$`Z_8@ FP;6Aqi   'U)CVnhxђkh[`m2`_Y?2_H: 5]\J\3̒Pcᒈ8.uiRn7@oO.o^ Ў|9=c @F >)5QEc˨fSl (kj|42bs$ȔjIk O9 T"}]#[\fFn_DRKn2R0MXwSAA-H ,4s+"$eaNdf؈Kd?:2`c-l:qne`D'~儹m6JQ(:tͭAY0-6`8nZ]k}kSAjWu~5 $q^X7{K%a~ Ox` I8&b*I5k+8}Hc7)7@"PO'"'L/ Vc7£Z 1\IEl%זO1< bZn-J%p1H @Hkz9a3<[U;K9ݮ> π^u j@7QԤ75sy>4]2^Z~'鲆Zԫd̚U:ָ3#XZB~_g ;;3S `VYhWCqm_O63V/mqV"HNr$p6v] tll$ ,2 Dsܲ֩7D]/9iVQ ȇM&w(*Mյ =d8Ϲ $aK!< ʻ<PjxasߑԧN+(8Qj NO"Jf+ * llG1gɟܮt)hwV$O} r]U@ϼ*r/摁A[5y TsfVK,44 qE>!-зPH@1!;C=]f _(fy]8=$7`?}6~P*03/P=|RNU~TN/fG2> #!~9@}IxD 0&22# soAf7U kG|AJYD?ǁ"80~9x08s,VHrW|~`ByAD]SU=q27 @Xe//?u#0+8`'xTLT6y|@/E)n3PA}wBY?A1pӣDKPV P Q0|-ԍxa }r(}z7<PR$u0+aSDDߕw bA)Px9*FxuI` `= pScƴIU## v(Od:PHLd+c=`6!(Ux9'z#*!_7rIW55cN(eIhzr&`^Ro /FN&E1wuFࡗ瓅y %PaIM7/JP[Bzp8q>}NN@G} =ivaxPnٕ`w~7hZYafAUTW9iU+x"__ ՝s̹n #vya 4О"_ݹ+aPa.W!p݆]`%1`s Yh&?.)pJ P puj h#JM4a+0- p |9*f/ʣqJz)QCZuOdppMVEm(pw&fIAi*uQWp _MpqqqHIDa<) XiRGpq4jTsߩss=gw-66jzvuI1`rPڊqXa]wz)ve?}L0!XwVzUEuQbz޸x9`8(R8Hy 5OeN>D0zzzvzxztV Z0p;PAۈxڏ{ɘ F IR3K+M@D)9 !ɾYP|PU+P94v5i;Aɽ@ vÎٟ; P܋G\Yu00v AjyIlr ܻsٻ5̗ Ň}Љ g|(tȪkPGX~o@Yx;1Gϊa7\hM 0\v\lpp  -F}HԹq =iD FM ^m!n<Zf}"PjS\dvXGc_z^z~ 5[qΖ;K)y٪Nא-Y(z+%^Zj_v7RSUZvĥ ?e)!ˍtM/y,_2i9ukCs͍H /}2@BtUC=g4!wR(WC}z*`8$kW-TK4i5I8h9* 'm5 .,>58Rvӫ{4"T&MPٴJ7 p} "rw6NpjDB;|@N[hH#2z+k˹Y[RUw{9M cJK?䔩 7X;/ 0K=RPXM=b@9Ik勘<`kHMWūT<1Yy"6J(62}{w:|Nnݨ~7\n(":W|Iˇ2xH_~(实☭۴PI=g RxB3pfL-՗n'@$4P2eʨ^{vR?5THB&0lΝn> Qv!>| d5pQvl7϶Jqwu3f.:dzN_WXU3 \G.2R*t&YP|5 ppP3.00{Ɏ# \ G ?i@GwjO+'Ah V=5s̉qvȋ % &GtٝfeSMF-GU` &A<} ']`^3wVbl]c P˼$8_09eAfRak3EMCC$`K?"0jfVO$̚Gа;Ma0/1$H%1`b% )i@1ʲbHҠ0,JJ0o37ڕM)CQpx|Dl8&6$66 Zjw8&"R@BHBu(4  ,N0D*LrpT$d.<(Pvg[dc"XFIMISW08|<$%p%|$`ID0a; `hq 68xD0a#݀MܛbC‹D.CˀDdu {P``7,IǸnNB@$" Hoi(8*l F; :Z(+*\+&4kihN1+ HY B99+CXl(5kS40g@46 0D 0Hxq؃c@, $-J%\tÀš~V;!ڵO9}}Pl"dU 0a -]쩲W brj/ r5 C'l0:7{`܊ox(gnh2xin< rp N`͜&02qJ I@&h0N ,uЃD!ͫV2BYd   6s2o  lMİoHic",+GUtzI%D;u@,Ű,  R;j6 3AKB (SM1= 8w=L`1Bw80ż:CIeaJ@o!8-u u d<˃//%!j'K p rx^/37;dRupV'~( qBhxjPEʳ8^Lݸ^^10L7 ʆv!@-5= ]9 #8  @i9ɄUk7] 3AByCĐ8Tg<0@]c[S DhrgT#A{ ʀs0d5. N;<8`hW#oxc1,@0߼s @3] ~D|U]qfSmm8`8}Wp|I2(o~8a. ƻW oO7`?cu`=x%a@y6 FCTS C!{TPG((D)JpCLZ , J t0ehE]m/!6N#͸4Qy҂⃤2HE| #!IIN"u!9!"A @4)QyGUt*QKT2)np/La41IĄ /9iNմ5",R/Nq49堓t;ǹoC=iNP4A%́.Q(ZnmMAR%=R ;PK a}6sctest/view/resource/Empty.gifGIF89aH`3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f!,H` H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKn€;PK 6 sctest/util/PK 6(sctest/util/Combinatorics.class12sctest/util/Combinatoricsjava/lang/Object()VCode  LineNumberTableLocalVariableTablethisLsctest/util/Combinatorics; combinations(II)Ljava/math/BigInteger;   factorial(I)Ljava/math/BigInteger; java/math/BigInteger multiply.(Ljava/math/BigInteger;)Ljava/math/BigInteger;  dividenrIselectaboveLjava/math/BigInteger;unten permutationsn & '(valueOf(J)Ljava/math/BigInteger;resi probability(JJ)DpositiveJpossible SourceFileCombinatorics.java!/*   iMdN,-    * !"! #/  $ l %L=+%L+   $)!* +,: o  -./.01PK 6l-sctest/util/Combinatorics.javapackage sctest.util; import java.math.BigInteger; public class Combinatorics { public static BigInteger combinations(int nr, int select){ BigInteger above = factorial(nr); BigInteger unten = factorial(nr-select).multiply(factorial(select)); return (above.divide(unten)); } public static BigInteger permutations(int n){ return factorial(n); } public static BigInteger factorial(int n){ BigInteger res = BigInteger.valueOf(1); for (int i = 1;i<=n;i++){ res = res.multiply(BigInteger.valueOf(i)); } return res; } public static double probability(long positive, long possible){ return (double)positive/(double)possible; } } PK 6; sctest/util/Distributor.class1]sctest/util/Distributorjava/lang/Object HAND_SIZEI ConstantValue COLORS cardList_Ljava/util/List; Signature&Ljava/util/List;()VCode  LineNumberTableLocalVariableTablethisLsctest/util/Distributor;distributeCardsTo(Ljava/util/List;)V Exceptionsjava/rmi/RemoteException+(Ljava/util/List;)Vjava/util/LinkedList  " $ %createCardList ')(java/util/List *+get(I)Ljava/lang/Object;-sctest/client/Player /10java/lang/Math 23random()D '5 67size()I ,9 :;getHand()Lsctest/object/Hand;=sctest/object/Card ?A@sctest/object/Hand BCadd(Lsctest/object/Card;)V playerListipLsctest/client/Player;jLocalVariableTypeTable(Ljava/util/List; 'L BM(Ljava/lang/Object;)Z <O P(II)V@@" 'V WXset'(ILjava/lang/Object;)Ljava/lang/Object;cLsctest/object/Card; SourceFileDistributor.java!   /*   \Y !#<G*&,M>..!4k6,8! h`&<> ҄*   !""$2%J"S [)4\D LE6FG4H22I \DJ %r;!KW$;R<D.QkSk>!&!,UW :01045"6,798<9I8U;`5i4q@4EWEJH,4YZ9'2[\PK 6qsctest/util/Distributor.java/** * */ package sctest.util; import java.rmi.RemoteException; import java.util.LinkedList; import java.util.List; import sctest.client.Player; import sctest.object.Card; /** * Distrubutor shuffles the cards and distributes them to a list of Players * Abstract helper class (cannot be instantiated) */ public abstract class Distributor { private static final int HAND_SIZE = 9; private static final int COLORS = 4; private static List cardList_; /** * Distrubute the Cards to the Players in the List given * @param playerList The List of Players (java.util.list) * @throws RemoteException * */ public static void distributeCardsTo(List playerList) throws RemoteException { cardList_ = new LinkedList(); createCardList(); for (int i = 0; i < COLORS; i++) { Player p = playerList.get(i); for (int j = 0; j < HAND_SIZE; j++) { // p.getHand().add(cardList_.get(i*9+j)); int random = (int) ((Math.random()) * cardList_.size()); p.getHand().add(cardList_.get(j+i*HAND_SIZE)); //cardList_.remove(random); } } } /** * Create the cards and shuffle them * @throws RemoteException */ private static void createCardList() throws RemoteException { for (int i = 0; i < COLORS * HAND_SIZE; i++) { cardList_.add(null); } for (int i = 0; i < COLORS; i++) { for (int j = 0; j < HAND_SIZE; j++) { Card c = new Card(i, j); int random = (int) ((Math.random()) * COLORS * HAND_SIZE); while (cardList_.get(random) != null) { random = (int) (Math.random() * COLORS * HAND_SIZE); } cardList_.set(random, c); } } } } PK 6ؿ=a a sctest/util/CardTool.class1sctest/util/CardTooljava/lang/Object()VCode  LineNumberTableLocalVariableTablethisLsctest/util/CardTool; getAllOfColor3(Lsctest/object/CardList;I)Lsctest/object/CardList;sctest/object/CardList   iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object;sctest/object/Card  !"getColor()I $ %&add(Lsctest/object/Card;)V ( )*hasNext()ZcardsLsctest/object/CardList;colorIdebugZ trumpfList validIterLjava/util/Iterator;nextCLsctest/object/Card;LocalVariableTypeTable*Ljava/util/Iterator;isBockH(ILsctest/object/Card;Lsctest/object/CardList;Lsctest/rule/RoundRules;)Z;sctest/object/Board : :> ?@addCard-(Lsctest/object/Card;Lsctest/client/Player;)V BDCsctest/rule/RoundRules EF compareHigher,(Lsctest/object/Card;Lsctest/object/Board;)Z BH IJ getValueRank,(Lsctest/object/Card;Lsctest/object/Board;)InthcgonerulesLsctest/rule/RoundRules;goneIternumberOfHigherGoneboardLsctest/object/Board; getValidCards[(Lsctest/object/Hand;Lsctest/object/Board;Lsctest/rule/RoundRules;)Lsctest/object/CardList; ExceptionsXjava/rmi/RemoteException Z\[sctest/object/Hand ]^get(I)Lsctest/object/Card; B` abisValid@(Lsctest/object/Card;Lsctest/object/Hand;Lsctest/object/Board;)Z Zd e"sizehandLsctest/object/Hand;cardLi evalWinnerk(Lsctest/object/Board;Lsctest/rule/RoundRules;Lsctest/client/Player;Ljava/util/List;)Lsctest/client/Player; Signature(Lsctest/object/Board;Lsctest/rule/RoundRules;Lsctest/client/Player;Ljava/util/List;)Lsctest/client/Player; :\ prqjava/util/List stindexOf(Ljava/lang/Object;)I pv ]w(I)Ljava/lang/Object;ysctest/client/Player lastWinnerLsctest/client/Player;players_Ljava/util/List; startPlayerwinner(Ljava/util/List; SourceFile CardTool.java1/*   :=YN*:: -#'- &  "#%(&."8* >:+,:-.8/0 01,*23456 *27 89 j,:6:Y<:+=0:-A+'d-+Gd :67 89;<(=->:?F@I;SEfFhH RjK.jL5jM,jNOdP3 aQ.XRS(!456 dP7 TUVW7YN6!*Y:,*+_ -#*c- VXYZ#[)X5_ >7fg7RS7NO/h, *i.L5 jklmQ6F*n:+*A/6, -,o6`6-ux 2 fghij!k*m1n7o:rFfOu RQRSQNOQz{Q|}Li.8L5)~.1.6 Q|PK 6T T sctest/util/CardTool.java/* * Created on 16.03.2005 Filename: AIMethods.java */ package sctest.util; import java.rmi.RemoteException; import java.util.Iterator; import java.util.List; import sctest.client.Player; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.object.Hand; import sctest.rule.RoundRules; /** * CardTool contains some helper Methods to deal with cards and CardLists */ public final class CardTool { /** * Get all Cards in the CardList with the color given * @return A CardList containing all Cards with the color specified from another CardList * @param cards The source CardsList * @param color The relevant color */ public static CardList getAllOfColor(CardList cards, int color) { boolean debug = true; CardList trumpfList = new CardList(); Iterator validIter = cards.iterator(); while (validIter.hasNext()) { Card nextC = validIter.next(); if (nextC.getColor() == (color)) { trumpfList.add(nextC); } } return trumpfList; } /** * Check wether the card is a Bock of level n or not * @return True, if the Card can only be beaten by n(th) Cards left in the game * @param nth The level of the Bock * @param c The card to check * @param gone A CardList of all cards gone in the game * @return rules The RuleSet to apply */ public static boolean isBock(int nth, Card c, CardList gone, RoundRules rules) { Iterator goneIter = gone.iterator(); int numberOfHigherGone = 0; Board board = new Board(); board.addCard(c, null); while (goneIter.hasNext()) { Card nextC = goneIter.next(); if (nextC != null) { if (rules.compareHigher(nextC, board) && nextC.getColor() == c.getColor()) { numberOfHigherGone++; } } } if (numberOfHigherGone == (8 - nth) - rules.getValueRank(c, board)) { return true; } else { return false; } } /** * Get all Valid Cards out of the Hand for the board with * the Ruleset specified * @return A CardList containing all card out of A hand which can be played onto the board * @param hand The relevant hand * @param board The relevant board * @param rules The RuleSet to apply * @throws RemoteException */ public static CardList getValidCards(Hand hand, Board board, RoundRules rules) throws RemoteException { CardList cardL = new CardList(); for (int i = 0; i < hand.size(); i++) { Card c = hand.get(i); if (rules.isValid(c, hand, board)) { cardL.add(c); } } return cardL; } /** * Returns the winning Player of the board given */ public static Player evalWinner(Board board, RoundRules rules, Player lastWinner, List players_) { for (int i = 0; i < 4; i++) { Card c = board.get(i); if (rules.compareHigher(c, board)) { int startPlayer = 0; if (lastWinner != null){ startPlayer = players_.indexOf(lastWinner); } int winner = startPlayer + i; if (winner >= 4) { winner -= 4; } return players_.get(winner); } } return null; } }PK 6K sctest/util/GoneCardHelper.class1sctest/util/GoneCardHelperjava/lang/Objectjava/io/SerializableserialVersionUIDJ ConstantValue$mlgone_Lsctest/object/CardList;rules_Lsctest/rule/RoundRules;3(Lsctest/object/CardList;Lsctest/rule/RoundRules;)VCode  ()V   LineNumberTableLocalVariableTablethisLsctest/util/GoneCardHelper; goneCardsrulesfirstCardInRound(I)Lsctest/object/Card; # $%round(I)Lsctest/object/CardList; ')(sctest/object/CardList *+size()I '- .!getIbcardOfPlayerInRound-(Lsctest/client/Player;I)Lsctest/object/Card; '4 56list()Ljava/util/List; 8:9java/util/List ;<iterator()Ljava/util/Iterator; >@?java/util/Iterator ABnext()Ljava/lang/Object;Dsctest/object/CardFsctest/object/PlayerCard CH IJ getPlayer()Lsctest/client/Player; LNMsctest/client/Player OPequals(Ljava/lang/Object;)Z >R SThasNext()ZpLsctest/client/Player;cLsctest/object/Card;pcLsctest/object/PlayerCard;play ' '^ _`add(Lsctest/object/Card;)VindexgoneSizeigiallCardsOfPlayer0(Lsctest/client/Player;)Lsctest/object/CardList;clalwaysPlayedColor(Lsctest/client/Player;I)Z k ! Cm n+getColor p 12 r s+ roundsPlayedcolorfirstplayed@ z|{java/lang/Math }~floor(D)D goneOfColor(I)IcountisBock(ILsctest/object/Card;)Z ':sctest/object/Board  addCard-(Lsctest/object/Card;Lsctest/client/Player;)V sctest/rule/RoundRules  compareHigher,(Lsctest/object/Card;Lsctest/object/Board;)Z  getValueRank,(Lsctest/object/Card;Lsctest/object/Board;)InthgoneIterLjava/util/Iterator;numberOfHigherGoneboardLsctest/object/Board;nextCLocalVariableTypeTable*Ljava/util/Iterator; getBockList/(Lsctest/object/Hand;)[Lsctest/object/CardList;  hLsctest/object/Hand; bockList_[Lsctest/object/CardList;cardsLj SourceFileGoneCardHelper.java!    Y**+*,    !_*"M,& ,, ! "$ $/0 12T*"N-37:1=C:E:G:G+KQ. )* + -&.-/4091E2H-R7HTTUVT$/N0 &"WX-YZ4[V$%J'Y\Mh>*&6,6"`*`,:,],. ;< =>?B#C,D9E?BHHHJJ$/B0  >a/5b/ (c/9dXefI'Y\M*37:'=CN-G,-G+K,-]Q,"MN$O+P-R8S=NGV*IIUVAg $WXhiG>9*j:l*+o:ll*q`. [\ ^_ab$c)d6e8[Ej>GGUVGt/Cc/ ,uX$vXs+;*&woyo 5=*37:=CN-lQtuv&w)u3z*55t/3/ WXp*N6Y:,2-=C:"l,l*-Qd*,d: ).:JMVlnHpp/pWXh e/\)$X hS 'M+N6?,'Y\S6"*-,,2-,]-&ۄ ,* .;GQ>SSMK  F/+c/PK 6tO` sctest/util/GoneCardHelper.javapackage sctest.util; import java.io.Serializable; import java.util.Iterator; import sctest.client.Player; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.object.Hand; import sctest.object.PlayerCard; import sctest.rule.RoundRules; public class GoneCardHelper implements Serializable { /** * */ private static final long serialVersionUID = 2640438376027483293L; private CardList gone_; private RoundRules rules_; public GoneCardHelper(CardList goneCards, RoundRules rules) { gone_ = goneCards; rules_ = rules; } public Card firstCardInRound(int round) { CardList b = round(round); if (b.size() > 0) { return b.get(0); } return null; } public Card cardOfPlayerInRound(Player p, int round) { CardList b = round(round); if (round < 0) { return null; } for (Card c : b.list()) { PlayerCard pc = (PlayerCard) c; Player play = c.getPlayer(); if (play != null) { if (c.getPlayer().equals(p)) { return c; } } } return null; } public CardList round(int round) { CardList b = new CardList(); int index = (round) * 4; int goneSize = gone_.size(); if (index >= goneSize) { return b; } for (int i = 0; i < 4; i++) { if (goneSize > index + i) { Card gi = gone_.get(index + i); b.add(gi); } } return b; } public CardList allCardsOfPlayer(Player p) { CardList cl = new CardList(); for (Card c : gone_.list()) { if (c.getPlayer() == null) { return cl; } if (c.getPlayer().equals(p)) { cl.add(c); } } return cl; } public boolean alwaysPlayedColor(Player p, int color) { for (int i = 0; i < roundsPlayed() + 1; i++) { Card first = this.firstCardInRound(i); if (first == null) { return true; } if (first.getColor() == color) { Card played = this.cardOfPlayerInRound(p, i); if (played != null) { if (played.getColor() != first.getColor()) { return false; } } } } return true; } public int roundsPlayed() { return (int) Math.floor((double) (gone_.size() / 4.0)); } public int goneOfColor(int color) { int count = 0; for (Card c : gone_.list()) { if (c.getColor() == color) { count++; } } return count; } public boolean isBock(int nth, Card c) { Iterator goneIter = gone_.iterator(); int numberOfHigherGone = 0; Board board = new Board(); board.addCard(c, null); while (goneIter.hasNext()) { Card nextC = goneIter.next(); if (nextC != null) { if (nextC.getColor() == c.getColor()) { if (rules_.compareHigher(nextC, board)) { numberOfHigherGone++; } } } } if (numberOfHigherGone == (8 - nth) - rules_.getValueRank(c, board)) { return true; } else { return false; } } public CardList[] getBockList(Hand h) { CardList bockList_[] = new CardList[9]; CardList cardsL = h; for (int j = 0; j < 9; j++) { bockList_[j] = new CardList(); for (int i = 0; i < cardsL.size(); i++) { if (isBock(j, cardsL.get(i))) { bockList_[j].add(cardsL.get(i)); } } } return bockList_; } } PK a}6iٙ$sctest/view/resource/Rosen Sechs.gifGIF89a}?HmmkP54`_):002'(y%22M&Ej}1P}dA>?@TTQLƟFE"%%(XpBA9l!?,}p(dhrl:ШtJl,F xL.zne)j^~~9.u<tD+&zB&4B9/-4p8Gπ<\4U1ց5&2a ̓9@.hL#a3#6$Hŋ&j(5*DD0w9Ȳ˗0cTO?AV@e Jh2采"He3hQjj0.laxb@W[ʝu0bP#UƤKp].g/ RWlXʇ*ÔS X[Cdx/N]W1g{] ӔY;sC|:7n;v ~sͼsN6m۰DR[^wVF(+lGw1o z|yz?PS_&pg CCnT蟃z@8R1|(z!"{"PpȨca+zz0ƈ/4pcw=H`BVH 6@ 8d$aMe,A4)|qJn9W)>PBhgavjEgY&:0G~: 6:ϢÉ-t`zvPFj*- @X֪ڭ+.$`@ D{# fZ`.[ vPf+жN).@"pK1.8A&|-h o #ג.drc<@r+z>_M>p #!5 ғ PJ;<7F@28B -BIPNgll&%^S$j"\4{Ȱ|F](B" P#~@@b @(l`[0/>K&"g/>% 3@3oCHtMm Aǜ^rI-±DdD`03ZXPHxD(4ND'DI24nGS?bѼ!΄#5@m< mZ(;Ad%U"+- TWje}γCXEUjUs*L0Z)Xbyj,PNÚ3]YE>j((WiVU64g)P@ɶ@zɴ!`kUf #F#u2e.H)@tЁ9Ul *J!ES v+R+Խ6@f0]J6AMr oyK^_L.c6$ O27{@ HFJ L,ZxxpKO % `zHýW4V F͉×V [ XpDv9h? U Ogi"dLPpTKrkeC2,k) e< %h9皀 p vaXXPc&0LFӀ`{A}-IA7@LU˧j1Z2X;Pؠq.c)nh/Fdh -4 ʽsn\E@T@&e'Ӓ4+z;m '-~$ñrd]{$IzC~\|H|RF :-=# B AM9 YBY=":T lre +COquWl?D P-:-Q K34gU$Ops1Dc] D%o$dM`djK <= NZz@E8x!m\hXW@f`|ea0w\d /3oWE9t\TGru>X@`m6@v~yTx0(F|@Pp~ׂ!Uu/@o5[()Ӷ u}%CT5'Lp$ .8UX!O NwzㅊA(cHRgHK3 ņ,tq8 lIl>~'8 fr]zݧ ehr%U~X~@%hA=؇P%*P@(c&7ZxXhJ&c$tv0w$3T1z@,U(yз53rLUPPU6=:5 K~@B(=08x:KxHT4NsS D 6PSt2ChFe)E @Cf@={G⊏P1&@THふŋH>EC$WgKh!)ђNufDLWxf:c4:%OPg"R-5NB=UPV`sBf%YKWpGJǖg+eH IUTG%0AP` g(WQrHEަMSchu[C娓EɇDPYLbhosɇgPmqu`2RIo]SPz6 V5GhOef>?YSyl7Ypě H`(@Iqԃy6ĜkMgr_%\Z PTc"I\avΨM)&(_pU(%+8nvc7RX-+ْP< CjsHaR s0vwt{35gZ[8CVuf%iQ rT6QC(+@)|zOբ]`__HEXh]kmʑ|twZ^zzr*|cDX襚E܅ʒPU39=ࣛj9 32 AZꎜҤqb$b'M!Q2jKlf)c pyG=Vz#ԂI%mZf*vdDǚ&<&XњCS*~tldVp7V@pofAf^:éi/jQ.e ZW&.4wCѶi{8gViCy퉬 EoE_twz6~ [_]gxbcWNTwDt~ \6[mYl+pJ HGTg@Y/K#~}i#\J-@v$Cg :>v3dKvFFcx(u^Y&gTugY!;FZ$Dxyx]:iғIHר$.ya4dWnƑT,AV'W`ɉc1y 3YejI$4k\j|ySGjCEy?+yhKZ90x`< d+y 1*+ (X cٍU.哺z{LYÁp 4?V/AF\[J9ÜSTl%0h[El~P]K vKl! ,ph̆_ |0/@e,W]Ѕ^XG@iŪ*2@: 2,CviD@ Y&p;cXzѩ@5j!^negbYt':{#`I6IVSF9KdH^V/a c%N#~&VboI3Zx5Gv01d``R dF2zC,Tayq0ifooig|W{&tBnp 0FObXd&P2`wc v)9'|(1R8&>G[(-dBt+[>" ?8\j$R(_jh\nZ.||. N\.dyb^urL^c@4툜% 8HyF@@F$v]memqs]y:D١seպe ?.p ;Xb~c 9Vp'-@bK5qǗ!ӽ\&ĩ 3xIt<:lyX `O(SbVᘴүC'@͢dUI0ٰƕ5[߄3ֲ<*ןэH(x!:t0+0#Cm1eeU dM{)2p5mp(mzw'vT}k}z8q @sգ)"=`zUofw>|qr&/@h!}|Nd,B K=1X0p .;,EA_lZpyF"(uT}1l2J(jX-dR(TL)_` "XAN<*/R/ .]JMų8I;4+O7I U4K1UI |MJ+ՔLQ5E+ԁ5CM %TUOMB9` "``UU[wmM $][f Y[kEv@Y [\uWoLl Z(X .NXb V6:ɇԠӋ1X9AYc2I Y1yYnaYiVjPYy矁晇裑NnZ{ꭹ'.l](!;5Ꮋha j\ /z 컃;PK 6sctest/client/PK 66-8sctest/client/Player.class1sctest/client/Playerjava/lang/Objectjava/io/Serializableserver#Lsctest/server/GameServerInterface;serialVersionUIDJ ConstantValueU=\هname_Ljava/lang/String;hand_Lsctest/object/Hand;(Ljava/lang/String;)V Exceptionsjava/rmi/RemoteExceptionCode  ()V//localhost/GameObject  java/rmi/Naming !"lookup%(Ljava/lang/String;)Ljava/rmi/Remote;$!sctest/server/GameServerInterface &  (*)java/lang/System +,outLjava/io/PrintStream;.Server not found! 021java/io/PrintStream 3println (5 67exit(I)V 9;:java/lang/Exception <printStackTrace > @sctest/object/Hand ? C LineNumberTableLocalVariableTablethisLsctest/client/Player;nameexLjava/lang/Exception;getName()Ljava/lang/String;getHand()Lsctest/object/Hand;equals(Ljava/lang/Object;)Z R KL TVUjava/lang/String OParg0Ljava/lang/Object;activateupdate(Ljava/util/List;)V Signature+(Ljava/util/List;)VplayCard(Lsctest/object/Card;)Z #a ^b-(Lsctest/object/Card;Lsctest/client/Player;)Zdjava/lang/StringBuilderfPlayer: ch  cj klappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;n : cp kq(Z)Ljava/lang/StringBuilder; cs tLtoString v MN ?x yzremove(Lsctest/object/Card;)VcLsctest/object/Card;successZ SourceFile Player.java!   <**#%*%'-/4M,8*+=*?YAB#&9D2  &'+ 0!;#E <FG<H'IJKL/*=D*E FGMN/*BD.E FGOPC+Q*=SD3EFGWXYZ[\]^_g+*%+*`=0'cYeg*Qimior/*u+w%'cYeg*Qimior/D";<>?@8ACCeGE gFGg{|U}~PK 6y33sctest/client/Player.javapackage sctest.client; import java.io.Serializable; import java.rmi.Naming; import java.rmi.RemoteException; import java.util.List; import sctest.object.Card; import sctest.object.Hand; import sctest.server.GameServerInterface; public abstract class Player implements Serializable { protected GameServerInterface server; /** * */ private static final long serialVersionUID = 6142167556158590970L; public Player(String name) throws RemoteException { try { server = (GameServerInterface) Naming .lookup("//localhost/GameObject"); if (server == null) { System.out.println("Server not found! "); System.exit(1); } } catch (Exception ex) { ex.printStackTrace(); } name_ = name; hand_ = new Hand(); } protected String name_; protected Hand hand_; public String getName() { return name_; } public Hand getHand() { return hand_; } @Override public boolean equals(Object arg0) { return ((Player) arg0).getName().equals(name_); } public abstract void activate() throws RemoteException; public abstract void update(List players_) throws RemoteException; public boolean playCard(Card c) throws RemoteException { if (c == null) { return false; } boolean success = server.playCard(c, this); if (success) { System.out.println("Player: " + this.getName() + " : " + success); getHand().remove(c); } else { System.out.println("Player: " + this.getName() + " : " + success); } //update(players_); return success; } } PK p6v' ' sctest/client/HumanPlayer.class1sctest/client/HumanPlayersctest/client/Playerjava/io/SerializableserialVersionUIDJ ConstantValueU=\ه playerUI_Lsctest/view/PlayerUI;boardUI_Lsctest/view/BoardUI;hideUI_Z(Ljava/lang/String;)V Exceptionsjava/rmi/RemoteExceptionCode    LineNumberTableLocalVariableTablethisLsctest/client/HumanPlayer;nameLjava/lang/String;getHand()Lsctest/object/Hand; % &'hand_Lsctest/object/Hand;update(Ljava/util/List;)V Signature+(Ljava/util/List;)V - /sctest/view/PlayerUI .1 2(Lsctest/client/Player;)V .4 56 setVisible(Z)V .8 9: updateHand()V < >sctest/view/BoardUI @ ABgetName()Ljava/lang/String; = =4 F GHserver#Lsctest/server/GameServerInterface; JLK!sctest/server/GameServerInterface MNgetBoard()Lsctest/object/Board; =P QR updateBoardUI((Lsctest/object/Board;Ljava/util/List;)Vplayers_Ljava/util/List;LocalVariableTypeTable(Ljava/util/List;activate Y[Zjava/lang/System \]outLjava/io/PrintStream;_java/lang/StringBuilderaPlayer ^ ^d efappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;h activated! ^j kBtoString monjava/io/PrintStream pprintlnrsctest/util/GoneCardHelper Jt uv goneCards()Lsctest/object/CardList; Jx yzgetRules()Lsctest/rule/RoundRules; q| }3(Lsctest/object/CardList;Lsctest/rule/RoundRules;)V J  getPartner.(Lsctest/client/Player;)Lsctest/client/Player; Partner: q  roundsPlayed()I ^ e(I)Ljava/lang/StringBuilder; Partner played q cardOfPlayerInRound-(Lsctest/client/Player;I)Lsctest/object/Card; ^ e-(Ljava/lang/Object;)Ljava/lang/StringBuilder; sctest/naming/EColorNames A(I)Ljava/lang/String; java/lang/String valueOf&(Ljava/lang/Object;)Ljava/lang/String; q alwaysPlayedColor(Lsctest/client/Player;I)Z ^ e(Z)Ljava/lang/StringBuilder; q  goneOfColor(I)I always? helperLsctest/util/GoneCardHelper;partnerLsctest/client/Player;colorIplayCard(Lsctest/object/Card;)Z  cLsctest/object/Card; SourceFileHumanPlayer.java!  G *+*   !"#/*$! ()*+a*,&*.Y*0,*,3* *,3*,7*;*=Y*?C;*;D*;*EI+O. &'()"**-1.8/G0O2`3aaSTU aSV!W:cӲX^Y`b*?cgcilqY*Es*Ew{L* *,3*E*~MX^Yb+c+*E*~+il>FX^Ybc+,c+c+,ilN6889?:G<R>^?e@jAuByA>DEFGEDK*8RK_*+* *,3OPQSVPK p6%;[[sctest/client/HumanPlayer.javapackage sctest.client; import java.io.Serializable; import java.rmi.RemoteException; import java.util.List; import sctest.naming.EColorNames; import sctest.object.Card; import sctest.object.Hand; import sctest.util.GoneCardHelper; import sctest.view.BoardUI; import sctest.view.PlayerUI; public class HumanPlayer extends Player implements Serializable { /** * */ private static final long serialVersionUID = 6142167556158590970L; private transient PlayerUI playerUI_; private transient BoardUI boardUI_; private boolean hideUI_= false; public HumanPlayer(String name) throws RemoteException { super(name); } public Hand getHand() { return hand_; } public void update(List players_) throws RemoteException { if (playerUI_ == null) { playerUI_ = new PlayerUI(this); playerUI_.setVisible(true); if (hideUI_) { this.playerUI_.setVisible(false); } } playerUI_.updateHand(); if (boardUI_ == null) { boardUI_ = new BoardUI(this.getName()); boardUI_.setVisible(true); } boardUI_.updateBoardUI(server.getBoard(), players_); } public synchronized void activate() throws RemoteException { System.out.println("Player " + this.getName() + " activated!"); GoneCardHelper helper = new GoneCardHelper(server.goneCards(),server.getRules()); if (hideUI_) { this.playerUI_.setVisible(true); } Player partner = server.getPartner(this); System.out.println("Partner: " + helper.roundsPlayed() + " Partner played " + helper.cardOfPlayerInRound(server.getPartner(this), helper .roundsPlayed())); for (int color = 0; color < 4; color++) { System.out.println(EColorNames.getName(color) + " " + helper.alwaysPlayedColor(partner, color) + " " + helper.goneOfColor(color) + " always? " + helper.alwaysPlayedColor(partner, color) ); } } @Override public boolean playCard(Card c) throws RemoteException { if (super.playCard(c)){ if (hideUI_) { this.playerUI_.setVisible(false); } return true; } return false; } } PK 6%٤sctest/client/AIPlayer.class1gsctest/client/AIPlayersctest/client/Playerjava/io/SerializableserialVersionUIDJ ConstantValueU=\هai_Lsctest/ai/JassAI;server_#Lsctest/server/GameServerInterface;(Ljava/lang/String;)V Exceptionsjava/rmi/RemoteExceptionCode    sctest/Start  getServer%()Lsctest/server/GameServerInterface;  !sctest/ai/SimpleAI # $server & '<(Lsctest/client/Player;Lsctest/server/GameServerInterface;)V ) LineNumberTableLocalVariableTablethisLsctest/client/AIPlayer;nameLjava/lang/String;activate()V 354sctest/ai/JassAI 67 computeCard()Lsctest/object/Card; 9 :;getHand()Lsctest/object/Hand; =?>!sctest/server/GameServerInterface @AgetBoard()Lsctest/object/Board; =C DEgetRules()Lsctest/rule/RoundRules; GIHsctest/util/CardTool JK getValidCards[(Lsctest/object/Hand;Lsctest/object/Board;Lsctest/rule/RoundRules;)Lsctest/object/CardList; MONsctest/object/CardList PQcontains(Lsctest/object/Card;)Z S TQplayCard MV WXget(I)Lsctest/object/Card;cLsctest/object/Card;validLsctest/object/CardList;update(Ljava/util/List;)V Signature+(Ljava/util/List;)Vplayers_Ljava/util/List;LocalVariableTypeTable(Ljava/util/List; SourceFile AIPlayer.java!  ]*+** Y**"%(* !%+,-./!01u*( *** Y**"%(* Y**"%(*(2L*8*"<*"BFM,+L *+RW *,URW** )*+%052?3Y4a5j7t:+ u,-?6YZY[\]^_`G*=+,-abc adefPK 6{{«sctest/client/AIPlayer.javapackage sctest.client; import java.io.Serializable; import java.rmi.RemoteException; import java.util.List; import sctest.Start; import sctest.ai.JassAI; import sctest.ai.SimpleAI; import sctest.object.Card; import sctest.object.CardList; import sctest.server.GameServerInterface; import sctest.util.CardTool; public class AIPlayer extends Player implements Serializable { /** * */ private static final long serialVersionUID = 6142167556158590970L; private transient JassAI ai_; private transient GameServerInterface server_; public AIPlayer(String name) throws RemoteException { super (name); server_ = Start.getServer(); ai_ = new SimpleAI(this, server); //ai_.init(this,server.getRules(), server.getBoard(), server.goneCards()); } public synchronized void activate() throws RemoteException { if (ai_ == null || server_==null){ server_ = Start.getServer(); ai_ = new SimpleAI(this, server); //ai_ = new SimpleAI(); //ai_.init(this,server.getRules(), server.getBoard(), server.goneCards()); } ai_ = new SimpleAI(this, server); Card c = ai_.computeCard(); CardList valid = CardTool.getValidCards(getHand(), server.getBoard(), server.getRules()); if (valid.contains(c)){ playCard(c); } else { playCard(valid.get(0)); } } public void update(List players_) throws RemoteException{ } } PK b}6O+9}{zIżR,⯣!HJHB+$"}},ke=wğ:8!?,}p(h4rl:ШtJM,Q,KnL.zn -0GEb1sv/ Y#5{C6/B9 %q(% %҅G@8X 'Yo֎@1 DH=hdA R|әsƇ(iD`Uz,dK`>n@ C ь;`z yʢI1 `@eHCp;@FjK$ LI/z;N=iAF 4$"WL&xqF"-ϛcf @`zhҋ`AXFVv%+5MG $EFIю, B:p@8r_3Ѻt!` ~mEl@;Hv4GLCpc=0 E53}8]T!쑪;0aTrR7N:[ *r.p , (-pq/_v@+2;k8wwsu# #hXҌ('GW;@sw8c`. a`f9݂D{I=cYTDF3$._tQe=9- /4AfNIfm`gd`5^@1 F z:ԉ_l{@zzබT_$䋧ICOAm5@9@0ItZV\ ߒ/N@~@ Z#Isx~L dz_xgwM׀7'MJH}r":8xUyPdHktqz;G%J* "x S:_C 2'z7QїG= Csbyg` Q20X)V3bC]4n12N3esB=DlPaw3Rq3EP`$JRxl@l 0 7Qtz HsBgw(Bd}RU}jx ` TXQh':rfh{Es~1Vt`06IWXQς@} Be=䎞|B @ v%ҵ uDx=|D Bf-H@4BtdȐ-%}8RJFJ 5oE^%i i(Y_4C\s2n(0W;$q 5m@VUlEwCIpEiT :P䏑R8V^We }xQG;W^A3A P[t8 ?Զ&!E. Hd<8(|ِ1TSa XLSJJ[EXjYz畛EWE_'`dGiB[ K7%f&PTJ!0#g{_||'Ps`pJY,t1jiN;tpQ  @&yeJe$!9WYpE's"Z#4s @T7Ҟ\@Hi$Mש_\@I =d7PDlTlIbBGV"Ȟ ` (~@=%5B~s1eY@Ӥ@ RS]`e橣<}(V\ft`;X2|/֣+tqPJR;iC#HIu4pUyJ^62!gce06&2X;Z&;5$WY$Q5t,VeQ)uE7E$hY0VS1n۹ӊU<؁]vPWZeЮ w!p$EY;5$]J&7"ړlք _-'jGJ A@YTT٭en!]'zr((p6{}[ڨB;pEfK\HPWuO;Y !B@:x=!'K\j;Jn_yޑs+n٤zP0G;4!* {1ytٸGW>n;[U1"D :k1#Tq}}d[J]*QWaWGۻ@w2LK`=EKn;pۋ$ q#@6 tC!BYX65Cf\{%AwscDc>5Iv+'0&@ ;pƤV+Ki Ow5;TJ{Ă?ƶ % kC/dЛXGjEUElī[Ɖd+I 40 D0CW$Z2[-E#ąIJelJ|[aA*FC`DKZЯlhщДE>!Z0BҺM⧪ksܶ3CH>a [\])·ṷ'}qBK˴e> JE)8kڃ,ЃHl݌|)>όʭ5aε'$Сլ [L@ˢ̙C>̬ $i`ѺYʼ$ЂLl{ 8{ʓ/dk'¨*֗Gd}J{lխފw,<ԉ\;ZT2p YuMպvɸ̀[jx]&M?sZMwf{wժ;ݭ }q3=Cٝ=l\ST;OmwrsPףXzz<^-0\@l@Ň`=Wiiս4=VQ+ٖݹ;'#̝x@}0%=k0xlh>x <'Ѭۻ]I:$^3lkʺcDm|;iYT; X&p`:PS< B=} ϝֻޔ|}`b {Elͧ;o0IjA2Rs~U__DJSTGP}C6 DxO2ɺZn|kzx\)s*C^vAFXYJ\z[@rtx `vHiL;Yn͝X4L^i0[Dpj pj2.jtE B}U`kMiӠ^XA97skk*s-+} ~3Q@6aՊ!C0H\7ڋ_,m c˓վy;A81BV:"*6d봤v/ٶn ydՈұ;Pi=`FvKETVܶ܅'ba|8c-  "z*fӡF-x^xE]vS fBC_:vj܈keZ@ "V:gtpEz7,mduK8 gڳv12j"te*v`ZlKV-n Ȁ4Bdr#p&-j` CI|a<:b‰El y}h<^z^-v"t.0 BBUZx2t"<4tFW 4^Lj^j WkW%qF,/3L @P I@ vf0 l&ZذQ%|*ؚdq!B% lbWxJ)ŬH4&Fl`1X04،bbn84D "Th R3/`߹1ev(>_ Q6\q| Fx`!U4^l! .6H#mBɉ=ȁ0<8 PA)o*$'D,1 ˜ ! -<Q 6izc8 @.h/#lC&Z``he0 j0JlT Aw ӁC (A+8C *?۳$EnL$TIDHȃWT F!YiGT0@ Xh$TF- i4Q&ԫ,F8X 8A[;@]{-`OX,VK1K]Hb(l(C (WnHLذC[`Q$D)S4(#3CE}%zP`_X@ƉegFM~'Ҁ`xa8XyO` >o^)CٱsTh)hY@sb^pSR0m\E@YʢGbGѳKR7$m3d}fPfX&rE!qD@U,d\we oH|o'`4 o#fWDž=vs%m^ a ,0 @Я |tؠ3( ]>G|cԉ$Ge{Yp2>99T< mnb"JVd',kV `d[d`0`~9D c&p%K =w̝(D tĊ #D9̈ H#W(H頋@XQ)J,h1LEH,yB.pMWc:#$9 &SBBop[R T|6+I 6F@`gR`0D(X`E >i6Jws`5_EN8d#  9!Qx`4A.ee}ڔ OT3hdW J&5, @(Qm,&F30\B+,WJSssaݭWCbFu5Pd]c"tml[kd&0r=!m.IGD^p*PΜp5[/(~jg.<$T=?0]~hHCpɗM<00ܢ}ǪPя8z@{ uc"oq!yT`7񏯭*[+FA} ^{`bl]}2C s > ϭ3L8O /Q`.(F Ph v殯Mv`Vlf!P܀J`"Pt.7zi2pУǞO6o| V"0p0΁," u!\8;";ȳ>>?ӈd p@Pn @4ATAbPg jeB)B-B+4TeheCC-nlhD{P4EUtEYE]E%FetF݁j~n4%GutGH~lx4HTG~ӆ4IBH4Jt|IX4K4YIH4Ly44Kh@tMٴMM'S4;PK a}6R;5!5!#sctest/view/resource/Rosen Ober.gifGIF89a}[ZW76''[W"k4Ys<6W,wH`B5;~pom➝öu{z,DPBsL?=<3!?,}p(a.rl:ШtJ^0x E.znnNl,w3 vD>| B1>,?4 &87G҂>W 10&$6 bpk $ )@@س#J8x3NlFb@- Í/\Kg$A&Kl4`gX (4 4Cb@`C΀#:`Dò(djGTDJݹ0t`! bΤYh2uZ@x +†='4<=XmaMg*-Tz z YQ>|am㎼{-e\i|`a @5` mQXnvD&^ wf$̕ ߈$(flᰟY\8 ڎg`8xqMU$VA*\w2R~o0C^E1 `\&20i'=)\b)h]g\Q\e` Sr1@ä"@ i',z)e0j d9T|Gӓp8 980CY_@Gf#o_>8>p`e @0i% kz +TʡQm\ۃB.b; N9,o<7E8d/v W8)y  -*+tܚtOmҫ2-B;3 Cu$-"P/,v8ʸMߑZ(8(Q'CPG K0\8Kez@8p@~ݧwCEϢg_A+%Ȭjt@NQ%g&dy ZoK(LA @A uDhD#.nm*F1\Keg乆j!؁)}2h*?p0;4,N%꒗jcPBZFHhF4ch ) qrv 3/e .fsJt .) lYN~KYRx ` S Q2RiĢ U]5 PwncMlT P P*Oj qIՃ= & $ ԣ՞nRVXp@(v M^UO3v ,jaT6M[K p (7_]mkAm .0 k⊗Ԉy0zporm0):ms`䗀k }-@blxޭ P ,ӅMr|;~o>b*y`SX(+f1lJK%p'z{ Lyb0@ J=Q7iE^* '{F/̽3,/<dE/ *40| ܚ$ˈџ|Fo/ Z\ 5ƾ T`@+4@pI#aިbP5 f#S)E ( PA뼳x Fԩ+ Dn6 8 Wo~`*6p{屟;Z> n;pP W1}`;)0)2P74cQt>J, iziVtǚpv ]%95bĂP d7u;A# ~kǤ$ 2VZYѣ`;G~)}ؔf鹐!`:IW&@b}:-=ueZڔӸw'Zuo"PLA2=(v@R㡜AfzG|nVr6Pz4P" cq"ىfg g z/]},air3-:V^B:i4 gxR}P3) L8-yGiikeڦcg%w #J[APQzʯk6Kv J :03+p+Pr8eʇ&R)t󆳰grkDJ:zzk85+t Yϱ6|Fܔ+Yӳ)ber D4PT@麮@9vy6=vjگкQ r")Tц `|p9P cXX{˴r rzH=Asiia! #{0As{zLx;Qqfit]C% pMF l ?ӳGPr93[h7ч+F ("^" lLyHc?ӊ89 poAK A-*n̺Ht \$8E 6"X<0l# B?R@ YrG, q8#7ۊyB=:EbL^F7F%w 辴ئKzߑM8U])c itk}A{5ڍM=L^^9ȠE+tU{FBx)""(&6͒m?]䦇-42;x9 >hF1"P{]Zsmb^‚f^]in}T Λa+o܄cB_57C;A_$BiBH*>Wj" 9tġZ*%mtBMw-]|X_y.S9ZIP9n\ >mαD$c0B_+4% h[N7€rݏ-}bBPNatކ&nJ(I+CMI2?tOC"a9Q~n馤ο)sfIF".c` -PHmN{~_@=IFY]pG(PVMhF+>;J0 +>|8'zuTOkYk5vW?X=ޭ/"6?5H1J) #Wi\0'FbU}ŝ'D.SxK6OF[mGhivKI.I%1! &>gX`s Zoh+0--K%; J?703)Dl Q"VvkDǘL4qCN9I{Xg۞g.LDB(6.`B0z< r rb0[^z6(b.p1/&*.3D8;=N$N \ai2/(bzpq^1APHQ]AGbPU&uQIqΡ0bʄi`a89r@@{8-G|J7)rwqE0IA%O$q D 3llRل@d>Xpp"#`€ȅxĭJĬZb9VZH2!A8@ /*\ᔾ5o:Ls H!'%a@rرC`F^)26@D[\a„Yapڜ8`ab,CU:u֯[m 6j @@"{z8s z; xaHRN&,+РBl(A$p! .m Mp )OZLOA>@( h0  0aҀA@&h((rMDӴROU u9ZAssa(P@ 0!:SfIhߡUV0 v墄=hh \^兎b-|[5nm4EI^ -|aN؁;f`aTxLhx,<;XVG38 "YvI҂MiK@&LS}vv:>z-^*hhCBb3aT@aFM!xA߾jU xw炃`>C rH`@ ,) 퀆\^Zۯەpl0@/گ o?M}~>@Q?[ijxo8p8DHNSfY^0YP7ѝF…750 @CR-|ǫ1' NІWҎ󞳈^y9=;I XBeO;͍@Q՘ ѭZ@hMpxvHC@q2؁nH8u͋_| N´hn:@ TmDV cv$A` ⴇ6H5 dB:"ѾX <H4D s Kӆ2$ YE(D$Nbu`$^YHv@LOJdv/9* q ۠M@mn3%Up9$fR МP. \c9"PZ<! ډ]N\hFצJvԣ=HGzݙCf2Yv7&q]TPf9+|:9,Ԥ6+&{u)ܵs/$C](֟:S5G]pӓYs/:&pACaIJdk,дP0$@84Nf`C *zp"YSŴ2ekZ|DO#R2=Ȧ}alaS^4Mnm&hX{! L0ջaVu0Lj\M: 0H>P4ErTwl[0Q *T:56읍{fHAɘ -v rq;'rႛ¾40{6Qra*Y9%&hr0@7wqp'\0y @5?rLj^`!6\́U$Hɏŕ|$ArӀU̾Xo(icL[ Gz*r/=cnu6aTjDD]z0ms{f0@pAhCAkd]7tǯο7Kp($)U{կ^ɺl3 !G[w]' ҃Ğ~o7џ~[PT0P.@ZAP`i~!p)sc!~D,p9RIU~ `\L]P$eXmeDuD} tp3W0 p 0 p `;PK b}6+ϩ##'sctest/view/resource/Schilten Under.gifGIF89a}ZX6aiSYv//(rHomk##SNK39p7Ń:*UѶс>9+&(AD, !<pЁŠFHb*D9|xv r00%,(X➌=f Zht TB0ǂF.%uA/ap}B7y+=W(f. }'B E֖R%UX8(b ! Sa_r1x@k܍`va\]dBd9*, 0 T0 @up@BX " iZ5 f=Gd3i }1p /@`/oE ,Ap2j z|N֨׽"\2}Njs7"TCu.<}sO<>ȏV.25oE@~('A)@x-P a8^<.@eK$P {I D9Qn4DA 5pxH^@|G%\;#w 4@!p؀m ${݋z^ @CLP &1" 8غt鳗:BR JLjҐt s9Y0+ D!e'h R/|K?P& F fu M; ϚI$HY7Rmx, J#$'N0WfFUKRYuhJ%$f jT|e`7c@lJ͈Y u>oe*imy`5pNi-&0 s͞}`4AG1`ts׽-ٛUVu:0 c>%'F9 x, gi]l`vy~@;/գBt~(xtP,00HB}.3Ђ..xK_7`QSrSG0r'%?;YU-!1n 0} X,?h( *Pbg:G%#!_0PvcuX~D@pJrI2!8bc2'(SoqEC, 0?8]3icla[Uң4b2)6!D@Usx/5,yH4{K;#x2#hl(>y#?B(SH|7(o~ WLt47҉%p8l@FBP!1KC4HQ8E>pE% 3m774')R׳B=qƶhq;<2쇏|~#Mdg%d&pp8?$?]%챑%090hͨFR7Ubf^P3+~Y4"`KBI;}rWL}X2BDNiAL\[qeP/s;.'#02=vIC$SwAPMP3Ks;I q:w[xh`@clL3 &4z'I1S)pY"@EWF@.@.ޙp*5}M#9sƖ s',~ x ^^G65 upH.ܱ0*s6h2-ÞU[o,7֗`0BÜ4`Ђ_"mWp-"s/2E ":>x VyƧ,(HQizbt@D-Agx Bd% "}dF1pv{C4'Kx)(}W*fՅPA bb1";@%kLS8{49nwz#P77}>.Yjb`LN]<; S@e(6@Gԓ!(Kwig<'7~3u΃:/zb ”J3Lg^47aⶉ2(T2|7>Թ&v`E.Jv<ڣ%7@js~WU mI%#8^'pZQY"fi@"bD|pB<%S)0 Dױ3[j 2c,ۣ"M4p ׈t9\?#j8Phih!0IKZH'YJPx'U D+JZIjk  m [=Jvt=c'e9 zXu9DS%NRK+P BG{9$sITjfvM P R-xX< WˋZB7ˆ<lKg5-(IT .:  4v'|%z@Y9 ;/l6{xW0ŨF'$Tf֣Ɇz>8@`o%a;subf.` 9U`fjY\܅ϖ$"UzYFQS2OTf$1` U/|!\{0UN%f[SB5"4?S!";6RY'aQ73dJe^@uIe y\u!4?!}Ԑ:6!qoII̢<&U07?$W|)9X8i,WRi s E^n2*Z)b()}GFagoQ>~3ſ *cA_yF= Լɐ>+'` < MN{" =Cn2r[𸑛2jyehԄK0Joۚ:\1!p@!)ގ}"\' 'p:F"w6 =0YL=sQ}7+O"XW.\*^T~<<;7%p0[=NՎFUo #<=Dl Q.> hyp]SUUXi%qY"\B!߰&@'7lxj%>CqFhHMMG"VǓ| \<(@4Xp@‡sCF|`A:v`- Gp "ԠZ")h( m%L|TGFL%y.YpO ..xI4<9a2|(Z40}|7pa4ݯ0OxC4lӡ>\028Nxps'O epr)T˗ٴ=81Z"}ucݺwxPu8`h "x2~d5v glO$t$0Jׯ@'P21p*ᱍ 18:,v "კH oX@TJS>ޓʝ#/2;R%wXb:Dp抰.č :C|B#J o˅dvaD0j/0k~FD7 4 >X)+ƌn( I΢NVa5:`Ġ2`SQM5̣O&T0 E DЄ8Ԉ0=6D6rZ[UՊ̀h8AXPC !^VRidlPHɭ`k .UvInFJ1t )/FYeSe ޖ8*!RX]2E! ͅaGp%k&`XzZZkfFn (Oyk:T]h!dPpENW +l N`vUl9 o=Ab+*\&$8Thm^,rE-5k`Hț8='(7oG ?ǃDymD9 6H}qpO ig"Y0(t7`~ѵ{ M㋁' mTje(u=_&CY`ޔv4 !=r2<& >eԠ4 0[̠j,qK,z= '<&} rfJLt`@@Obh5x NWS g/pKn3Uu4qxG D+yN(@>\IiI:.w9)Oz,8h3iH@@\6ptUO3)pYЮ.@ DLԒ '^Xy ؀<iWp@3AcATD .0ewY-޵\A<٦t,iقR92 %In{ַW6Xx?P P  9hQֽng3S׳ b 5f@)j h k .U[valtjX fjgTKc)Pa Wi+B.7X(hW?kd_kz@ hP @H @y cD50L_Ƃ&D\vvΌ0  ;FEO=q?Op2t9 -pԌo PǸp{t93o.  t@5`.gZNNM Q| jPuO:1<~.\|`2R@jo .*$]`L *!R Ȍk '#!iq!@nd)(1'2)1(`&*2[0\(R("2,Q\<+a#2.r.r.[.2/r/r//3.H3'V@ƚ11!32%s2)2-1ganDi3A34Es4I4M4Q35~`*5a36e;~4s6us7yTl7s8S3fS s9343:I5:3;A:95s<|3=s=ٳ==3>s>3j< ;PK a}6c22%sctest/view/resource/Rosen Sieben.gifGIF89a}?IQ:54ba)..0''nnkPPOz& 嘘01O'EttL##&xxsiNrKK@~/@??MGF#^^]CX!?,}p(\4|rl:ШtJ6<,'$ xL.znk BZ~~ 1 u 2Y'zB1' B :-3+ 5"7 π HUѶс- '"5ʌQ"paoRyV0;lx[/"`@C? v *LPqRG̛l JF ɩ,ܷh抱Y6N}`lpV 7Xv<`M o @A=J@!tz,rF%p,tq5- 1 @a#h$Bpudi0%-mKi0 p 5%` 2Xv2CZf9B 8B?z5@ 5C<b@(d $ fHQ090@ 6eHp6Ծp ~ bAz+fB{lo'k +,@[{C 8 k,;K݌z<"CS iBp/lP=h R< ; NC2o@(\|4h $~( ^P*ê@؏@u!ʟ `A `b E3B!~6@A v 6p4 z0a\X?'PCZ C+JL}&L޷ dL$x%n!SDTӰuqjZL4{\7C0JNF;ݾKo  40w]xhN ؼ , hxں-3¨x GИ^`;Ms ;A PpO2ghRN; X5uoC'MGB3A N! @`)^y,m3M(A@ !9ݳրq[\;hp^ hء/-XU[(b4c  T|]T! 8 IuXZ( rU=(8po-EYn@r䨊7]5*\ 6: ދŊ4((/ۦ*QF>a?%ꪺh@D`C`8,IGomȶsX9;X m* db C%ɀ yqn͋K8E|!)H_$L-W+Mj^S,P< !}@aBgHeRׂ6 Eg/2U Pm@o4N#rq(PϠ2r怦`6LA:P 3Se`Z wP&r[3NK;/xK4g1nJf}W]1RD @@c7 -04=-t#0B7 8mxz8 3OP"H~Η8+T}#$Lxt0"yX g7.T =eB8\V07WM~%Tx~VXZ-^MdX^jȆ6"r{@&r2Nvg|LJt'|p "R/:C W(1 p2 '!khG08o" P H5SV5z|*'3xxc$R>4pP'R/0# ?J!7+ Ʉѷ8iCE4dy5's6pc p ;08}OieQIEGpR1T d)] [TF`k<5MSƒK'BvG&Aciy =*,v.dG1 -y59}PfA{fD'yq;19`ti7@ҧY?L4#<踖e3SEBc9`FisrFnLWJqQsy0yҠyto[0(? yW@M&𠗸TV@tԘnE qyɢǚyoca5O$G> '$ Xfj1:WbUiMU;W5uuەj5]Gz٨ /flL]2s4@FD=Xw܇>+{[tR&y@ȅܣ,FC;l<2ƃ\Gɶ;{'< F9!, ȸɞ+TKVNKv>lɺ4Apq.5Ixˑ,G֝zIř`;̜ɫ15ThfETWL|Ҽ 5ST.DL*@\+@ZIU#?ct lS,HlS!f,8&/̌lp7VT?BmX;[(PLe+m?WB,gk3)0 uXL. A ::C;=0sN5-F츂pz@Ef@0XN8,h:<*\0ր@jy5'Q{׋ƙXMҔ/sGCl8=kN8/P#"smsBL4}+@軛2R3M,P֬.J;:dOuHч_.>pE۵]mCKU+i$݅hk;8*0Acތ J:d3$w:݅2VЗ }'C]VNf ;pP6npSCC H^C­g,W}#n5þa 5PZK:&b0k)1u;Wlw8`L> WJU܌C ?'Sq >W<@6DD4TGCAp"0!3~cI5ci&1s&0 3`C_$]fr6!|K 4 wnzh;Vش4Ttv^DkDdt ]Ji AP95+H Jh`oE%= gR pq)k۹ M rzNsP=X½Ev" uPü3hu|f6V9Y;r.- J5R'TR*cl5U1xw:kj PY BISf s6MȕQW>3`6:순 \$Ü6b8%WgjΗYʇ~9' W1G:[6=N1Q^&@t&<]5v^5%nI  OAԭf 21X5| (d,B4uo,yP <^XQXr^ltNbtLrLr2.P zB:DjTz Vt|xnfu;4F"R Yz4D:)-,590JrX l",X]_MD(WTdLZ@"Ţ@D VQӃE$+d4!P`gzM!ɉ aJ)/D0h z a&fr),dXDe` @ hbC l=Kl'OV,@u&US(NH ƎbKV^˜ yƋ2d%$< nUK"'% Dj5DD N(2;1y='ءWkVdm'+3AL\++6hh#Px6 ԡ!*h8Tx"7( DX~oѿ exL X ?," E9b?F2 vEXK@Pq'P+OD-A\e-VdaSNh_I-M g1v VE@ THa|T%a6ˇ`$_6::A}Wk=@C#@`L]BP B)J]jOfVXa+J0g%f9hƷ=~ƚI<F(܀#!j[;E9@^(|ZXtBra33*o|_|(`gtrvw_r1wuY ʜ؅.U~훗ć9E '^wΩ%dsϛ@AB0>΅F5ФՏttpF@L1 A8>{ | 9(ͩ`nmSZ0~9 QލX #p"t P{!!) !j~KZD .L#1M<V [8ʑCK1phEANrܢfh7E^фQl b4F2*)+iM 35 Y0344UQ?NMN!')X w}@pvd[`@@j *3`@ dBj*5F vZNׅp@yj`*h>zhzy>z F8(F+-,B%jl; Xō0³'>A;y\B'|[@9^ oȖ !02y f &2 Zu ̫wˁ0tZ @ 5| ;@-pgڈ 08q8(dP`r\-T M{03S $m\xП>zz(S͸(ÃB은~<r˻}>>O }w t Wn<3 1MI@6󹼕d&']lboZ=#8 LUxK^ CF-2\Y|@n]$L! } $As0iDD \U1L  {D?[ɰ Q#c "p":#xc&C D~L`ށ|D$d@C1a#S4|AC(x-jؤYFMZ% 8HUրjPHGB8Bd &'!l&WMgBi3,iI? GZXdKocb$sP2m@Lrl4в8ApecQJF4C ez9z MO;X 6FA@SXDYRpPTdE`+bT9}Y04 b*fKdVjz \V$ny^tO*|B 8Mh[9QB1 5#ڙW2Y";dn5 F% |k*@'8*DWBQ*љtb~I!$VE tƀ0oa;Js`er\K LLZjkY+_P;Zsj0:ţ 8lH(Hn#~D?[ vw."k{T\7{H,X^nGB dvZxqyRЇġ0#ֹ8 ult9 {5i-7쓃'L I0fL`@<.;Wr(&dO@Rng<%!A9 pa? H}#`B4q`Gc0s#p(%UdE 1(>`XCMC9b3# lzwA"( 1\~T1_'guЃfycDX# WJ3Si~kX(%`&9UfRvӑI0,7/0Nx>~OZ`1ُ~|YD{cNIDx@1QL7"1;EP!XF8 2;d;%8_7`:RZ%x4XNV #47JEB( ("UOd' TDtaj4F"TS߂/0" ŽxS~PɖȚ$i_O5GI!|ԛ&LP0myJ)msPR3D}9 P?Q2,mei8&ie:Zs4З/DP m^)huQF5bJScrX?yP!K}i՚:X#4 8rPW> ;V >$T p5`E\74Y0sNj)uG]eY%Y-4&(YJiU\f\YoBY9\>Zd]^Y\YpT58eX%[eYek>Y]5fJ}S)ŀn*Ћ6\T\ejeY'F4`ڪegCU9u7,O#v֏͵&F#s9X+1ehuekef'5XÅ'(' $ \iF{g5e `Ǻ1 WKfgPCxm0w2d;$T`庰^]sEj' ,;kVTVj; k\Wm2 rx c6I5#ڥ[۶<3gr& AOp>p9&ETp{ipi8splWd%pqYʷ ']O Gn[isofn%0q&#y;qK|" ]KOvT}+mEVuuvJwqfiv {prp yGH H 3W-KGp|Px ۾ 娻gvvuyvq7wj'1CYC"gNgWRGu`uƛuOu]e+ w25w๲t&t+l gf1aqQмc G5Sp W g+:eƶn Bܣl&<|k(Ab+2kFSAm0!L|W\%ovk鲥Akka{=Z0d-]ua+b;I5a슺QB]$% pi0t>&\ЫU1YkX@HV|\EQB0٩(Օ|Y=1E;ycޙCM߆/Oɞy ɇ:׉{}HFyȵM:J NNxS<6(ν-m6пJڻtgP]ܭiDKIuII " "Gd.M&Ƚd!#I6eY 3uiSXt?߹ UL҇#)ʗI*؞KߢvH|]{c@#3.y?!7$@^ރԏ[IHy8Sj-q5ԝDԴ W -P~s=YO SۦGᵤD5)S41!?^W. pqFH+i 8DT#My nv7F芓 %OCe\荁n9Df8Yhfr)m-ĨQ33E jŅ<9@Lr/xx@C1& xZ#,·00עÏ-.GH2ty\/0u΁ҁrb]IWC(x@QP>.`~3 $P$>"g%;N [\" O603_,?+$&A +|0tN{.13`&e;Cqw)^HEHͼ0`8=DJ?*|N>21u9 Dl)qw1?6|*BPCFJb |_^@A-mkfP`orF#={*tdTקwѠA f_&o2B@wRrbąYbtr TY<+fȌ*HfqrAJ|p xag!P c10@Yj6tKJ;сLT}p,0H h6PAN=td&>.%Ap(Unv pLN2@Z f# jnSE/)ތ>|ܣ|] a(@S Na!B;m(6ɐ="#"t "`$"8#  n>j?|N@́x7Ya$"Vo Z Z=\>;@\FXp@tS$-TޕoIa(%IA#; qT_k`bJ]S^!KQ{y6(\#pC2ѫr @dUЂk4Bzg:-D zC X4pLUb8C쮈s_#b%2~.SǵZh-$)cHb@ 3`F  7 X@"6>O);d:Gg^$$</ָ3[z Vʶ.)\C5xK)KV\HoHA NSf| БӜ %IIzp  RCJ-R``dȔD *} @ Q`F nj? aMD|K`Rs% X2  OY~yp0%AڀbdS;PK b}6̧""&sctest/view/resource/Schilten Neun.gifGIF89a}[[[RRRKKKDDD >>>!!!}}}mmm111芊&&&***aaayyyiii555---qqq999uuueee!?,}p(rl:ШtJRs 8 ^iL.zn݄B*`2v9Z >{/B!9B6&?*' = Gց4)6V))*>  3*,!|q TP fdXC5 CzI$ē(Sɲ#eT `"p|c@U ˗ 2DtP8+0!ԣX%ʵ֬<(fvNW{h굮]ag ( -#H؅ܹt>\812|%` $n̸g_ATrv`aĠ?˞p "[7vH8=}ւN-,؏#WY>_Vc յgw˽-9ds^  PQn΁C  34P]W@ 0:d% ŹGHx4@B&t^A(0@ ,PP@3W ](d'uCP 6,Ѐ @>/!X×~In6d6 Yd /@,(}"p"}&9av'<)6B h%X){D jc]Aj*!"}'A 8HkJ5"`A| ؠpx&_JaB {e Z  D74gm^B `` z|I1uc, $ *C: ] ,HE 4*90g-+ :y+D!c&'t{8a-$o 0Ȋ@^u `@|е8l b">H (, K!4@({9]A\;^ IPSZ 65xLPR hnnN*_g(<(A5LG#`"Yo?.| 0_ =!Ȱ l ] d"&lH:$ O~?WUm[|51*0L[ P$ 0?,0i <^ ,PP^<Рlh8_}%@ Sط}LQ3 2@-qY?~( `E\ l`"Cp3E:h.p `cn2a6QGl .p Pȣ%8E*@@ E/>a4"ȈCXzPc?$92 i  AnQ < ,19Kס+UrLUp>O &7o0Ǿm1S@K?X f@gEx'ќ@Dg%/WO VL@j6{TQ" @K!m0wsPU]3(K1m$e"`"b5ttE/Jd!+^kalګ28X+4{9ճMhV.h AVKQQFZ3$Fn_jZ14P."mY0#wm9T؆2 R0 8-VX@/YQy\EE,^of2Sݙ)8  !䖒*x3fL'F G-;k/>d0V5.׍+4=RZ,< \*Aγ`P- @8b+4˃A`{we>cԀUֹH*lbw!4)|#@ CFѽ fVa usp%Q7:PuU1{܂z$umM1CV!`F ZO2ɷ-IsI'lWހ%Zܸv/^9@NMo{LԎ* L:l?uĬduVpރ2;f橹jTC@TmeĖ%Ř@*?F R,#KEhC\Q}OtzεNK3'eO} 0@"]74sÄ8aEu}$oL$@sE!upȷ+`k !> xq}lә쓞_oPB=W۱UvU{߇R WW~<#|V? :`wFy7}g}j-MfWw{8~:wWgB~{OrցGy17':'5W{ ˠ8ׂ{W B؀EHy7<9h|WS?8p>]8yHzշ(uMz awO8@J#Xw!0OI!L|1%DgUN|B/X Ra\5NiDw "KVSi- w#va": j1~\|wS=d'2:]ࡷmB:-}5j8< X qHSXyD?uS3xM7:C$ khzX;Q[ʥ^ =d)@V:X:4`qZMJ91J|:+\JNʣR:p '-$Тu_G$Qz{4꩟'-@*)sby)JT4P:= jS( }o6AB`Ǥ%+:!{Cyp ŠɭJ4`*Zx0Zs`UJݠ`P+Z #*9+ u)Ixo-0&N0TL-}`GQ (1 +9$'k"o|'d[#@Z N6>-j%P;RW !W{]# ;;";?8`E0*a lLv1BTˈF滩N7 ?!X$`w ~Z{|ճO.3&}Xq0G0W0K!\TZC6qU%Ӟ9k$+,wj& gΧX\   GO&/ ϫ5pv0al~S5h& c!r4QZo$U @(Ӗ̜&هpU.eFIK-Nænbʄ$&CWEw(B[*|Dt^X ?x5%c (d!V=3oqʎ]C.kG?+@,^ƦI d $5s/eUר X稌u90V@3f^.@9JmTz!WEYR8kWM(GRhĚ'+W+\ݸ XQ rf!#O x\2EXqX5g0==Rw>@mKYw=PO(jݺs7A #q%*dBNkB +=*Ůuf3۽<ݰQ01`^#֊$>)@LG'ωPI7Z|6-Xe\Qss(}ia2:ߟ99Bf-0\";7NEboB?5]/<?@n/ V_ߚ/wѝ # /?R 0(_>RI8w .0*5ݚsF휙r;zc\y9 @9g֩Ϙ/ )ٟ6a `2f9t>CCJEFYj Yi51X2# w=H *jUJ? Q$yR89 LfN"beg jgoa.|<V^jmkkut^b=>x[!`qe{SvGJMQMZKt0-DlF &4 BJ@̴@I*?|7ސsBB):=9QVlEF;ZLHI#9B$"ZTB9*CB Nf8&=Fx( acAX@AZl9!BD\֚bA^IPgFfcf̺qǥ1Xh30X w, ؉h۞v!Sө%rSMܲHP& E] ͖lhU^y5$؁4^Jh*U[aݽZbhUx,ozA ˁNUNء`AXFpsT d [oݻk$!+pw!5$g᪐! 63`wPT#!8Z[եHo{L>t@ (0( 8X.-xk\>G3ֱ{C8' fvЂ xGj_?oT@8(;lЀMlcL^6zd`B9@cx Pl S` Lj$~<\"~ȼ'$dE5MEeg2 ~@C,T"ouHDF6ވcX&3&0a N$AJhF#IBZ`K T0@Q`PҖDI"e=& f$iA3y@.hd@^0#06!P) B,GDiV|^m`0VYkVR?yg nkݼv]{T`̮:޺;v%Ί%z$~FsyﰿNFwW!_N9khMď^ǢcppG|ʖz;>\ GϺ\]ҷO?z({Go~Do<TaO@ s|ԯ~3cL?t%0}ؼO0B`X6P p38@fA1W3@cqOSP]}jlP< -}vp ]&F*jo f b '~P 0dpjfJlR 0S!A6-4 Q3 gd^l(7 P 9xkR x tpiy}1q1J`@ F*QL1qqYBMSMђ1qٱ1Ӏl1qqq RM !!C~"!"12#3"=2(G#Er$Q<$shH%] $eBtq2'ur'y'}'Vf2;PK a}69,'sctest/view/resource/Schellen Sechs.gifGIF89a}qqjWc_+Im;"$>24 20/1YY<QN&(FݶAKU>=5UTM[;yyCA>Pƌxx2Z!?,}p("4rl:ШtJ2,1bpxL.znɤh ~~ 6utD&3zB%?1;3(p(9ѼѶ1( 'asbZDf#Hŋ3B @F… o#Ɠ(S$ ? a]1F\ɳ'd(O pDpT>Jy@ e7A&(Q^zSx2 [ƬbD v ;lam*^̶1l6#1~jmS&ֽ7,P TfL6O^5q1afSsak 8k׎a3JMD.l_(T8p`̜ Ɓim xV^m%(u fU}%BDu ]xUH Œ j/6m66H$X`A#;̗Xljz d @tIc^0xݶ B / V ;N*R dI$%BUjФW@<0p.(@@alR<l¬^~ɨvK;3C0­BʉdRC >ŧ sEz  x0Bf Zךּ; hjh@"ˀ;iAɦ`@7}mfGYh phڃz$]k 񉊜<$2u]] <N}__'+Āj|%Ķ MS^G: {GPv #'@6%` '0|@A}-o3xd~ Z l`.a֛ћ00B M XzH n]87)x94n@*yp?-H׉z^ߛ4`=] R ~7l_x5~h_W N? P xS%v@9P. PD6uPUJAI#DNkMɐ*З57> /ć:(CU/X(7cHjR˂fPKd`cT H 'qf]*H0X^uP/غѾbRo@[ vԼڙ1N/&%P}M BIb9TY` 2ʃu c'Ue]ʔcaQIx7JDAw.k!(~)\ gzpd]#PѺ%;gBbƫ)䊸XCQdK,XZTX~k *Fq”jCu@1d|gzAnu`[ ,9'+21ْNpd'k3ì>P"i/Sj5, C iPe3])@5dRϚ撪nl+RM ׺uH_MZl+6U"lͶ B K1 pNb.ff',ż\m8`kx S?]p@m zC~56*ǚ@0ʁ8\ҁY=?:w:3N[XϺ!6Nyϧ^g=9n~n=^o'o~uuG_ү#Do?=џg~k 0;-7 0x4*uW}+@ -'sz hr#xPf`>6ry 9P6 4VM&HO 0g0/ k7|J3XDW(60#,_(eQ#TZV*M7h)`6B2&G 3{)7(/SfVQr(!90u6sΒ( 3 YMX !@i?s8&b% (3Xt7Thߡ Y6 P'`$grd16=`$=_fpk YFnmpވQlT' 3ɈB62A`U'Ppϵ7.<=BmW& p+#CIH9!ՄhlV `nGX.@"I<;(RT`L)`p+m0dI䈂)cBX$LpHQ)7Hn297#Yy4`.`3T^9Agm[fD2);c4۱S@VXۃ@N6ԌaTAA֗yW CdBs;7١CLc4GIpVR4+3 MTB  ]D/g؉,mhFPfe,Y &`I|' CcJs34POMCO[:`\e[2P6e/0Sn7@j.N_EgRXOgfeY_L`wW]7?bV`o4u,U T-VTP#b[夜%*/-ӢT7Zs@]2.Ե\u[sF)&`Zb0uVEQDx5/V$P8heCp 5`C";Tb[#f&PW "懀E.)*,%du07rceh" B<~D!IĐIJO ų7T\VwMx"<ĹZiŋw?~joypq&w;0_w @rxoXjv`AYዻ",l G4 hIpo$@,NFk'7u9sZ»V<:t{4nX˭KO¼䓠\j;lzn̮<0X>/ߴ!s)Dմ:(/_E?9@S߼s5阨EXNXӴ4yʔ0=3Ja`y"Y7yiCAf OiA@nx)XNA=?]=3&+8POuk>4t~c<꒤U B(n9fE!>+26?ٖHdAj|3TN3£)^-r1Vk<嫃:.R1OX@c•K[sO=q-bJ[Soxўَ6@EQ-2lgX/d.MBz2 ^A.gp,&ό84ηAЏu'Hh߃ @X7  {"0t'"5bL-&1DUJ&B!#$Es؎̓&?I3- #T"ڿ1!@@ I%ДZ^,'` N4GDr^oN+hTZ8N@8b40.``.B> n"̲47XI !%)-1v^XQZR yfl#"#(< {9SS_aehmirc؝ӧ9h^i7`Ax^W@햝1tcGcq L/`fMcpF!UNo&Uzi StљZP@ H@1f Pm[o;.]w `GB󀰕paÇ'VqcLj( ɗdּsgϟA=tY?b`Vukׯ[dطq֭>-~$Axs;H>ϱgmCtDk?ގFcF׺Ǘ?t;PK a}6O>!!$sctest/view/resource/Rosen Under.gifGIF89a}'&ұ42s_W"Tm3Trl:ШtJ~"2tEL.zn[3'c =v;+uD>{B;b?=+*o"A\ȰÇhBIKŏ #0;! 2 @Rb>7I˱nj.D谎eEngG`6VXacUqhZĪ]s>PڳG<tD Zя`&`Ç q 8 W<́ݝbp8@ƅ$$}2޼J0 Ri=E`#W\)CT p Eo o{x4֐)57c S @C ށxC'@{0PWgׁI,W-#uM`bHAiw@+,X@jp`n<e@#s C9eʈ>-|` $@څgc(YH(򥢕 ^ߢe@;`7`9'`|f+dt` * @6< YkFiM쥠giW)ꔯ+; Um,@@nՃJʚ A:{@GlmA%J/9QD_lqN 9 @"[{Q!v:q8D@Pgv21(hS=XYG/OK16D@ AŞ xɆzInj8ۨRGN  #@B3uo _V ,mۜdKVP$OtR"G5. )Ǚ ʝF2$8&I'@f>?( Gx1 p`5FY={aU+b  j&h`\4w7d&\"՚@1bQt/癤z X)P/$^L 8#4 rG֑RKLQ:{/zH DrFԮL)c'=Yx)r V&AGJ | f =hZ=`.7'Yv-#"aԞ"0!*8 j.@Lg/9[z &PH`>%qX2fЃ3m c6,zX %$hУ(G"J˄^*}C 0Qi} s$/Xh0!NrD zsdKKlyQ>80L &eO4W 2b +U~T' 1;^+Zgx `7Űb)>).EbN fԡrv=gYCKҳ<#N Wͨ60+|Um[V4t2p1K;]zTpM1lv g怞|rPb U`|y;_`C6]AR>:ЁCLd<9c<5@YHrt*,{jV灙h-K'I8B<L`gu8:V:Ҵ&) Ӟ8 u$FԘJEw!xFcc=4Y=Zzww)ȓ\>ʌCR @)n ~qo:`s]a͐P.36y" 5ՒV2}-wWQLB24rBh0xi\݄̃}?y(w d xm ץ,?|]Y^Gx7/铝}v;4O@xq8owSgjwpyk>?kȇvS0_ ,h#oT@ﻁ>a[B>I?d? FY]{ > ý%sh},t6'$r~>^'3J`WxrRleH6G01xsq /.l>w}R{r17p|&ju36w0u d@p D8EwyS670!s'&pc -XxuPqV8&2m%lZ[0~22'A8p08T'u*}}&(c4J$PhW ~iMɔs*MƄA3`czڥ1h";BdQpcju$.00  [ 'n"`.P2kqgh;t$뜿*+S_S!2i5{ԙM>20Uhh,hxkWcypڈU` M6Yp7 1xtɡ$@3dۯg(, W"XRZ}k7A60B+zQ7h$(Nt1z3T;!!rHShWBR 0p=my끣tUCK`ʽ'WGoSBO"6$K+7&s;vt&{h(#SeS" U;d!a*Цe mxҾ;Qu;PJ1zF/`WWH_T$<>]SI&Nvt"R\Ɇ$r;4'{2^,2j @#ޕJ6W2M_4 KXH!;".~djtWG>{>|H8| `)xPH4<5:n"4"o>wĮ <Z@u,^5un 'V]@> jP$SӾ+Ba!Hwu;`1$ @5DNR9 \bC~Ñ'pwmwjתMֶRH\5]w M1xd\ jWo'v[ˢ0@ y|ɇGrm8+AmuZ׳䚲j\-2-2o:niTM OhdRxqړ]k,z-8ߧOhWݹ7H=ys--0EZVv\k:WmnڰZ7 {2AYNܴ|WF`%䙉`ʰWv7:JE,nMp>Ҝ/쉜Ł.&0xڢ;w`#qrgF߶kyNͮÅ7լ&,pIp* cd}q ŦE|bxD<=`~ !,ig~Ä;Ky)qr*A!@a2*䪰_ydtc"2Lʝ9WiFؠ'0<2ZZ.FQf! q2` i>sENF ,`0]#zn"tLl3`dJӫ`3 %7P`Y9*x~/wФ[\=mJ A&bN|.@ KVhi_<46Vxl w*Fo 25pku9^WP`l0qruGxߜ`}}݁qݐwz@'3=9rX7{ ɔXp BiMn UclK֕*F$E,mQtP/[mughh~^4XG_t2:sWxnJ1RT !Ф & qK<$hbc2$|(۔&&ҸJBeJFCRV#qf` y!*-/75';JFNc0V` lp z{6LKW h# -ç/)( P :\7N4H>~.b" )R)NR 4d fL2Y)Aի%O>Ab%V n=02$ g|faKE:noA |EjL$f'8~ͺɁb bJ;|Is&M dv '=apw C1rwx:ɕ`y;LAARq!2 1īBbp@#8:@.[@>К>|4IB@؀>t q1d3`" CNNm1R! Y$"@ ʻQ-T17 9R % p X .@` hQdwQL1Q Eq9H5G␾#ߔo30+fвEPD LPPE843d`5W8U lxbrGdE,O 5W]%5M~@ &J: $ VZ d0Fg:>ow5Ua|.L]6{}Ado5Lx\_ ^@o)8$H jߡEpye`PPV" D:䏍6NV:efe|@9@``f.T;WI;89@(2= 3 B7x |AH^piMQNqGˊ@/t"P:< tEC9/Wfh'`H ׅA>8 ߿wmeC- 7&@@-Ge} @U:U#& @6b 0BЄJWh h OU@:@ `$| jHD&I4rDOa t;` ] )PNl/Ȁ +8 c 7j#H:BM8 /D`@8@I"C*(TьeQ VU4/>bb9+Rx +H˒I$%񸪰dGRq`d `0`; DS(UNs|6ȍ.p-/ 1ЃH&`TTHHԋBz: g <[S/ vZ 8UR44TS3ڀK L~#AF?:S+`H T˘UvȪYVȀLF lyLڼ ؁ihK/ix=bV[ ̓E< g+ "`?FR~&8ku(XiuR}-iف hkW lo"З;R60|KW\qԖk{@\\l rp0Kަ}]E. !9~g\h-AK>y7v)\`k4"V[ D7i{R .z ,W#iƖ` v+(bYXZ 6ϼNOejyo'/_fɄoQY6__:g}^ Rӎ<60UPѢӉb/ŽADŽJ_Ӛ~ia}\E - @,l&V EaS/Ѿ43s5 Xv@fƫ}tvIJ ON9f#N{ ,cizk=XIV݁LXIn߽lk7lQ+e+EP8F0CڕipLś0 le3YX\;6[\KKa3y+9V p9 B7(~z-'2y,8 bcvpعBh|c_~p[;Tm87-wzYHFj}9<:b*ם,49 */`%g7 1EظZer+ȶ>s`J=s 9%0<ȃĻ]o~}9`h=[u !+@W?]e#lr`겆Я"f`8 nrϷO=n&fQ0U0̻.50uҬhV0uyfpsHْ -AzBbg 0 p 0 p Wqp>k& 0pШf9&}13B""FqM1)-~`=A z@}BQwHQ S1e&ILfuQl'&*1q Q~1;PK b}6h:oo(sctest/view/resource/Schilten Sieben.gifGIF89a}$$$===```nnn]]]QQQXXXUUU}}}uuu螞EEEAAAqqqLLLIIIyyyiiiፍddd---999111555fff!?,}p(Rrl:ШtJrX1&s xL.z~GV¬ ~U #X. =~b# D%7i0C3_,$B))?<1k,+*i*/ih=)1 gg):.#((e30| "zXpÇ)HHE/j HR\ ǎ0cʜ%˕|!ÁR^Aą.֤ɴR qO1,W:*uJ٨,Yy5)-|aDbr{my{'kvyf;nJ0@Ϡn,  а!%MٴXױ3 ,1=+7b]8M؇oq1mCl!H0=!Pp|@K9m◆i"Cqŧ! , T~'CD Ąhp`>,,0¨ <ȵB3pѐ PF%`IBv g`4)J)ߜt)\Õt M eia) v` 41d`wB`饘f#Dh#0< Ѡ`UX@#FA\  13 +, pA2Ȁ jC#3 n >@6:Ѐ$80ŒL:9f S):, qt@ *X-DcC.j0 3 !ū1 7xƃ[3YB+Ѓ'j]4 :pCB<Kll4 v[.;i޵,w&r')0Anx>1 ))}N^_4F|?w9`t>~g m7xgU}%{(~nPptN+P'rbjq'zGwEGWMRDLh݇x^{<%Mw~Uy+|X*$_W{vv+AfgN6=QddM(QbpRrAWv:8W;@SH& u4dǢNƁ'eh('0LNH'Ї}-p0P-cYZ)x5Ո(&9-b؄|rԦjG?(%|8Hkw!bՄ$c3'p X-td>w @4ph <$$؍؈lOd ikbEd@(M5BNx+1 7IXh(Xn ^YO\Ƌ؎ِEDd G O yЁt  ađȋDA(9&[ |֏5I!w’ K ɓ'ijt8i]UyF*TyM.DYQP6t9\R(UW ?YbJLP@eigE:# a)s&B9|'842pX|jMOY Fa֕٘{(IFyxn&RX יi-DH}(kIb9Sp?)X/y@ yRyٛ Yi29z G_P3O80ov鞁ܩJIy08Y$IcI U*@AJIٜ!4<=.1" _>РJi='`բp4:QœYj 9J Y-6Z@",;3f;QerJf^fjʢfm!"2LhPu`F%E`t`$f@O>CL950?fOV<Î/qx.5" S-3H\h X1GWR#"*5X*(2Fn<2C0:JKB.@>o H ٩oY`PP9v."s/Rc0 nkj&ڭ>h75+Iie$e&"s$ F"# #@/E`6ޚ6$@-9Z2^ KQVS; T.S2Ri'tf˔;7EC``5U- (?eP^ L:?Zi гMVL;&Y/`IS' FH>psO[a&EX } f]LBC!@fg j3Q;/W"0Z+3u F!ҙ>zhBo, &TFn&aœ' `q]ƴP^`55vݴb>;c"x@%kl>&@Њ۸K̄ҳ뢬"2` nVD Jn<?;u aǫ;$ 25ڋ /C .5.I› `E9BaR:&T[S855l &!l3He`K.08hk !P`>exݻ&V 0Gpz#3ĹoX%<\WNI(F^u4/#pu5$W»G/^HtM3)&OƑk%7=2إ oYU|l P`t:E`u6Y G+ \W&5ɜ\kklP'^zQPy`mVyxnl q&ӤAiSL{?u0D,\8cLkVP1že){,; f> clnƝ/Pj0ytvx|ilN^芾.~>^閎P|>mn꥾ꇮ~>K9N1zNR~s<$uu߮'s@=q MRW &ܾrp^$Nk,Wr>WpGs(PnIf嶇%P؄qޠON2?y![/amA'7M$,h/34ύQ`d-P'G.p0]ۍBL":,>Z O;Zn[kDB$,B{Y>tSX<ݶX>ʷyYX.$bQ`Lh.$n$BLHKMOGCDVhZp"dhkgeijR:**R4b2#W (-/3/9={|X2 OO@>bomq |Ht\ p5.'=ǔ&MA!gC; NHxp!F0PtH)}WuvSe9La.y?β w.n"a A1Ye?X*྆ vl&P Њ9jt HDXLT7j`/Q8ŎgH8Sf#Έ)h $o,d*C@]Bv 1'WyyE/&1%2 KaVxEh Lj/ԹD PCadv7l- , 2A:ȡD0𻠅Joiѹ Dp{x@A3 (/%M̫m;LHE{Nx;ddQK-7 .G q | R,s\p{_Η}_: P/V6P!a G8AXMJH!?,}p(TfȤrl:ШtJpXLP8`xL.zn " !~~01u3%X-zB-`3? 7H5p5":ӀGTն3ր7!`Ha(AuFS_Ç#JHh( HQ8p$"PSKŗ0c2? QF8mtPJ527@pJPcֆTbvsJ|o{Vu@^@G _:v`ʰcW|9Vwx~m%NLΦON͸:@AZv(Zzg<+͹k-AYTm]9Kh -A%h:(G@|^t"3Oy ;`U-0d# @c"{W qTpԝ %pqC\fEFꁤJJ   pp œ O0}f_10; B0q0:*jkr b@ ~I /: w>ikj ÷0lE!6e>; #c萣 @f׵GfkV6~p* * /  ur1<)Ѐ(_r)0P /0 *xxp&K pP½loNzx*ͳ[6>-@Hw^7x{ruyc80sC׎gT@ {5&c(k 5Z3?wS Vp J. QfUspY,=e"R85J?P~5⸡EAd@f7 YQ *{`:JQ 4.1 Ri>AOt* A JH7xxn d!],=?<B!U QTDcQӚ6 ZP!:(JC0=@ t}:y(:\URy5d*FȺK3lYj[e1т(~`CQA jƘ5c ev.ΈBfRk~iBElauz]du'>(Ji5H P%W;>s `{y!Wcͷ ntH1C5z 0OP\  K{61K9k>"%I\0- ܧU/ۤʥZJ;*}9쎂 *}2j\+\;0Hna;E\hD%q,g+Sέ!v $U6\AF?p@5Qv0.εa%> R<9vCqeBIƛ,fŮ= d6D ƌn\N2H#$wl}; `jL( 4b@b(%2noے17g |ewdHUm3]_nԊ\OB\X_A[t2pM8֏Z|b4ߪ_}!G : **ŲAq`V?E*)d{@`ZQ;NuJm|h~ #^u=F&أ)IRzIA3ZuRX6 i>:-TGO2LaN4)R4UjWjNOx!y] 2;U>7m4]AVu=P(OElVb}ڥ=Cʐr7"0 &7eÉuVaR'U:)2471[nIɝo;b {3:`z}9=R)ڇIKȏܹyy< A6׀0)s";7Bks&4PBo/u)17U rY C1̚@'7@d1J;ڧ(h.( @(  ](Nɒ~Pf!+)S&9uH?7{NG}O"%l3z z Nbë2ĴJ43 jkWۘ9Ky{A[AFhB3|[1p_Aks4| ':`TX#wZ+ȷ( |;l*fy=Jr%`iKo &sm?'36]RB}۳#%g rj,&Kx,Pb4mR*ӊ= yzz3#) S6 D @H˿w rE+z4X6J& 9nQҺM&$ǫHTB{HT[0"&G_ ,7*5\2*F!G=7&r 6%d{WwfG%ݳ6:<03XB(zYekrNۻ,@ ۿm r</ ®நJXA B&R\104x,tH8:,ɼ(SS14zb{rIWyc/h"iϯZ;i-y̫WψtHL~N6GpC9}R̲,fH!~H^)1EMϡv,SGZ'WIPO;x̟U&a3ɽ+Q4{ F5P̅xFIهBssezDNؒɟ-9Rm3 ,Е]Zh)(P\/z ןqLuc|H#.śǘOH͔@JYAoJn+\؏ 5y<̂2KR#O81] G>DS^W|GM J$] 0ЌZNPqsʇ<1 (7A%Pj\JEޱ>x&2 yUE--\r.ʬ xUU%XA$9 ]*$DtC;(b\p]<@nlZF+yh 0J6d[D `! mZ54EV~'>s`U LHV >gxO`e`UܵFVx/N¤# PxDOVe/NrӵN(sL ;X'?1t &7]LSӻPUGxDݥ GoˬB @WuQUE\~F`4|5HՀ#>tYI8#bwP KWOQ- Jhfd$/i#WO(Sx5 `}N9jt_t?q<#k=qs0D!/CAQ"^oviEz6V I3[*K ]J^ΠbʮClR L @TT<g\x nJ`[ Cppw=| =N$1'=#СT  p8 C@\tW$0`*lߒ~O8p:Y0 )X0[Yv*PcI/ށ7I2Rfj咘2k,@A'<Q PpWdݩ1;SjE6.mM?a5PРlBg*aÌNq@$2N`0|^?BYӮm 7\+P!F]ݫkXjQl`Yf=O+`(  0IC ' ;K$SԐ0,xة`f@G(騪'DX%j@49a(S ,18Cr1gJny4AQ|*(哬8 H+r0-< JD7}lr/>q†B䂒/cXϳVB^ @NuW^-\,`w(<[` &[@wUWjUxL)l)@ lYX\ 6xs]Lux]DyH >K`Z\TDx\iv'X(M]9 yNO?A_^Z])ՂX0ygu BHhqT9Nz2^GZT-N7./xcm`>ez|Jna l ¡J[Z!.iW.B΄js|]#ݏ{t'au9=aH J%"h'^Vxxg^cZ#! CT4>EkǟicG=\<7/"e5~d hac3bPA )ըxC#\ĺU`R"!OI"@_p`/@IO{v5xI#ZS-' BSDiJMQ,Xvd#M!}SB&iPRnu"iPeր4SkXقhQQ)ӫfA=jA@ kYJJjRޯ\Y^d?'>HI;\`r%bWӮuJ\qU@7*ChX:U'U}mdy8˽Yx|n}kc]Zl( en:OrF\Mu8:GiNiu|]{$)<5#9@+B;RHt61Q\(U( p&=J轞鉁bs:6T%@a-铡e)OU򕱜e-SyW*P`ќf5mv5`bxBΒ}hAЅ3OJ#fl\H̖s!iI?Q1iMoӝtPi&~ԥ6ImJrBaME ?xek] +pi^؜V寑~ limmoL;;PK b}6b $sctest/view/resource/Schilten As.gifGIF89a}_^#3346y"!IFFG*)Uoqs86 Sk)n =3=NJ,73. "jjCkhESSTaaa[[\ts(񶶶KG!P/ᕕ@%%&hhhCxxwžM!?,}p( ,(-rl:ШtJ.b,"b1kL.znۃPeA-a/3 v9& uD#;{ B3;9B /?- :9q+!49ցG99-6;+(%5HԗooU(¨ȱǏ CIF-ZH灍/Oq_Ɇ4sD@QĔy_1518uRCbO}LTHfP!#:{aX0n3B8J2??hkT@!†ca*Qbw!a gpa[eQa&"[7j$1ٮs :` `eE:U@e`P!} N( *N8뻾,h BB p XY Bh_ :B j}VX X 91A"`9@ (\h*| $\P@,x(waGx  7 $@ ؛0((\dp C0Xy[71hOM.~@ *CDQ6{kSÁ 7 XI3lx'o @ R~Ae@Țf~{Į5ZT@N9,Ph#C׏cLG$x\קu:^y ܺtK Ct@>z_$G$ *$T 923ah&DP p>g%U Y>X@t0b,y9&:`N|\@p` " 轛mQx f @a1c<' K-HFR ڀd@R4G+~b q{V&@슗W70? n-sܸF:(2<Ah+'8~ T/r*@̣cTU,Kl8 X\' bM}Hs d CcDzvjxRfD>Jz0oNgi*[ j}@ {\zd*& #RU*؀F H )8B`X=ZS}LWY h`LB〓*Sk+Eq /30%)j kT4`@+,(T)3^tWF;Z; #`*2cҘVӱx8y.-o& 'K+ *tJ0@Ԥ(n`a )[͢ 4 }G<ހN)+y9*MP١ 3[=Qޭim9"%NZ.,mtrsD_vx+^])Lx:R`-0<Y&`S<ӕ@-&sjHӌ*JwGv98 qh\@\GtWוse>pY=l@7e0L Q)@b9 [%+6@%W5?\tn( uF 6JoŴ3z.uIS Njbg>*9\IvV "9J +0L[@Ô>*W+Gh b9WT4CM||`ac^S@ / /`)(Ω]՞Qw)8 rGmn.sdvN04i7pWSSTvQ  CbҝbN#@4^@b-`Us8ǝ} nF@O l֫ls(Ҁv:(@wt$_ h}MQ %R= #8h ڛOhC؁Ѣk,V e92vM˾WgX,Q:WEN>jyF1bja?0?"$G@×qWzw_))1sf5p)B$OgcXR}61c 1,L]M6`R0}2-tKbtUip{<~tL9wx7~4H}D9"G"<([<>a-QGDvK"PH0ELs1068zP{]>GaCX{c(6W|-2Ffd&B0`y){Y}J %=$)@5cm~dcT#F׉aB`,F9IQ1liփd0n) ^}X{9b(1-xqfd;pdt5*!vh5(G8uhn8Hfy :p-xtfWt)r1yEؐ yr!Y{!8(Er.y~pO*xhbx<)V&ٓpEҍK5ZFk7=u8MדTHwB9=Y E>Fx@iƕOĤ@$" @U)6pmB'z$0 p}lYu#}pY!9 E/y;,6}tsBW$C1@SY%8OPWy @ٚZE`my>雈P ywɋ ɜtY8y97ٞy=^Ȁ&~{G8:Zz*@ ڠ TF%+ x[b֡ "*fPU&z(*,z'ne //3::Z-@ @q2S Zb£NqR:&JbW$^:>Jb3Qq<003?4tZvCDz|ڧN48{rZjZQ0sb5z7Fwڨ4y꧒:z(u;{ւn1bJJʧbZ0)I%>ګJ.-z8F@3J NI5PK t)ꘓE+/ꧬ25\w6(گj1[ S$E1qw2SZR(RHRp0"s;  4GG~੢C0(]9-8e"0NROr':$j2N78S}&)#бO?@$61[JgqDi#)=! "pN#pEʵt zs"((uh%R2=\7c|@Qzٷ YjB|tF\۩IV$|渜 ʲ#z{aйP$"6# Ip@V{{ˬ@;[57yS! ,P}j\ۼk O  @iM+:!H p}(0 ! ,,KK J`M' : @;x½@,-3KHp`6 `"P;\#&0RKLxb65n fPpU @ 2:390! ~q8bw +75 ^B#0A иk+}IP)ݠGsjv %Rܴ4[zmg`< oݽz"Yf*({m'}J}f0iJhN %.N~Y˺ܦwLާ .2Pz -ϒV~5TrERR&x<])><΢𥤮PZꮾG>>&0PQ3^ޞX@+8/pti݉׎3@b">| I>^3rT-?' qty⼼D890sFTbf t Jҕ}gpUgEB~3{'Bdo*i6Y) K-~'9#'d0YW.p7ٕMemZAyfR)j2(1~gyl: 8iB$'1+:e?ydze`i^/g.+ }9@xnRm6g{Y(*D2 TPi~'w㜳(đҀw| #z>G#BnYs1&# 5q>Q- %5%hTxZ~ yиzqyo%46b Ǭ (4#t# `@bTR THX[.4N 4`NZIXU$>TF#22Fa8i&-17#A..O ` f5O>N3 ,"U"ei(.\:oz4@p":qĝp!Q"A }Yej12 58Q,z|8N wbDP%Ŝ /8qV H(PU@gp%q"*mpa"BŰ?.ά^MR_](CA-"" o^No"L꒕QiH1xr@$y'Hd5^fv_Lv ö[倘7@I Bt/6/;(諄LT(ރO> &/?SIk!kB)"kARpPp\8$x B.;** lR6 @8\N ,!FA!<6%m;MB`gFRF,8JO4--:3#vX&GL2@&D1/@FJ%! 4 ,3`lbC$4ARhzŵ]M^j0No >jLmG0a!tŭmWsKX2\qa)Nl V`PAA!>@z@b 3eO&%b,SF@ YF~Rf,uG]aQx Kvg*\"ښ)ʍ# 4i,Ǣw`pπlɖCdgty\ɖ!G|@-5(%A!pTAd3S@`6Vެ 4pklDql<%'`l@BhU@EB~SH@둚 k9){O?|(j`X 5@P78/7jAzڃ"`!o a9; 8$O%x:ՠ*O_ f( p`  NЁЙY`D,ΒVx X`As <̡5 XlD EA ~Uf^UѾxIvlctgE8 :PA/&bLd01FN\ #15'@iHAb15 iDVYRGZuqw\jH]>T9|c0&Q.sT%5LQѕIjH4鑐-˕]v\$2L13jJN7@q$XE`XOfģ=+ ÚӀ\@0t-AQz;$8C5"oZzMCt x]ܸV]V O9 <'p]9C/8&ERQϬ2hbRj9wa "P ߼™\]V& @];C4roDY9D@t <frTt+\R5(SW>BCv0 =) *H(0 ` 0 Gu/3ZH@ՙ^x*eb9Sdp((n $hv OSsY腨%Te*s:A mYpJ X[.C̥8@m `jRj XA 4d@g ΙO*4QHD.`qhj@<9%˲phD?|AS# (6XPNs+ŠU0rer L9C3r Np h+Pu^v(I$"PA0 >P׷v;&؂PVFPg @@ ,0 b ({wLo| (6xN&Tv:4/ZJp;5q!@7ziO>ԙ66NlS|fT`>Mg!(ُ] @n5niNo v{}7| %"x?gOG;C`0f$$7zя7QzկVSv,` gq{p{ a(l|,w>$|6շ}o_% }忾n> fM0pj"%0@r@ ԍ(-105p9=tm;PK `}6]\ \ %sctest/view/resource/Eicheln Acht.gifGIF89a}]e`N3 T22>9%Hde3$]@?+,61('qrmtBM F橩EOB3ȶWGPLyy*!?,}p(Xrrl:ШtJ,$6FG.znn&m 1w6vD=:|B1(:<9? 599-).Gт"W޸/)&!bXA!#>HѠŋ3jH2T ;"jp\r˗0Y2"@Q'@c 3hd#H QFD5Uk&"#?M(# b+ׂv!"bdJ;[*ʵ_] +*h`#u-#^5`` P|ƀ`@ȋ Z0%hg l rWmz! LWՂ$^P05K 84a >V Y 8oH:dd o?g6XCI= }~Wf ?@B dis03f@? "> `t=XtC IςP(` Y\[`eierG6(ݢ㺠`2G>π>#~cQt&(}Iٛ}4И͞v{SO`NW ( OhL!LنT>VL]HNvffcb0* >mm;x7iTh48vSlԵ'=^η=8|;mK0k :>3IMԡ9hcGr N|>s;5@6g`ʅ&[mU8C `6y"9ͷ cp$+]Y#.ݎ/,+4:pP04nCP6>SiO[P]Ns8`&m4yp}#[٪FubsEwg5jg"?82೟/iL`(&wE C)>rLd>7(Y2O<^[{~Hn:ɽwOgj6?~8L&fv'` Ah#_?3HX>:/ pqag@#|&`!5@Pzqoz H$oWHrdI`;82U?]oXkׄ dEHQ7wTp#||Ƃ @xhC4 AdfG&+H]((j2zvbXbz8^U9`6lc))|至4M>fسҕCCm n 6C]:wT}d94ʸH ň=Q K=ъ-r،䘌R8b(T@:8؄_PODMYZfa=a=$ ROV%@99\kh:oQ]Lhh:3jy'YUU:`%S[gu#;"=?F`W~L)`Bkљ[)뉊Hbi%:@F*E6eK}و|X뇲Ȟ鈍+[yzifep[dQn]Q!aoӵ(tX DOKM껍6]ۡ; u 6L`"<+lY9c1PX–PA$̮8,26>,h;|: F, 1N8oG 'O\Q ,SGqk`L#>B P\Wf\sٺ sL^QqH2mF etȈeЈe ZAYf]W~#ɋKCFǨwbYo\k삛ەZF'iзwd4`aBܸT %fbt(?FoA_ ,#˰dhw>'sqb~`&~rTn&%70zv}zZLj'} k(=l9kF;@gPUmlmp?Jrd 4\sTfbvXcjg%fZ|@:7kc[%ԁe5@qt-:vi8Z0; l8Q)]^`tʪm# > uyGWk(]B!&Ihwqr-p}?w0= |Zx}x5 .vybnPc gWP;&hhLڨ1 3ve־z MKܭY~Ie$Z'ZBK:eҋq۝ا{Cᗷi$ 0L(_Y<ʇ!]6 %xz=6}2ذyW[ԕ=$XM=IHGθJnu+UG-\fOIc/ѸoK  \lȞS1VMD*P3 eBUpnT[ZIH g9c t@??!5ކUШ>H6[90nI뵮搓=8׎큀Q9 ~E 4`Nn)X&@ο"kHYZNʳΎHelU_`|m>@t6T?^g}M_z=ɫGG8c-TAl,Mb44N+4;FnLh8|e>?E(W`)h`t:` h=`͇=[.?"?*: ZWejzm5s+UFFlcZgCzAheupoo˖K^vdZ7Wy|)XBFJsAC6LO}iHEok4Ӱz=sf <4ÝU_48᙮ D^zxZ찉.puI*ʷtst.̾uu=:YiI͐~60=kyvl4s+Xfn $ (h ˹\ ㆶͬHP(@* h"8n4SH0DLh1$3 vԑG Ј F` tAѭJ%K $#xNl|?t` q?nH 7@ 6"aM9tO p0!p竓R5tA`UWi5Az(4Gn&@ !Aʒ] $>HAi $yf/ \8XSCA* p y@;T#T ^0DbQC ,@ P#8pPT.-5X(oF a^-_ @3@, C\ hEtZ\` Qܑn  &p݅$mzfT Y8򑴛F ޥt% ,9 msX@T/Xn3#\g!,bf19<ќyM} y,bc%h?4JUnZh5)MFqe2B  zJ~b=PZ1I*IjΡG!"8]v%љ0UZ4Oq0G|mY0Cpxz!:R\`es[4bJo$kXFʣJ\9>V]\WPd'J`(Lp|:X4["C ЩxC@1AZŰi+PʽjфLѱvXbDVPR J-9ÆjZ+] ܹSb\\F7q o7^GW"M8Lźg:gHׁC @ArDլZ˿0䀙A}mȺ6_EAI1 ,/Rjo,DPRnO,fgIw#A5d*r;*&.`L c0Ym$t|Qh`ewʊ-A߃ʗ"d7]89:q9#wS^@biKdaA.#f>k$S d4zpPs s) }rxh D֔.quil/[W~usG|\@MTUK;݄m#d277v emzv〛~n]#(|q'8+o w롘x{q{P;PK `}6*!% % %sctest/view/resource/Eicheln Neun.gifGIF89a}茎M3 Vв>?I8%df*32$opn`BFLG+.94qqP%$]hcBIzRRQ\Vwy{w,趶# ,⥥3C‚OE@!?,}p(@tȤrl:ШtJXxL.zn&Fn~~ 4u(X5zB415B/:?$.:6p&y0GTҷҁ9&#-`6HX 6:SPÇ#Jذ"cX/Li$œ(S3Y )b`P Z@(ѕLQ`ǁ 00`ڵIʈwаԯc&@ao cR*cnR5 |PPڴȏ3`5잲<[U%nCpM恼 ;gݩ\>Q ]0@cGӨJ1|ՉSn~YwW" x`g%ǂ{g]X"B3x"#8tX9.`?U#7#V꘨z΄&`O 9@y;(3k60JZjVdG5;,P&fyq^9g$,@lX\&:,D}l g&jpR(<.l5j 2*~ف ¨;1d֪Sz ;0:{5{N"Zp5FmhN j,$:l|9$ S/t̅TPj`Rac $*@ t .{j;<02di 3[lCHȓ&wr)o<0m#B3AE tN v^.\uC(RUdظ#Pi@)eF==+A`G kvsvmy?ԇ>|<-9VHa%J   "AA)F O 7)R_2 F+Pcx(@&95=@.p,|@|WdU `BOv@k#@|6ҙW'5 1t-1ĜUfiDD0M m 0QҊ~&@! } JM5vy߬k 3hIOqfY3yM?@A:>+{{K 1 0`sҀd PbrcW\@5RjqX"`mZԨ@K@kf+aq ȁ=_=Д$'NFscҫRg[EA5p9O2g` be9PX =BʪYbɰ{3 J@@eƶ`Sl V_n%*%*&1+] js=o-` CYF|\&D=(J ({Q;MjP-+\QҖ SK.l#XT: j01Xi-? U'pWli`AU6z?"XvQ.~1WbZ՗8 fXβ kwɃ @C8nl't3Z HHą\NL|^;F)(ihA?_S@}ݲn 4sT ӳ*kzӨ Y鲹9t=֫"VFY6zf өF57ʓ$~()Ў6yO~05da/qe3;Ϣ7׭4;93$E{~4 X:ϬedCF|#-E-TxWGѻKH5~m֮'#1ږ OX )Áwj܀(q Mr?&O 3zX/^\鈘ww$s3@`/L w]{R> 6~5@&Xx:Vv`#>o/lU~Qz>F_]D(ˁ6ǃ] (>j;7x"ڡTk!`t<|]JA [)L1tLX@8})ہ|e)iU\Z_`Hj4ϿFlh_^ulG>0  ϵQ%|% ,tn;.A&r&l80LD_A*pV {uE%3HtsVrh!@;"Y%Ww"l'7P7@}YeD7X'OI<J:Y>QGO3`3@A;C152d;:D7 @!w7@:*Dy~QǺ14Qaȯ [:_ud+;p&碵ζX;@k20?8ky+lzڬx!V:nKl<0E %؍:Fhw=;Z2 wNj8 vJ3X.Kd #3|D۸OzsJC(#۵6/ 4 )=Fa#WضN59Zkfhv$@-K\#8B8|2(J{E)hWKr[9ؤ[}XK 1;2;iC!h#0~^ B>%S0XL=vp6Qi"Дq)7LaPe1lvI~d-@G8;_(Ptv GP$@ۙ׉JФ)0?˖itLVQuj.` k[uuֺʦq kt:gie]ð$c~kx\84xyVu0DC yjukʯ tŤǯ*VWc_멓*ʯǬxg}Xm0M0q緪x]zi8o*o ^7$;g{ 1ͶY(XFrт=1شQ=>ȺNxx Ap+ ;JV uk5%))VvHF @[뇱۶xO ^MYKh,L^7@%M{dȴVs%d{M۶;lќȈ<&u9!p(K; #ݢ.|8.y ِ@3IWy>J%-5[ "W TJ+4ȑޝI@%IɒEG~v k=y̾PΚ"0Wy"vy\^̾gyfIE۽)1aryZ9|I~i , YȈL,m쑗 9lЈ~W _IyƷj1PXѾV|xnkPl(bi@ޠ_T ʟhr]G,zTz_;@H9ov[L֣pPA||~$zs&l++Ix9ei7j=>+G%. I8-YI4;a0<0 Vkjm|nKdg>7m+ fIwzqaAZw~ٝg†TNR{kqWBvmzZn:$&m:j۬oYV-0Ϗ3_XHKwTvA*n=ʺ7 5ƮP4/" !.HGQ$dD4y"|@ XMhtP^, x"& t:RZt:.$)#[ &rk t\qL"L $RP R԰"W}w$DXjokuYpv}.GR$(Гd;̀7\K >0иGGỳb%M='I†}@ʉITĪdscώ-20c8BIEOB1$)RR`>[ϼM7 2DU y43]냁yc!@QibZ]p#ި|k*pnĺ H07J!0w ]@T`BNolh\\9!7[ X0u'YFPͥN'-t-H hNg\=tƠQp (0-i 5)2>$8!>;J λ/R+O5txAd~V Oʓ2ȠC2B~da vH%D硎 ȅ\.h@;XJC-:1͓з$G(!7$6q S=xL?\ !K-5X!%(BD f!J1R:=:cH?k hMUY5A7ReHK-/(a`ZOT$AYmvgc aOA}S8IAq֏  00 vm `oi@ܖt0}6T[e~%VZl@_J`w 2~N\6`79;n>>UᎉmֆL8WWNXWT $`C@ UeFDwf`bIM z\4l0\ Ȁ29f2gt1khk>pM`&@^ ` 6&pH1y PG܆!ɀ  S$Yw@aPdjL &AS˵5XBQ>|3`b#ZlXn h )hc '(t|Cx c na ~s]Dgp l `SHy- 6E`# 6M5`^5 ǛX5 @ "X9_Plڢ@ra`0<dq8B/OB040h"Eb1x`960A W}HO|`-iqdB +;vB0,FA4(aLh =9o &;r[b`c FqWb 9OijȞܟZwXXro($uj(P R` =φ耂!vYӗNc /GC4ZP9`قʟR3RYN霶e-ZpEP1fY7 'ō#0A', \5 ~ /5f2ReMDV F`Xc?z d'za$h4FPtFΑ4ul6²\l.0Z0˹y `ly`̓\@ 1ZuLUU]G2m;Tz Y J `0a[]{-iβ &{↊S'ȇ ;ؒlŭDAF]8Ěl伻<mMP^.AEy"-Ͼc,8̏[[`.YnK1 FmloVvhN3j6BDT?nopƀJ!Zj4!qO\"1qo8A_z+ -wasϜ5yxuK[ tE7 o?wӡuOZ:uoPPwe7ӣ'BmwQ{NuH`}G[x@v!yO򕷶v'w;PK 6sctest/object/PK 6Usctest/object/Card.class1[sctest/object/Cardjava/lang/Objectjava/io/SerializableserialVersionUIDJ ConstantValue^ԾƦcolor_Ivalue_(II)V Exceptionsjava/rmi/RemoteExceptionCode  ()V    LineNumberTableLocalVariableTablethisLsctest/object/Card;colorvaluesetColor(I)Vequals(Lsctest/object/Card;)Z ' ()getColor()I + ,)getValueosetValuecopy()Lsctest/object/Card; 2 toString()Ljava/lang/String; 687sctest/naming/CardNames 9:getName((Lsctest/object/Card;)Ljava/lang/String;hashCodesum writeObject(Ljava/io/ObjectOutputStream;)V@java/io/IOException BDCjava/io/ObjectOutputStream E#writeIntoutLjava/io/ObjectOutputStream; readObject(Ljava/io/ObjectInputStream;)VK java/lang/ClassNotFoundException MONjava/io/ObjectInputStream P)readInt R "# T .#inLjava/io/ObjectInputStream; getPlayer()Lsctest/client/Player; SourceFile Card.java!    Y***$% &'  ! E***)* +, "#>* 56 $%V+&*&+***9:<-.#>* FG! ,)/*O ()/*X /0:Y*&**1a 34/*5j ;)R<*`<*`<no pr< =>?M+*&A+**AvwxFGHI?JM*+LQ*+LS|}UVWX, YZPK 6@ sctest/object/Card.javapackage sctest.object; import java.io.IOException; import java.io.Serializable; import java.rmi.RemoteException; import sctest.client.Player; import sctest.naming.CardNames; /** * Klasse Card: Enthlt eine Karte mit Farbe und Kartenwert */ public class Card implements Serializable { /** * */ private static final long serialVersionUID = -7611622316732660058L; /** * Enthlt Farbe und Wert der Karte internal representation; integer * values!!! */ private int color_; private int value_; /** * Erstellt ein neues Kartenobjekt * * @param color * The color * @param value * The value */ public Card(int color, int value) throws RemoteException { color_ = color; value_ = value; } public Card() throws RemoteException { color_ = 0; value_ = 0; } /** * Setzt die Farbe der Karte * * @param color * The new value */ public void setColor(int color) { color_ = color; } public boolean equals(Card o) { if (o.getColor() == (getColor()) && o.getValue() == (getValue())) { return true; } return false; } /** * Setzt den Wert der Karte * * @param value * The new value */ public void setValue(int value) { value_ = value; } /** * Get the value of the card * * @return The value */ public int getValue() { return value_; } /** * Get the color of the card * * @return The color */ public int getColor() { return color_; } /** * Get a exact copy of the card * * @return A copy of the card */ public Card copy() throws RemoteException { return new Card(getColor(), getValue()); } /** * Liefert einen String mit Farbe und Wert der Karte * * @return A String with the print-friendly name of the card */ public String toString() { return CardNames.getName(this); } public int hashCode() { int sum = 0; sum += this.color_; sum += this.value_; return sum; } private void writeObject(java.io.ObjectOutputStream out) throws IOException { out.writeInt(getColor()); out.writeInt(getValue()); } private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { this.setColor(in.readInt()); this.setValue(in.readInt()); } public Player getPlayer() { return null; } }PK 6:ҵsctest/object/CardList.class1sctest/object/CardListjava/lang/Objectjava/io/SerializableserialVersionUIDJ ConstantValuetY`Mucards_Ljava/util/List; Signature&Ljava/util/List;()VCode  java/util/LinkedList   LineNumberTableLocalVariableTablethisLsctest/object/CardList;(Lsctest/object/CardList;)V Exceptions!java/rmi/RemoteException # $%get(I)Lsctest/object/Card; ')(sctest/object/Card *+copy()Lsctest/object/Card; - ./add(Lsctest/object/Card;)V 1 23size()IcliI 8:9java/util/List .;(Ljava/lang/Object;)ZcLsctest/object/Card;remove 8@ >;(I)V 8C >D(I)Ljava/lang/Object; 8F $Diterator()Ljava/util/Iterator;,()Ljava/util/Iterator; 8K GH 81isEmpty()Z 8P MNcontains(Lsctest/object/Card;)Z K UWVjava/util/Iterator XYnext()Ljava/lang/Object; '[ \Requals U^ _NhasNextcardIterLjava/util/Iterator;LocalVariableTypeTable*Ljava/util/Iterator;clear 8f dlist()Ljava/util/List;(()Ljava/util/List;addAll l gh 8n jo(Ljava/util/Collection;)ZtoString()Ljava/lang/String;sujava/lang/StringBuilder wyxjava/lang/String z{valueOf&(Ljava/lang/Object;)Ljava/lang/String; t} ~(Ljava/lang/String;)V t append-(Ljava/lang/Object;)Ljava/lang/StringBuilder; t -(Ljava/lang/String;)Ljava/lang/StringBuilder; t pqlistIterresultLjava/lang/String;getGoneOfColor(I)Lsctest/object/CardList; sctest/util/CardTool  getAllOfColor3(Lsctest/object/CardList;I)Lsctest/object/CardList;color writeObject(Ljava/io/ObjectOutputStream;)Vjava/io/IOException java/io/ObjectOutputStream (Ljava/lang/Object;)VoutLjava/io/ObjectOutputStream; readObject(Ljava/io/ObjectInputStream;)V java/lang/ClassNotFoundException java/io/ObjectInputStream Yjava/lang/ExceptioninLjava/io/ObjectInputStream; SourceFile CardList.java!   B**Y   ~,**Y=*+"&,+0%&'( '+* ,,456./D *+7W 3 4  <=>/D *+?W = >  <=>AD *BW G H  56$%X*0*E'R SU56GHI4 *J_  234 *Lh  MN4 *Oq  QR'*SM,T'N-+Z,]|}~}%*''<="`a X=b "`cd8 *e    ghi/* jG*+kmW gpq8*SLrM%+T'NtY,v|-M+], -6*83a0<=b 3cJ*M,  6gn$=+*E*L# $$!562*Y+'M*,7W+'M,M -0" !)01 22<=PK Ϫ6BKsctest/object/CardList.java/* * Created on 27.03.2005 Filename: CardHolder.java */ package sctest.object; import java.io.IOException; import java.io.Serializable; import java.rmi.RemoteException; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import sctest.util.CardTool; /** * Object to store a list of Card Objects Attention: Does not implement * java.util.List */ public class CardList implements Serializable { /** * */ private static final long serialVersionUID = 1505174627688477959L; private List cards_; /** * Constructor: Init the list */ public CardList() { this.cards_ = new LinkedList(); } /** * Constructor: Init the list */ public CardList(CardList cl) throws RemoteException { this.cards_ = new LinkedList(); for (int i = 0; i < cl.size(); i++) { this.add(cl.get(i).copy()); } } /** * Add a card to the CardList * * @param c * The card to add */ public void add(Card c) { this.cards_.add(c); } /** * Remove a card from the CardList * * @param c * The card to remove */ public void remove(Card c) { this.cards_.remove(c); } /** * Remove a card from the CardList * * @param i * The cards position */ public void remove(int i) { this.cards_.remove(i); } /** * Get a card out of the CardList at a position specified * * @return The card at the ith position in the CardList * @param i * The position */ public Card get(int i) { if (i >= this.size() || i < 0) { return null; } return this.cards_.get(i); } /** * Converts the CardList to a java.util.iterator object * * @return An iterator of Card objects */ public Iterator iterator() { return this.cards_.iterator(); } /** * Get the number of cards in the CardList * * @return The number of Cards in the CardList */ public int size() { return this.cards_.size(); } /** * Checks wether the CardList is empty or not * * @return True, if there are no Cards in the CardList */ public boolean isEmpty() { return this.cards_.isEmpty(); } /** * Checks wether the CardList contains the Card given * * @return True, if the list contains the Card given * @param c * The card */ public boolean contains(Card c) { Iterator cardIter = this.iterator(); while (cardIter.hasNext()) { Card next = cardIter.next(); if (next.equals(c)) { return true; } } return false; } /** * Clear the CardList */ public void clear() { this.cards_.clear(); } /** * Convert the CardList to a java.util.list object * * @return A List (java.util.List) of the Cards in CardList */ public List list() { return this.cards_; } /** * Adds all Card from the CardList given to the CardList * * @param list * The CardList to add */ public void addAll(CardList list) { this.cards_.addAll(list.list()); } public String toString() { Iterator listIter = this.iterator(); String result = ""; while (listIter.hasNext()) { Card c = listIter.next(); result += c + "\t"; } return result; } /** * @return a CardList with all the Cards of the color given in the GoneCardHeap * @param color The color number */ public CardList getGoneOfColor(int color) { CardList list = CardTool.getAllOfColor(this, color); return list; } private void writeObject(java.io.ObjectOutputStream out) throws IOException { for (int i = 0; i < this.cards_.size(); i++) { out.writeObject(this.cards_.get(i)); } } private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { cards_ = new LinkedList(); try { Card c = (Card) in.readObject(); while (c != null) { this.cards_.add(c); c = (Card) in.readObject(); } } catch (Exception ex) { } } }PK 6ӠU U sctest/object/GoneCardHeap.class1{sctest/object/GoneCardHeapsctest/object/CardListserialVersionUIDJ ConstantValueS boardList_Ljava/util/List; Signature'Ljava/util/List; winnerList_(Ljava/util/List;()VCode  java/util/LinkedList     LineNumberTableLocalVariableTablethisLsctest/object/GoneCardHeap;addTurn.(Lsctest/object/Board;Lsctest/client/Player;)V Exceptions$java/rmi/RemoteException &('java/util/List )*add(Ljava/lang/Object;)Z,sctest/object/Board +. /(Lsctest/object/Board;)V 1 23addAll(Lsctest/object/CardList;)VbLsctest/object/Board;winnerLsctest/client/Player;b2isGone(Lsctest/object/Card;)Z < =:containscLsctest/object/Card;getGoneOfColor(I)Lsctest/object/CardList; CEDsctest/util/CardTool FG getAllOfColor3(Lsctest/object/CardList;I)Lsctest/object/CardList;colorIlistLsctest/object/CardList;getBoard(I)Lsctest/object/Board; &O PQget(I)Ljava/lang/Object;turnNr getWinner(I)Lsctest/client/Player;Vsctest/client/Playerturns()I &Z [XsizehasPlayedColorIn.(Lsctest/client/Player;Lsctest/object/Board;)Z +_ `X getFirstColor b cd getPlayedCardA(Lsctest/client/Player;Lsctest/object/Board;)Lsctest/object/Card; fhgsctest/object/Card iXgetColorplayerboard firstColorplayerC +o Pp(I)Lsctest/object/Card; +r sTgetPlayerOfPos Uu v*equals +Zi SourceFileGoneCardHeap.java!      Q**Y*Y"#$%  !"#}%*,%W+Y+-N*-0*-%W. /01$2*%%45%67859::*+;8>?@AJ*BM, @A HIJKLMB*N+IRISTB*NUQRIWX4 *YX  \]|,^>*+,a:eac deg4j7k5lI m?cd5,ne>6,q+t,n:,wt vwy$z'v3~>55j7545 ,lI 'xI$m?yzPK 6y y sctest/object/GoneCardHeap.java/* * Created on 16.03.2005 * * Filename: GoneCardStack.java */ package sctest.object; import java.rmi.RemoteException; import java.util.LinkedList; import java.util.List; import sctest.client.Player; import sctest.util.CardTool; /** * GoneCardHeap is a CardList which holds all Cards that have been played during * a Game, including the winners of every turn * */ public class GoneCardHeap extends CardList { /** * */ private static final long serialVersionUID = -4186625026570512417L; private List boardList_; private List winnerList_; /** * Constructor: Init the winner and board Lists */ public GoneCardHeap() { super(); this.winnerList_ = new LinkedList(); this.boardList_ = new LinkedList(); } /** * Adds the turn to the GoneCardHeap * @param b The turns Board object * @param winner The turns winner * @throws RemoteException */ public void addTurn(Board b, Player winner) throws RemoteException { this.winnerList_.add(winner); Board b2 = new Board(b); super.addAll(b2); this.boardList_.add(b2); } /** * @return True, if the card is in the GoneCardHeap */ public boolean isGone(Card c) { return super.contains(c); } /** * @return a CardList with all the Cards of the color given in the GoneCardHeap * @param color The color number */ public CardList getGoneOfColor(int color) { CardList list = CardTool.getAllOfColor(this, color); return list; } /** * @return The board played in Turn number i * @param turnNr The turn number */ public Board getBoard(int turnNr) { return this.boardList_.get(turnNr); } /** * @return The winner of the turn specified * @param turnNr The turn number */ public Player getWinner(int turnNr) { return this.winnerList_.get(turnNr); } /** * @return The number of turns stored in the GoneCardHeap */ public int turns() { return this.boardList_.size(); } /** * @return True, if the Player player has played "color" in the Board given * @param player The relevant player * @param board The relevant board */ public boolean hasPlayedColorIn(Player player, Board board) { int firstColor = board.getFirstColor(); Card playerC = getPlayedCard(player, board); if (playerC.getColor() == firstColor) { return true; } else { return false; } } /** * Get the card a specific Player played on a specific Board * @return The Card Player p has played in the Board given * @param player The relevant player * @param b The relevant board */ public Card getPlayedCard(Player player, Board b) { int firstColor = b.get(0).getColor(); for (int i = 0; i < b.size(); i++) { if (b.getPlayerOfPos(i).equals(player)) { Card playerC = b.get(i); return playerC; } } return null; } } PK 6nm$ $ sctest/object/Board.class1sctest/object/Boardsctest/object/CardListjava/io/SerializableserialVersionUIDJ ConstantValue#Wmplayers_Ljava/util/List; Signature(Ljava/util/List;()VCode  java/util/LinkedList   LineNumberTableLocalVariableTablethisLsctest/object/Board;(Lsctest/object/Board;)V Exceptions!java/rmi/RemoteException # $%get(I)Lsctest/object/Card; ')(sctest/object/Card *+copy()Lsctest/object/Card; - ./getPlayerOfPos(I)Lsctest/client/Player; 1 23addCard-(Lsctest/object/Card;Lsctest/client/Player;)V 5 67size()IbiI < =7 cardsPlayed ? @ clearBoard B CDadd(Lsctest/object/Card;)V FHGjava/util/List CI(Ljava/lang/Object;)ZcLsctest/object/Card;pLsctest/client/Player; clearPlayers PRQjava/lang/System SToutLjava/io/PrintStream;V Clear Board XZYjava/io/PrintStream [\println(Ljava/lang/String;)V ^ N ` aclear 5 F5 Fe $f(I)Ljava/lang/Object;hsctest/client/Playerpos getFirstColor 'l m7getColor writeObject(Ljava/io/ObjectOutputStream;)Vqjava/io/IOException sutjava/io/ObjectOutputStream nv(Ljava/lang/Object;)VLjava/io/ObjectOutputStream; readObject(Ljava/io/ObjectInputStream;)V{ java/lang/ClassNotFoundException }~java/io/ObjectInputStream x()Ljava/lang/Object;java/lang/ExceptioninLjava/io/ObjectInputStream; hasPlayed(Lsctest/client/Player;)Z F Icontains SourceFile Board.java!    B**Y!  1**Y=*+"&+,0+4*+,-%,00 1189:23k*;*>*+A*,EW;< ?@A JKLMN: *Y G H  @GOUW*]*_NO PR =7/*bZ ./Y*c*dge fgi:j73 *"kp  nopn$=+*dr*cuvu#z $$Sw!9:xypz2*Y+|gM*,EW+|gM,M -0"~ !)01 22JM? *+  LMPK 6gZ Z sctest/object/Board.java/* * Created on 24.02.2005 Filename: Board.java */ package sctest.object; import java.io.IOException; import java.io.Serializable; import java.rmi.RemoteException; import java.util.LinkedList; import java.util.List; import sctest.client.Player; /** * The Board object holds alls the cards played including the information which * Player played which Card (Is also a CardList) */ public class Board extends CardList implements Serializable{ /** * */ private static final long serialVersionUID = 2546717890476237004L; public List players_; /** * Constructor: Init the board and init playerList */ public Board() { super(); players_ = new LinkedList(); } /** * Copy Constructor: Init the board and init playerList * * @param b * The board to copy * @throws RemoteException */ public Board(Board b) throws RemoteException { players_ = new LinkedList(); for (int i = 0; i < b.size(); i++) { this.addCard(b.get(i).copy(), b.getPlayerOfPos(i)); } } /** * Adds a Card to the Board * * @param c * The card to add * @param p * The player which played the card */ public void addCard(Card c, Player p) { if (this.cardsPlayed() == 4) { this.clearBoard(); } super.add(c); this.players_.add(p); } /** * Clear the PlayerList */ private void clearPlayers() { players_ = new LinkedList(); } /** * Clear the Board */ public void clearBoard() { System.out.println("Clear Board"); clearPlayers(); this.clear(); } /** * Get the number of cards on the board * * @return The number of Cards played */ public int cardsPlayed() { return super.size(); } /** * Get the Player who played the n-th card * * @return The Player who played the n-th card * @param pos * The position of the card */ public Player getPlayerOfPos(int pos) { if (players_.size() <= pos) return null; return this.players_.get(pos); } /** * Get the color of the first card played * * @return The color of the first card on the Board */ public int getFirstColor() { return this.get(0).getColor(); } private void writeObject(java.io.ObjectOutputStream out) throws IOException { for (int i = 0; i < this.players_.size(); i++) { out.writeObject(this.players_.get(i)); } } private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { players_ = new LinkedList(); try { Player c = (Player) in.readObject(); while (c != null) { this.players_.add(c); c = (Player) in.readObject(); } } catch (Exception ex) { } } public boolean hasPlayed(Player p) { return players_.contains(p); } }PK 6| @ @ sctest/object/PlayerCard.class1sctest/object/PlayerCardsctest/object/Cardjava/io/SerializableserialVersionUIDJ ConstantValue-WMIiV3player_Lsctest/client/Player;(IILsctest/client/Player;)V Exceptionsjava/rmi/RemoteExceptionCode  (II)V  LineNumberTableLocalVariableTablethisLsctest/object/PlayerCard;colorIvaluep()V # !equals(Lsctest/object/PlayerCard;)Z ')(sctest/client/Player $*(Ljava/lang/Object;)Z , $-(Lsctest/object/Card;)Zocopy()Lsctest/object/PlayerCard; 2 34getColor()I 6 74getValue 9 toString()Ljava/lang/String;=java/lang/StringBuilder ?A@sctest/naming/CardNames BCgetName((Lsctest/object/Card;)Ljava/lang/String; EGFjava/lang/String HIvalueOf&(Ljava/lang/Object;)Ljava/lang/String; <K L(Ljava/lang/String;)VN <P QRappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; 'T B; <V :;hashCode Y[Zjava/lang/Object W4sum writeObject(Ljava/io/ObjectOutputStream;)V`java/io/IOException bdcjava/io/ObjectOutputStream efwriteInt(I)V bh ]i(Ljava/lang/Object;)VoutLjava/io/ObjectOutputStream; readObject(Ljava/io/ObjectInputStream;)Vo java/lang/ClassNotFoundException qsrjava/io/ObjectInputStream t4readInt v wfsetColor y zfsetValue q| l}()Ljava/lang/Object;inLjava/io/ObjectInputStream; getPlayer()Lsctest/client/Player;()Lsctest/object/Card;  /0 SourceFilePlayerCard.java!   \ **- ! "*    !< *"*%& '  $%R+*&*++,-0./0>Y*1*5*8: :;_-*$DJMO*SOU*>CD(F -W4k#<*1`<*5`<* *X`<JK LMN!P#!\]^_Y+*1a+*5a+*gTUVWjklm_n\*+pu*+px*+{'[\]_~/*b A/%*PK 6Rh  sctest/object/PlayerCard.javapackage sctest.object; import java.io.IOException; import java.io.Serializable; import java.rmi.RemoteException; import sctest.client.Player; import sctest.naming.CardNames; /** * Klasse Card: Enthlt eine Karte mit Farbe und Kartenwert */ public class PlayerCard extends Card implements Serializable { /** * */ private static final long serialVersionUID = 3267165032384583219L; private Player player_; /** * Erstellt ein neues Kartenobjekt * * @param color * The color * @param value * The value */ public PlayerCard(int color, int value,Player p) throws RemoteException { super(color,value); player_ = p; } public PlayerCard() throws RemoteException { super(); player_ = null; } public boolean equals(PlayerCard o) { if (!o.player_.equals(player_)){ return false; } return super.equals(o); } /** * Get a exact copy of the card * * @return A copy of the card */ public PlayerCard copy() throws RemoteException { return new PlayerCard(getColor(), getValue(),player_); } /** * Liefert einen String mit Farbe und Wert der Karte * * @return A String with the print-friendly name of the card */ public String toString() { if (player_ !=null){ return CardNames.getName(this) + " " +this.player_.getName(); } return CardNames.getName(this); } public int hashCode() { int sum = 0; sum += this.getColor(); sum += this.getValue(); if (player_!=null){ sum += this.player_.hashCode(); } return sum; } private void writeObject(java.io.ObjectOutputStream out) throws IOException { out.writeInt(getColor()); out.writeInt(getValue()); out.writeObject(player_); } private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { this.setColor(in.readInt()); this.setValue(in.readInt()); player_ = (Player)in.readObject(); } public Player getPlayer() { return player_; } }PK 68 sctest/object/Hand.class1isctest/object/Handsctest/object/CardListserialVersionUIDJ ConstantValue {,()VCode  LineNumberTableLocalVariableTablethisLsctest/object/Hand;(Lsctest/object/CardList;)V  addAll handCardsLsctest/object/CardList;sort(Lsctest/rule/RoundRules;)V Exceptionsjava/rmi/RemoteException  !iterator()Ljava/util/Iterator; #%$java/util/Iterator &'next()Ljava/lang/Object;)sctest/object/Card (+ ,-getColor()I / 01add(Lsctest/object/Card;)V #3 45hasNext()Z 7 8 clear : ;< sortByValueJ(Lsctest/object/CardList;Lsctest/rule/RoundRules;)Lsctest/object/CardList;rulesLsctest/rule/RoundRules; colorList[Lsctest/object/CardList;iIcardIterLjava/util/Iterator;cardLsctest/object/Card;LocalVariableTypeTable*Ljava/util/Iterator; J K-sizeMsctest/object/Board L P QRget(I)Lsctest/object/Card; TVUsctest/rule/RoundRules WXgetPower,(Lsctest/object/Card;Lsctest/object/Board;)I (Z [\copy()Lsctest/object/Card;cardList cardArray[Lsctest/object/Card;dummyLsctest/object/Board;jvalueIvalueJcnewList SourceFile Hand.java!  3*     F * *+!# %   'o+M>@,Y S*: "(:* ,2.2܄*6>**,2+9F-/1 3456"8.97:?6I3Q>U@ZAf@nDHoo=> e?@ EAB*CD.EFWABG *CH;<  +I(NLYN:6-+OS+I6_6M,-2S6,-2S6' -2Y: --2YS- YS+I+IY :6-2Y.+IRMNOP!O-S3T9UGVUXcYlZw[TSabcbg ]=>^_`aAB0hAB6VbBG9cBU+dBleF !fABghPK ,6ѯQT T sctest/object/Hand.java/* * Created on 24.02.2005 Filename: Hand.java */ package sctest.object; import java.rmi.RemoteException; import java.util.Iterator; import sctest.rule.RoundRules; /** * Hand is a CardList holding all the Cards in a Players hand */ public class Hand extends CardList { /** * */ private static final long serialVersionUID = 795327335676806798L; /** * Constructor: Create a new Hand */ public Hand() { super(); } /** * Constructor: Init the Hand with the Cards in the CardList */ public Hand(CardList handCards) { this.addAll(handCards); } /** * Sort the Hand according to the RuleSet * @param rules The relevant RuleSet * @throws RemoteException */ public void sort(RoundRules rules) throws RemoteException { if (rules==null) { return; } CardList colorList[] = new CardList[4]; for (int i = 0; i < 4; i++) { colorList[i] = new CardList(); Iterator cardIter = this.iterator(); while (cardIter.hasNext()) { Card card = cardIter.next(); if (card.getColor()==i) { colorList[i].add(card); } } } this.clear(); for (int i = 0; i < 4; i++) { this.addAll(sortByValue(colorList[i],rules)); } } /** * Sort a CardList by value according to a RuleSet * @param rules The relevant RuleSet * @param cardList The CardList to sort * @throws RemoteException */ private CardList sortByValue(CardList cardList, RoundRules rules) throws RemoteException { Card cardArray[] = new Card[cardList.size()]; Board dummy = new Board(); for (int i = 0;i=valueJ && i(Lsctest/server/GameServer;)VCode    ()VLineNumberTableLocalVariableTablethisLsctest/server/GameServer$1;actionPerformed(Ljava/awt/event/ActionEvent;)V sctest/server/GameServer  nextPlayer java/rmi/RemoteException printStackTracearg0Ljava/awt/event/ActionEvent;eLjava/rmi/RemoteException; SourceFileGameServer.java InnerClassesEnclosingMethod0  8 *+ *    b* M,   !" #$%&' (PK 6488 sctest/server/GameServer$2.class1)sctest/server/GameServer$2java/lang/Objectjava/awt/event/ActionListenerthis$0Lsctest/server/GameServer;(Lsctest/server/GameServer;)VCode    ()VLineNumberTableLocalVariableTablethisLsctest/server/GameServer$2;actionPerformed(Ljava/awt/event/ActionEvent;)V sctest/server/GameServer  access$0 java/rmi/RemoteException printStackTracearg0Ljava/awt/event/ActionEvent;eLjava/rmi/RemoteException; SourceFileGameServer.java InnerClassesEnclosingMethod0  8 *+ *    b* M,   !" #$%&' (PK 6:>sctest/server/GameServer.class1Xsctest/server/GameServer#java/rmi/server/UnicastRemoteObject!sctest/server/GameServerInterface ENDTIMERDELAYI ConstantValueNEXTPLAYERDELAYserialVersionUIDJCe serverUI_Lsctest/view/GameServerUI; goneCards_Lsctest/object/CardList;rules_Lsctest/rule/RoundRules;board_Lsctest/object/Board;currentPlayer_ nextPlayer_players_Ljava/util/List; Signature(Ljava/util/List; lastWinner_Lsctest/client/Player;nextPlayerTimerLjavax/swing/Timer; endTurnTimer()V Exceptions(java/rmi/RemoteExceptionCode + $% -  / 1javax/swing/Timer3sctest/server/GameServer$1 25 $6(Lsctest/server/GameServer;)V 08 $9#(ILjava/awt/event/ActionListener;)V ; !"=sctest/server/GameServer$2 <5 @ #"Bsctest/object/CardList A+ E Gsctest/rule/ObenRules F+ J Lsctest/object/Board K+ O Qjava/util/LinkedList P+ T Vsctest/view/GameServerUI U+ Y LineNumberTableLocalVariableTablethisLsctest/server/GameServer;playCard-(Lsctest/object/Card;Lsctest/client/Player;)Z acbjava/util/List decontains(Ljava/lang/Object;)Z gihjava/lang/System jkoutLjava/io/PrintStream;mjava/lang/StringBuilderoPlayer lq $r(Ljava/lang/String;)V tvusctest/client/Player wxgetName()Ljava/lang/String; lz {|append-(Ljava/lang/String;)Ljava/lang/StringBuilder;~ not registered! l xtoString java/io/PrintStream rprintln K d(Lsctest/object/Card;)ZCard l {-(Ljava/lang/Object;)Ljava/lang/StringBuilder; already on the board! K  hasPlayed(Lsctest/client/Player;)Z already played a Card! a get(I)Ljava/lang/Object; t eequals is not the current Player t getHand()Lsctest/object/Hand;  getBoard()Lsctest/object/Board; sctest/rule/RoundRules isValid@(Lsctest/object/Card;Lsctest/object/Hand;Lsctest/object/Board;)Z played an invalid card! A" already played in this round!!!!! g kerrFATAL ERROR: Card  Card played!  by K addCard-(Lsctest/object/Card;Lsctest/client/Player;)Vsctest/object/PlayerCard sctest/object/Card getColor()I getValue $(IILsctest/client/Player;)V A add(Lsctest/object/Card;)V  %updatePlayerUI K size  % endOfTurnInt  % nextPlayerIntcardLsctest/object/Card;ppcLsctest/object/PlayerCard; a iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object; t update(Ljava/util/List;)V hasNext()Z 0  isRunning 0 setInitialDelay(I)V 0  setRepeats(Z)V 0 %start 0 %restart endOfTurn      sctest/util/CardTool   evalWinnerk(Lsctest/object/Board;Lsctest/rule/RoundRules;Lsctest/client/Player;Ljava/util/List;)Lsctest/client/Player;Turn-Winner is a indexOf(Ljava/lang/Object;)I K % clearBoard A  % resetGame  % startGamewinnerregisterPlayer a# registered... a% e ')(java/lang/String *+valueOf(I)Ljava/lang/String;- more Player(s) needed.../Too many players! goneCards()Lsctest/object/CardList;getRules()Lsctest/rule/RoundRules; getPartner.(Lsctest/client/Player;)Lsctest/client/Player;indexregisteredPlayers 9 :%flush<Restart Game... >@?sctest/util/Distributor AdistributeCardsTo C 23 EGFsctest/object/Hand HIsort(Lsctest/rule/RoundRules;)V K L% nextPlayerN Next Player: tP Q%activateaccess$0 T % SourceFileGameServer.java InnerClasses!         !"#"$%&')r***,*.*0YȻ2Y*47:*0Y7?*AYCD*FYHI*KYMN*PYRS*UYWXZ. *9 ;$:,E-P.[/f1q3[ r\]^_&')*S,`#flYnp,sy}y*N+ flYp+y*N,#flYnp,syy*S*,t,#flYnp,syy*I+*S*,t*#flYnp,syy*D+;flYp+ylYp+yflYp+y,sy*N+,Y++,N*D-**N *ا*Z(B C+D-F8GSHUJ`KsL{K~MOPQPRTUTVWVXZ[\[!]1^9]<_>b`ciizjkmnpr[*\] z$%&')i)*SM,tL+*S,Zwyw(|[)\] %)l.*?*:*:ȶ*:*:Z &-[ .\]%)P*:*?*?Z [ \]%&')h**I**S LflYp+sy*+**S+.*N**D$***۱Z6 .3AHLX\cg[h\]T ! &')|*S!gflYnp+sy"y*S+$W*S! *'flY*S!d&p,yf.Z. ,7DKcloqz[|\]| 01&')/*DZ[ \]&')/*NZ[ \]23&')/*IZ[ \]45&')j *S+=p=*StZ [  \]  67)4 *S!Z[  \]%&')o1*AYCD*FYHI*KYMNf8f;Z !'0[ 1\]%&')?*S=*SM ,tL+*BD+*S,*JZ) 1:>[?\] $L%&')c***.,*, *. **,`.flYMp*S*,tsy*S*,tOZ*  &3LOb"[ c\]R6&')%*SZ[UVW2<PK 6zRwsctest/server/GameServer.javapackage sctest.server; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.util.LinkedList; import java.util.List; import javax.swing.Timer; import sctest.client.Player; import sctest.object.Board; import sctest.object.Card; import sctest.object.CardList; import sctest.object.PlayerCard; import sctest.rule.ObenRules; import sctest.rule.RoundRules; import sctest.util.CardTool; import sctest.util.Distributor; import sctest.view.GameServerUI; public class GameServer extends UnicastRemoteObject implements GameServerInterface { private static final int ENDTIMERDELAY = 1000; private static final int NEXTPLAYERDELAY = 200; /** * */ private static final long serialVersionUID = -5997367611838413979L; protected GameServerUI serverUI_; //protected BoardUI boardUI_; private CardList goneCards_; public GameServer() throws RemoteException { super(); goneCards_ = new CardList(); rules_ = new ObenRules(); board_ = new Board(); players_ = new LinkedList(); serverUI_ = new GameServerUI(); //boardUI_ = new BoardUI(); } protected RoundRules rules_; protected Board board_; protected int currentPlayer_ = 0; protected int nextPlayer_ = 0; protected List players_; private Player lastWinner_; public boolean playCard(Card card, Player p) throws RemoteException { if (!players_.contains(p)) { System.out.println("Player " + p.getName() + " not registered!"); return false; } if (board_.contains(card)) { System.out.println("Card " + card + " already on the board!"); return false; } if (board_.hasPlayed(p)) { System.out.println("Player " + p.getName() + " already played a Card!"); return false; } if (!players_.get(currentPlayer_).equals(p)) { System.out.println("Player " + p.getName() + " is not the current Player"); return false; } if (!rules_.isValid(card, players_.get(currentPlayer_).getHand(), getBoard())) { System.out.println("Player " + p.getName() + " played an invalid card!"); return false; } if (goneCards_.contains(card)) { System.out.println("Card " + card + " already played in this round!!!!!"); System.err.println("FATAL ERROR: Card " + card + " already played in this round!!!!!"); return false; } System.out.println("Card played! " + card + " by " + p.getName()); board_.addCard(card, p); // boardUI_.updateBoardUI(getBoard(), players_); PlayerCard pc = new PlayerCard(card.getColor(), card.getValue(), p); goneCards_.add(pc); updatePlayerUI(); if (board_.size() == 4) { endOfTurnInt(); } else { nextPlayerInt(); } return true; } private void updatePlayerUI() throws RemoteException { for (Player p : players_) { p.update(players_); } } private void nextPlayerInt() { while (endTurnTimer.isRunning()) { } while (nextPlayerTimer.isRunning()) { } nextPlayerTimer.setInitialDelay(NEXTPLAYERDELAY); nextPlayerTimer.setRepeats(false); nextPlayerTimer.start(); } Timer nextPlayerTimer = new Timer(NEXTPLAYERDELAY, new ActionListener() { public void actionPerformed(ActionEvent arg0) { //System.out.println("NextPlayerTimer started"); try { GameServer.this.nextPlayer(); } catch (RemoteException e) { e.printStackTrace(); } } }); Timer endTurnTimer = new Timer(ENDTIMERDELAY, new ActionListener() { public void actionPerformed(ActionEvent arg0) { //System.out.println("endTurnTimer started"); try { GameServer.this.endOfTurn(); } catch (RemoteException e) { e.printStackTrace(); } } }); private void endOfTurnInt() { while (nextPlayerTimer.isRunning()) { } endTurnTimer.setRepeats(false); endTurnTimer.restart(); } private void endOfTurn() throws RemoteException { Player winner = CardTool.evalWinner(getBoard(), rules_, lastWinner_, players_); System.out.println("Turn-Winner is " + winner.getName()); lastWinner_ = winner; nextPlayer_ = players_.indexOf(winner); board_.clearBoard(); this.updatePlayerUI(); if (this.goneCards_.size() == 36) { resetGame(); this.startGame(); } else { nextPlayerInt(); } } public synchronized boolean registerPlayer(Player p) throws RemoteException { if (players_.size() < 4) { System.out.println("Player " + p.getName() + " registered..."); players_.add(p); // If all Players ready, then start the game if (players_.size() == 4) { startGame(); } else { System.out.println((4 - players_.size()) + " more Player(s) needed..."); } return true; } System.out.println("Too many players!"); return false; } /* * ------------------------------------------------------------------- * Information for Players (AI players) */ public CardList goneCards() throws RemoteException { return goneCards_; } public Board getBoard() throws RemoteException { return board_; } public RoundRules getRules() throws RemoteException { return rules_; } public Player getPartner(Player p) throws RemoteException { int index = players_.indexOf(p); index += 2; index = index % 4; return players_.get(index); } public int registeredPlayers() { return players_.size(); } /* * ------------------------------------------------------------------- */ public void resetGame() throws RemoteException { goneCards_ = new CardList(); rules_ = new ObenRules(); board_ = new Board(); System.out.flush(); System.out.println("Restart Game..."); // players_ = new LinkedList(); // serverUI_ = new GameServerUI(); // boardUI_ = new BoardUI(); } protected void startGame() throws RemoteException { Distributor.distributeCardsTo(players_); for (Player p : players_) { p.getHand().sort(getRules()); p.update(players_); } nextPlayer(); } protected synchronized void nextPlayer() throws RemoteException { this.updatePlayerUI(); currentPlayer_ = nextPlayer_; if (currentPlayer_ == 3) { nextPlayer_ = 0; } else { nextPlayer_ = currentPlayer_ + 1; } System.out.println("\nNext Player: " + players_.get(currentPlayer_).getName()); // players_.get(currentPlayer_).update(); players_.get(currentPlayer_).activate(); // players_.get(currentPlayer_).update(players_); } } PK a}6|%sctest/view/resource/Rosen Banner.gifGIF89a}gii4+*32],x:8UI8%%&Ysz`b,!CS}EL0vur󞞞푑@9ĶN=J7,RPP!?,}p(mȤrl:ШtJHX"`^xL.znP~~9-u1"X>%zB$(+9?( Hp=3΀GTжЁ(% ';`=XDByXÇ"JHŋ3.Kԟ^ PcF(S\XI8sLF$hڼQ- OCWG"GC Mbi>OmjE X˖d0SʝkW~@: %;P@ֱ#hHHe$7&FAq ^]QH ƏS r`n%"mbT G cCLlNKʕ!D]";Z}my_Vb:Z` #_p95^9WSr4}HTqVdE1aR5 3@w1 A X8ri(_p1' F+B 7TCd]@- E 40B [ЇdX 7PX3Wcx 9#E: P l W'dg?'֠l8g xÑA⒨: @W'wi/l lK 0jaPh+j,Vv`AAB f*պႴv+%pC \˯rK޺J%'`«V0mA7 \kprS.?q+|y.X m $g %[BJ뀟, >r>=0ؖ0'?H1+*@-J)Ԫz@],­x :?sjкdDK`B 0u.0@m0N1+ 6pp h?im6:qDl>2<8&\l"1=ıw_Av~ ` @w VuZ[O+7L%Jo67u/UsAA@a2pu @E\3􉺜24$$}c* @AYJ|K^a -%!!xEZs0RP*F:i~A(H8i_:18 8bM<@VW*HJ~<,E0qc  P0QH ^ٱznoyFh [Q`ƠU`xp\)"XvQ+Ȍnޒ2 & Vla3΃SPЂiRs`krG!q eP2 # .̌§0$lM #S~=Ɣ` *0{&6 "'-idtɠL *Ca .i~EZ>ffRB{[[ޕ U(C[0*13ܧ_U@L)̀5Ca Z@+ఫԱ\Hb6-AΤPz]Kik0HKh5A#KV21QR݀W uhyeuuX p'5Yh W* 8 ٙؿna Pj)`WBzm+l=onch5Z9@aX[ ѥZ1UP`a:u-2_W;n.8 2A!H(W8ƒ9)lUkB! 6MDh.[܌b=G]Q@I 2Qmi'XFtܣ|gR[Y4ҍCбg~4e]@|8ti ֫h@lc{[8eo8*ngxwO- ܓA!Mërocd*KwDv\E6\$F"v;Zj+IsW҂^褏 ˎ6؄>HǸ3NF;ݾhzi-UfMt.!6ؕ>s:=4wm. xz;3Qh>jր=~~wtE7|P_70wW{GoG}g)ǀ N]:6~ bgVde&EFtLy| r0.4|,~ ȃAtwUb SBV|E~ $HA(U"G>Bb}G^gFlD/}(p8Y s*0@z([fv{S"WTB$@wV4bme(zV&8{xEyhVLhK؁~x~'$B`EE[؂$聴wx7$ȋXJ!Dy8x}W{"0Ȏx׈NA{~^Ho'`fIY?)xE%@G  ُeىԑ >[8oV0{G,Brٌ3ibW?cd+)0(R). wGiIKٔN}ZAI"@ljᨄVcT?gzr9Bb(ʡT)t8xzЗi0?45IiS0)^)3@gi9Q(RyEف稚ΐq>Y#9h 0v[<9Iɜ+ɇ3[7ANIUIi&Н \~O؛iyNj9m@иi{$נa8h@oLɜ1y%!i@jD%'0H2ڑp@W0<0vi9z|x?ʎ@9vt3M<ɤhXIribGz j^Ic {I8i<.*WY%2zK4?IwzHH9Պv8Ws*uڨzvLjhXURPS$V0: f 0lXѠ7pucBCFMușp`ELzRy)j}):ڥ^i`d.XZ-@dCz$~6 }{ʒqtz~0"R9K󓼭[McT`٦۴{d8 M+pwKi@U$۔﫴󫠙IL*>yI)J`p2QJ(b9黕xaSjw ۄ񋑁-L.$P-6\{88N 'bP4@2X #YG{}x k+U“W {h# Wv*.< {5YlSugzZE&$_ß{,Q|;Vz) DP_z? Tg6]Vyas+S1CEc&Zz#Bi.R ""0C @/VzsD7*r D`E)6 (`ާ^_g.3MC(o/Rt&BO.92e=DK$KcIĺǢ%|?9d6G&3K+TI15QPJ觰ΨQ1Y:%z5mעnĐnku+ PMPDfiEdꄢh BkpZ C?%6( !X{G#r2`X\J&Z1`wJCu,f+Fz #.&f^_`|@L 4<@Bx^_$$'VD|Z*/1Dj1E B /xE8.Pwț_-a7lT?ڐG/=YGВzH Rv_9ƎhG6]W%R\Id(bDv6xG<^u!€cp!زe2-DG%|`,(KPy; SǏ0#ʁ2Wl䢨<. $-`8)G>B"A?zH`|x.UT@Ꮼf#;`mÃA?eohდ,04c b  + rDCP/;f#|s/,e4L@4"*WT`8F J{~i!AQAG QL5(0: 0)ᴲ<MDx-PAsJeB0 N[۱R(!E3rSV{F%u-Uaջ@7UVr}3d 65Xa'cM֪d=@a/M`ZuoPzPw\ؐ5wY!v}׼xEFX|-H-J N-VUS!s۝88b8^v<@@ 0ՌCjXb|Uу x(OiJ\JdL^Nh 9xZX!,ZSʸkgdZXA\LJ6q6'w{r#Mĵ6X5\H=_:D8g Ͻ0vI`thxjDH^K硏^驯W< ` |O_o_ڃo@4כ t!A B@?1A nЁ9~q%4!2-ta 'B|/ #Pc>Y|P(Q1`S\9Kc#?"EZDY<>QJK8G1q$@6?ȑ;z+ ~]Ҩ1Ne&|* q8'0qW 1` ԲmθKgq d0p`#D@WgĠ"Ȓ{HYQ86}j"҆pR6!`J'@p5L$cmwo1asȕ!um% 0n@ U ^U#/T`y.'\{fK]xVm5È ,A&Q)@ h #vzo{ss, y`W @0’}&PgGd@cafsT95`A|@R|pgr/|He&z3NF̛ig98P {hY&XJ% CZ7i * j#NpMȲtYpp+WN@#Ķz"+ l)\p5p@'L{A4"/l{(@CP,P0@ MqSEuPI+3t@6uD!ncca rD X9.}6ǨDHFoGHr\A\6`6;# @b`B=:͎^ FW$,t] \(H]ꉸ;d&GH#gΝ%S)gIˤ@k$ɡLe-G pA69h!0,pFл3hlʆ)LjphGW9ϥ s"9i<86okg>9O/VA:ʲ|`sdA :H'O@pe^+ExST.Q@>p(9UO(MjJqHKp`lBE4S*=yQ=i8I!TQ 1:$)xwlj]Nyht@uLBgM,ZW?+ ~ed`OCA"xFjUO:-&j1X$GtF| ۴PG:G9wf{CW~@TF/oTt0~uiõ6 )~kpl5Z6Fദ-;:@T)hM_` }N[)y{u-XP[LCw^F mV/nJ)a H@f6C*/uM\]ltZX lzQNC`btqp s;? M;ȧ5V gr@QzO. &Z1p.w}<xu3"4@,5liXL'O 5N:x67@WkiT|羏*;ϭc@9!m+wf1ӵb;,{Um 4ϗ{2So׸o}6D9#O,邁Yԡ~|`P7||z>mzx$HWb%[:Vsq@w{q2R*lr@w(g7U|~8k7,xh*6Eu Hu0wpgTf5pj8XtM7Q 5(G-/ru~g s bx^ '<?xNCXH&%w/7`au'Cϵzr&hX5gHXWcw'܂rrHTG~_w5Sl6xO9CfChc Єf1F"00kH 3g8؃'p#yG]-s 1(1B1@(9%{ ~` `v#38'W8w%wu|-1 x/W! u5s&{;Yt67o׵6 @m"$*K (*X@n6s` <( ձ=x:Z!`([E0Z5_a'/ ƈ#Zc0(iw@]Y5y8$OH!@uQJ87ȶa^ J:&#j{ptKqq)7< Uiˇ3z8OM: #8Rw @{=r;~UI"9Jvu}{QضM9.G7_.5+u@C&fV\T%]n3zTB-eQIK#gi-36@+Vv F8d[WiWv풿U}~PQW:S m;Z%p  Pӊ:p;{enq5UW>[[ m/@+ hDZ8|Gx7@CWmRp iYWC|`ɪKpo}dGD sLoûK ֥nGul`B8g3Q,ŀ#ƩRBOQAвޤrvteft" n @{m޼)~ԻSX x1IiE%xaB9k4dQ~Z\D> J1lPьx Q#4p'p* pM8) >L s*B"PxF#3] bM lf{(ҮսWC"P1Ѳn\%1y?  @^{ЮJJx>%>llۈ]:E8 G;4 A\+ղ6fЖ/C_ɂw#pmxN g ah9#2j $dbwsZٵ.e At ב< T5:0snj|`&؈@ڌ5Is$["Œ-q*]-dR;]cZrCQi >*bja0 S&Pp]3y(#WRvڒCvrz+%^g MI' s_>,ɷ8`H@iQ*Rb&pJ8}]ИyYޞAۂ zy~~":Qg& Hj?QÊHi?`賔 <-u{yȔH<R3Mši~~1 :HW P{]y>)tu&6Vn׃j@^&`X[ p| M)"`2w֑h{#0]USѸ6b$ѿ@Iڃa[8f5;UG8^@ڞтV' .)g1 PjjH44#x< ڇ/uJw(uxu8p4z׺Zno{g/2X"Sws2C.[Mh{uq@Yabƿ!C(T(3TUk\K\H!D xqޠHF{9 . RVz #%(@ ΒN..&h.46H|4|H /b0'g*09)E@G LdRR`c/hky"F |h,ZK456PA> \ 7\qA^lXï!d $XҴ&6A@ۧn PM2^-͛[ foϼdPOY 3i0B! {v" wdH$c2NXm-Fb$8Bm@qE/cqlՅyu-Ve% )ņ 2p  LRl"S]=X.p*qLrx`)7aKkK8 $ٸJ6'[a`{N0G rϾu:LC^4I%1FSql1 a% 3 HaזK`4 *^+u#̪ ӦCD8!k'}74ʸ jPB.' fcrd~g VgZk砷P$^!CV~zSH!" 4: clR7>j@@ [F8l! 0/_RP  X@'.@M2HA,(>@uB8n9w`lyaRX7[;owƺz];MCEP| S| _9YoQ%D="Gp S\ y"#h ođ  KL`$Єoz,W W }8dS ;m8@ E5:"C`׺0< `i\#HA;dq d'`}c"-624\GB2#h@@ p0YvJaQe09A pHgرGH7蠏SD7WPASq,)a3;9iN'0A\Ń'@@<@3 )@@x:8%l9U)=ә=5>ie b0}cK}UڴgթTNLpW(ygVQW)Zʂ+nx|axpiN׺Q֯?}dA݁,}ծEr״5o$[ ׬RůL_ [Y^Z&p%*rZԲVlkk] 5!Va[20!lo`U67 *R6.`#0D#~KִxŋFXtbD2"K*0-*Bf 4raק=l5E.&exֶJQ\$# %0W4> q Jc.V rĀ6@xKx,Ϊ'O"=hqZ r mnyHDkrH?Qd#7=1bU=A- l) p`B)R ԑ{ʙt ЎόтA[F@ B"PJD @4q܈4եY8sǞnr0B"c^O 4AIպ@)A@FMl9†  wCbLnomwGs^7h&'3E`}gOo ~o]h`?0p /;PK a}6SG% #sctest/view/resource/Rosen Neun.gifGIF89a}W鯯548dc*,,.=oonK&'FNNMy(!22Q'pN=hwwH##%IrEEAzsfHP777堠/IH"edcYZXEEDC୭U@G!?,}p(L0frl:ШtJ8DL.zn݂#Aa , v 4Z40{B,' b3?>33+91GЁGܷ 09)o9 bF V(t#JHe4bBhɓ(K^LPA@FzP!*s]dXpяmH A:{J3Q*d!AF]SDeWo*GcyGkЮpnB}&PPqe:hl@SEaA 0p̚ x0&m!E5T5%a3.ؾ={9B#B/80```ø2Gxa(P* -z z(P5Btj *ta5l^Yli(@80 `k*Bɐ29:,.PZ``P \lFl#P@ =@R-LB |20][`Bڻz\07M0>@, .#L-j}R@ |`2+h0 /7v` fZZ_vgB_z~j+\^V+0rl%Tc+Ej=b Vu. Xϡ-Ǟ0>' |b|h7 m p>l5`0^t# ǿ|.R a*bGlXdĉx2G7vp9CX p CFep&PXY0와ۖ6 7dP@-8^ :l,Ѡ-aLZ@bl*ЀH [P z:P.Ehf ؃PpuaZ%HDC6FF08HA:؀=a"f6<[V 8̉PZ,^:Tjf4C<K2ǰKث.H'stN" ŤJ_"[X 0f[,Izy4ٸc,NLipHb9Q"If 9>;`9%Yɇv@Pm ZX tԷK @GZpϣp-Cz|8%kWtȃc|pW0yQ\ Tx8A"& ]b> C _[Jp0&٠5-:iUN5,=@M.\Oq>FǖUL`ګA!ն5v\j%&g @&[Ұ)We-5{cA:>VyGMt -ՈRp\؇))5Yp d!Oy ip%,0LC1XAivf 60` 0Ƕ:.I3AX@`' e=8 XfJ-!hTglS@^1G6Y&5"+/Cn|^/$L悜mgʯpP{+W.:*}yw.W0q-\: sяdzӍ]SG]p:'iu~}lo4XJL_8$+ߍ p80!(E y;ABLQDR^($nz̭1YF$ bIЂ l3X6vDy#G{>z`i4Iie{ A2=2`u)|'gwglB2`6 $07w6!/3BoH,a}g,%a֑6p_C:[!%) .(|77@q!Nxir8oYtjWXew7Y+>-b/c4q4P&}BX2+6:`3tw@5p-Gf/_hc+Q6z* Y94@7L{b3S&&.MhM.v ;g%ADG!mW HM@k(J0Q{6:WHx(8!pT=sHҢK&$(-Xd}TE4 8(Q.Z8͵P~[b6=/υnDX !o:sHr_&EŎ6Õ?E/RND`D?b`3?-#PZ҅4脡L>$D1$c'wY@*+@X<0aTYsW yHEŇE%1& :FJX<,.3cZ;xJ~T-pOTHb``K pGׂS^c6`+.^|XRPU[0#KA  23WK%G.xy{i+/D6OY8reFie9d5V1iIsXZmȘX-@OYsOc Ca@"^FBtMp!씙Z)\M7RR1+ t1Jf|DbNMכȨa(bN%4]@qj>f'O$d"Q6*4NvwNY nu&@Yt9`p8Y;CVP^ؒ o9 ~uU.mӥуZ>&0Oե^P" `MPbe;F'ceZ'QS@ő-xJ%*@%r_~O/4|*&W7W &+m3b%Z: ')) 5^ L;4Ri Pdd/rf[7#le*,po@>dmX; x0i)e/ׁgsJ#@'5D2~X46"lQi!:7 RWp o>p%`+Uwq Cvѩ*@-`.,jshʠU-ISR P*{y@a hBK 4.+MoI1;k-rƮn;అ`De]:p%e#٣Ұp+r+p%:`&:-60260v8d|!)[{t8(C:v!fPkzٺKaR=%f#P=>2 b1S*z= `*-8@Z׋+ SwԦc)@O{0kzim? k .+3sWATD' x̢Ȳ }hff%)s\K<%u@#O@L t©\MWs:l xգ#ʿ F|KW"&LWW^y*LŁ@Je4C26t)+ S,ƀPU`si$Q Q^Ar0XՊ- _;*ŀǐւ4 f"U3wPzl:q$G63ew鿏S04{Rc! ǭкCi!(<  < Xyp!#p37Y- wſ0JH-ո%:O 3%8 QD Ҽw*q8Q 0ͨqPn\b},:{@`e4lF8І+\Wr2&]BΗ;6F@D T8UɶB)} K Qd$y<-\\і0[6Q.@^ 3TmmM]%-|R[bzׁn)[RZr$-^}ŬQ˺~ƑN&}k:G)5"ݥpԮ $S8:} YЛUM3F&S[<> pFi@`סN]$pע[^h!`h ̠`LJD=OUk+ByNMpĥ.H@"$L`hh[.dQ}J˒/zZm>`t)Tbi?bm`bW8]%nsߍ^QoDl l~>[cQPخv[hƏC:"n܍_r'{/a}Np&. c*;ph5lx4],R/5>Rc5Q.&%IHڿexqh;zˋ8^奶7H%pn)vW('j4by@6P8@`?_r+`7W+pFE#z,Q]Sunk5kb kHe@`8E1sLq .;+Z@lԶHLmeJ F"w)Ѐu; COKõ?3DBp85,LdH^ N&ȪTJWYw3XXVXB6FH  &HZZ\" Nk,zF,B<b6W |rJ|`rBh(*!D fXN:$d> B,Lzzgi]`dYiUBn9c|Čޤ !ȹ1Ju1@>}l {sŋaT5>'qlR!._Έ>}Lr't]:ue&Ru:W>*FU/#iY__J-LЫHHuk.]|p\|@pPa 0\݌b93< 6p@p@ԪFgǷk4hࣆB0pcK0*jqaǷRE/ $Иѻ-D' !,,.衁T!$$vf F?2,n8FL!0AFp`zr1 &mfA6(@p0euTK\`v,D'T11R+!HsS3/G8:2 (ؠhfF`GdF`@+".nIC=X`? \@`?3Z0z8Z0k&OfkioU ЍH5Q1/&ͨ:pB+# 2@AZwq01-7EpM-!w0W1$AU8#n`m;P@@!Wai\\@`eDEP1AQ8!z(YHv]G.:E!23S Aiޘ : 0 ~sPhbct 8`.]pTp_=nylwE*f&QF<ŃWum..oH`}&=h:NO v80DWK f?@KN'fH`k« JePkr?+f{#>uV*bЦd6A G-HT, d _g:^*=|i dTNb !`׾>(bej` )n@u,Q-X"!GT(?\&}`vR=6ΒEfT Rb@J9T'2-8 ^?:!-gTP\!Ggq` TE[h&Hda >O-eCPjc2:Ђb43 + c0PЍ g†e GV0`5?bGr&p$wɊKb,ԉu]0M- L* Yph}f UpTԞBF fyKP (} A.I=R1 ~+o{e:e ӫ |o++h$txw~X0 >*҈I}jJ2(Q 0E+<@F5 `7U|o=h @0z34jU(a"/3X$| gU@dPXiZ &/4#Gj*7֦ (l5pBKxnFI4/|pjcD%8;\7u&V*\h'1S!(`oyt"#ҭ"-%E0@PA_ˆٗUzYCeH5e&:EA>ppB87 <>xp$2x F݊ L8 =T&fBZ`J bR6Dem{a P  @)n/wYY"0]x@RDЂ: 'pR?i~_r'$ɤ R: k٦v(÷* '|CdRN t &y( !j겻Cgߖ+f v\ 7,/@)S6J-ԻzO  $EKn+,CI5;d'EQǠ2V'5iWVmfPe5C@i@`+{lv-@&v\L@ rOF׹\64։jX+{ $)p꺈 W}H`C @EE(C+z<8pa@<@E#{Ke&ToW]>3?ma Rma#!>2`|݁qw3eL-ejYA ";h{ZF6Gyk%Ў3\gt (^d&C@P@>)WZg1k+ a:8$&}h=;!8N@8qk<^#zUuRFǸ1HyL˦ߟ)I%޲ [9^<*v/{r7ϭ;Xή x x s`7P] TW.|=؀ק!#@dw08n_GLg+[edLX|~_s&#-Oc3`T,_@~9rFw0Xp`œ<,UG{u |GЧv-leс2p;ѡJX~/*@}.E1pg|އg}2./Agqpgy2#g: =pv|[qlgn6a W |F' uWH2 wF-jG|hmot0kS*plIfEr= hO3Hc$ɄO8: ñ2&vv}ȇ2 Gd&xx{o-'zڗ p0et 0&@eWg#$FxIj4kR=x68ZFb  I FB!RxXkyLJjD| }p;Ffѷxe(e&Oʸ`W$2$g%SVΘȇX=o `W4!C""@!%WyL8( `8ySi@}4Wzc`)$I>D~Hv|sx@YCh, U0 Z|&S@908iZ=9 ?قFhه p6ӌ 9ƀpxU)==QyؑDyXp9m w*@F@{@K^;EhByEIv4yu+U#0HHiK2dt{rjfPP>$ :89xƹθYL8S3Xp!1隅|gg2$x7;Иo &虞Yp$?Bq觖IvrOJ-)o Md3 ؛(" /vA*Uuu*j]^>z۹Aq#Wm`)q]!o!6c C`8fSrC6yG+p:FB}p$DLA'/x86rl:;bx%!rZAI!U+J83$~!l [JdC:P{X0 K-}K<]hnڦz`qL )S/* K' ?"ڡ Ȫ Q-D9I2AHBS+M"ɯ6fpɪA)q(ADM! $60S}vbnR{$ @ DLcDdyT`9*xz@q&bJYAF^!U\ :8 (j8.- !MD0TekʱIƪ/ c o! +0h&#طK京&p(r~Mv m Fj4)y tye{sY2 (S[$i,>˄u {P6 k~h>v+͛ g{k+;fj;;a2KXŪ۾Vqך{&>7˫csSL ,:C?G˫*. Zd;yaWZ%`Gh! |bvgW4Rs}K! A,d׿yQ~ )gLł@ D@(!#ܽvƊdq{ m+; 0;0s vS+û-,kJ5Uo};;:3pn+ l y}#+<;Q<S$.lu7%^2?o8k$RYKǻlQ i0qsc,Bby> xl3Z4=b}ܟ uLj|&!H`* ,h0q!@:άLoAeDLAĵn+씁\,HYDu'@V!ZkU4 Ƅ߇ !\$b*!rvg7[!:b쒬˪c+k$k+DH!2&Ƈ$w'&ª&0-{g=$٣(N; ^h<IB!xi9Mo B(TMc|^0[$3Է,Mb p݂U){,9}X+'2 -2ܦr*AL9,87G:۽-u\w=k̹ ]u-F6 ~Nq=+&u-@P׭}Dۉ X 8xsg 10_}]-Z/%ׯlPp֬~q]&Ujz:By)Zܒ0!iX\i:9>\\ws<"3>Ғo9J>>$Rb8ȗAYĚ݋u%&FbW؝ =$qlH6C}+8>^gXɄ iZ-$1xWq]xDn\^hztBM1ojJZZ9اNxvEّs8@47R2]u$1>fL||ل.${U 0z=m;ys5p(f}8Iti鑨-y9y7!ScVÔx!y>d!YўӹI!a<{cd]ȋm^9Lxhxۀ:9U/Frpė5谁b։@aĈ8h< wO }4rvi׶r^0p*:}/Õ)}: M$K' h ~ۇNσ٢ @FH lP%p` ӈ 2@ .d(R npN@K <` QFZ҈@I*R  JâCNTJ2Ŧ<@&B\H3M<jN3QӟE^2PA hA4a8(K0QHeZk+S2<;SDAM"!jP-A lU0dC`O+U9Gn&A%Y1hj!^j3 e'WXv!ݨEc. &  08jQKuOvݒڝx`&I6Y% 4 twF/`0m1guaqГ&7`C^4p4M XeM 6H䒻+Þ[4!R=1mMXqڛ-(OՕ3qNGmS F B.09D{3wD_X)U__?mHv- AxW*2V0XO$ˠ>v"8zN:} |S֢Y#O𘟄%H6bHeR&Wơ*C `ǔ ZE9 S'| " # CƆ7јFeCzހ!}, f@ćbJ<` \D#!`H9U:㒫ܷWO\VW~nn-0Eފt2}\_kEozP:5^)GScHa9MH-i(C8NpC5Њ @f)lb5hWu( %M|I2׷+ 0;8gf "0n>f+,4ޠ?YF4@%klMl1&lec9}o F@v_?"bEܨhO<\(x.gQ9xna~k؁W`]: OynT `+6؃^PfuIM<; pHw1e<ʮ p0+c;٥u$iL R&:0M{bFv7^4LGLpt7؏+ pu*ȔgW| M1?|А>}0Hq,s~&DZNp꜇388'S!K:^mzXvb~{^xK6hhg7x/>t!yOWvU 5)5Azzя7Qzկ~k$^B݆q{ݧ/BQ!7񑟅,wO ֊ggCğ~>(!ϟiY^d0psn$;PK a}6E\ \ &sctest/view/resource/Schellen Neun.gifGIF89a}d^'XH"$Ӱt>02 0srn@.02OONppG/Q_^NBi%'ts(F-L݅=9KC7VTDC:^^@Ţ\<Zgfb!?,}p(4/r/:GтG4W='/ b ^y/` ( Az{⼋3jQI>T9N~ȲK0=:a LH` !eR|IԥС1M@&|&`&qƉ5R+J6h^m32= =tf64P@ (а!֠#?x ;@@BE n͑t}7k~k<s Bǒ ~s&#>.qicLEn7n ;^48Dh|@ (H|}%PPpx $``tp1w}TQU^5-!{/w߉ 8@އ*C3;pZ މpuV~`b{`xԕ5D.I 8^cQ|r7>c`0> SdhAV%_zb`sii pw *N!XơB lPA(4:³]B 6TY*}7lyJk2zV ,{bm{z.0@".A pn*ax!$0rs{mCxP<@ $4,,@:d^TD2n@;@*s>+A$(Z߇b~ݧ0SKB,?lж{2xKͮ((`wzGwH/,A= 4B1Ӟ`dE{.rU_ꁫz$l֗g[f((@n.wPM=< Ļֶ@r:^#]`:G(`΀lc  n@BlxT`t|(Lȿ`? \՘xOb   ރ+}"|4HtKh'Fqug{OoF1?0 k~SMt&qLH5=ݺAАPG,8F6N qT" @@ ,Kb!}*$a`Q@qiI9Ia6;rDaT0C2{\8\1X L-Az&sf%%.f0_4z 1H0m@`@T P=$%u~) EC#J@]WR 15(H|C3RH myiocGNIɳ8f QEPN | 6`;hu8CT AYq vS%>tȆ VpHkS)0,sTE> ̱ x) *%[ *ܫUT= x@h Pjv)H R. sOht,FU*ؿ8LГF]"`S &0vRZnN\!F WTeu`p`_&0=`$6xPa@uR+\犕Y/* u)c\- 7PP QKrmeTPr6S6aq4T=|>YRS607Ys@?ߑR#* >l@uwhYYGG@&<b4GV63mל`y7AHk%Ԏ) P$vqʁ5nfgF2 lF6 l9O!fBoyӛ(Ͻt{"bf|(( 7upp{ x3.w?9 ,= &%M~kAA=V6f2vn-so2ہ6j>8l +ȀJIA}8cX\/AOrQhW(. Wqn#q(wI)8|3C}HF/Pu<ч7d J s% }{- M.]nūM=CNJI-}@9x]7y㵋.%&%| LxYbk5'aqRzep~OQ=S:b@bffr0 Dy..p|c| Q2"@w`00k]/031@J}[MQhpYxG)L6(I ?*ӂn D 9C!AC8)r&NhM33Jь.>43FMX;D#M3E64 DFtLc*h煈 Kl2GE ATpQ0)>W!M#"@%Y5V>FB㒑JJg0RH,RdV?oJYa5D[]N5}:'#\2?l5UI6mJfjffFg}F!8zFBIB~VlUhjFJ.=u6Pi`Q1y]2֮nM$v12mRSmT7bp=OJ۪{`" n3}gm6m h })lơ~VM>n]ggɬvH'5&zh/W൷`qX*rPgK=jKѹ Ak@Je^]6SwZK0ӧe{a=0A熁`d{'}!;>@M$˳ay1 ;{r-f44c]:L!+Q{`vnG#W!p@K pDx72\\ry{ Û}{"D9L9 X{u+~GcRb7:,1bÅk$ ^6J38+˿C<{cr 3=WuN񈍢|@0ˊrgc1,cxǙ]wmLo4j 50]J^k50l;۫ # MÒ3F 3eVHPy`/ӗ9*@fh|j MǰF5]#K'|%' 0 Y8b?=N{/*wǏ5aH4gM iT! ;Y3 (CciCW_ 3WշFT+b0*LFg1*y2&ᩡbsaPac5W:•Q;!e?*j*@u|5*d*| mn-a:08H[[!g*pR=*^ĤҨ̥5*6\{X: m$%+_nI3g qmS*yA[X ERPXñj+c ]+3Pu H> _ Τv0 nrKsfi0C!Zp.LP"SnR}L@ڔFy6 $Dٔk>UtCyܟQf$Q&33No >!R8z8yߘ]@$80*/~t{ REsR3F RC>ÊY3Hߓ6hf(;p{cb<@xp=faj9Cx#I|B W#1"[-Xe2~'Nr!Ԕ-/ 1\^f ||պ.b][,<8]$1{|Il9]-(1 ' J 'y]hFoH)# Q[_r4ʟ5&W4eqTF&%8V%f |- aTuO( rD#3SYEzT<8z bd Ҵ*^:.F. h8\"( 0ce}(TRsZP>jjBE(;/09;Wx@ D(2TN#C 2#$h\ 9#xO,?` `&h&$u>TԃF O=0IuۼA7 ,1 \( 8@Ua ɒ  Q@a *zbSd KLHwwyH@Wi!UYC])%N5A6Hw8^PȜ((K@0GTyy 9vTȁ8n!Ցnbp{.2M@e'ӛ<sTko !%T9n+${CVc_OYפ%˺a{7Ak,dM)oPA]8<(Mh!wp=.{1%Dx\Ё )b 4h,Z#]sPs+a^ Q03o. Fy F-4敀l͓p+܅#`~Q,(n_D%" H)0t@ݕ>L P v9wz6r@T+'w p[@ Z8^r%Qx7sߙD!C~~Q$pN40EVChGĐ xXF!Q`ʰט15&վw``g걠j@%`@Hǽ&KZ$CG9|Ld hU\p > ($<Ql\##-Gq>/qIbժ4E#@MyA-.[ Q,?x9s9]"AA(u!fYn."Uuvf )'YR_ƒfU8 (/njM>]4w*fo~Si$i SUfHG W Y*DZh*N:Pa(^: 1G:Mq|"an Vd'ӀRיׅDlHZӈ ߼6Ů`m G:uKMZu DEPkֲXsA& _@ݭ8{t ’D%{hA]j#(l$(0 PrV ԫ`0L@ PFWܰR0`P '0R^ p VoA=14Sw(Rm@Ġ<1AU)F:(~f1 5!\pM=Un@+wRe7x9W^< 3c6mV TDTBjB\(t/]`q!0ձރl]vez֯yUgWfw]: xX}K7hJ!y,/17m5zѯ`O !5@q{b;PK b}6&!&!&sctest/view/resource/Schilten Acht.gifGIF89a}SSSnnn===---쨨)))$$$!!!eee222 ᕕ}}}rrr𝝝MMMYYYAAAvvvyyy^^^aaaHHHiiiEEE888!,}@p4rl:ШtJHp;LfwL.zvF {~'v\t }tB ftr"%!3w|58j9"3bf»e Gg'$='_"f# =!& + BZQ&92,bT :3ȱcC ңI(+VC.Hdɛ%sS')+ʄr "ITA)Ⴈ>!RZ][-Zx#,  HAIl Lp۷(#萺ҝÅ3@N# 9&ܹknA3v,dt85_Xb1_-p *ŇyNtCo]G 2Nyݺ09] ,ǧG_?!{C'|ȣg4GЄNCz=oqf F,Rg@ BLNLJCA*30BH& @n%q #~|CְA6@=J%PL9/#Bݖ30$ (lB(P-P8B&d•e)xE.m,$KbЃ L«$RcdvFIRR `p$Lk0O44O|$%W&G&lV/_lk)t,0r "q_zi8B󒴴hM/H]9J5<4g&E;A13"tg,(|f"'d @zʇFs1ǁX<ҌV2~$ f~`/>F~sn xQPbDqB!.׈K|{1B%jHʀ- 聪~5O/U@ ET@EXeKi$H5 T:zt}B`"2h+W 2䯰 k_Z󙶌 ,:hx) b'x)Y(ilaG)S*íN\Kw $K:^\nx|'6T QzhETi!'۷F 0puU?Tf Ug]`]%CwKp0jp3FĪlGպx$D.9שB7@s$9ԫ+vF bU H!7pF鷼C^L L cT; ^+[ :,k$"5K,Z:wؾ"U-f4Ѐz@JA_LYAYfCEY^?W.MUbzf5 bjKFדk-[OAMgPaz  ޵y~!euz=l1ݣMoq 0Nb)6/}{%xǣ /ʢ}=-D#!:x~rrZUw=9\2}sbut֞@/Ń]@c~tr%Zwl`#7lx=j4Zy䁛3G/z/%.5˦@.@EwOƏb~*Ms/|* ?}b%{^d=\P?9(j)yN3(B6PN_?~}}`DxywBB sl43?K}^_7 #}"y88wPCP,؂~xx!C}MRtcsh^5Ng(6 -e$@{健@P7q`E^p4@jWEN4\E< -c\؅`xb2&6sehɷ A>`pȂr}tXuxXH7G-2 BfІ|E؉@xƈUgUds(c艴h`}T*XxH&SKdȉ؋}茵(& @TG,(P?d،hUhA[8GDm1:\g>@B{UHxN(MȋZCx%XM؏@C2Cs1uH @ c4w7vvb&Y }NhB97 p `  (:PE޴Pa P)m]D/b9HV[XN%\*f&; dtUdɶW736&3}:t.PeSV#q2  PN 62PRL3@H4C]#К0hɓ[v3gUɨ$㷙[Ps(T@agD'^6-U)靳כx(xjIraX}] 0`/".St7Z_p6) P#?E|~#I@9=9)xrvh&*{a5Q,w#D&>٪ Ǜ0DuZ֛©JOW[PK 6ؚڊ ne*RKAWpdqxfy ( tH{F RRaJurx =M*Ux1Юj'Ÿ:{2ɱ|H VjPH*{PH& );Gk&:FQ_uK)jHZ2@P K(KI)hVa7ʱ3&eFUMy嵜lzl;̼lK53CT?6%:{Zʼ$YOՏ̑{~bv pGj'n1y- з\}8Qp~iΏ=x 지4U3Iޏ]݋nš{T}2d>X^ B'nEx.(ޏd$nOh^*n_yz98$ _ Pe2? z%5; >o@oOI`3I=Қx\6VKX8n=@N엙*~Z.%gol]/"Z_nظ zSf_wVq,i:J H ȤOܯI?}k40|-6pf>^ă e0I_u.k"Ymڀ v.1|8෫ߝrmrLr/u(L}#46Qy/1~7 C==I%@X*aqb"-| q4E@XN#^k4|46*H&Dz|.>2T6XB0NHHX\d2:4$tJTH WJ&@2d<fՊ6:}Ju\sRЭ玤Ih 7׀RUxA P@a49 4H)DbкUk|luĕ/vP sfL `ePfA ;(5s$azR9"ԼF /41zFmYvfpЀ,jQ aҖ.C DŽk@PtۼNO@Q?Bo.r>.# Up|АUXd  XTd䃧4xHψE{ [ƌ \cbKTE=6ІRBpk bQZp0e{PD2p;F@x'˷ | @=&E֪x fAT2HI#4eW09(Ţ jClML2!,^3&(ps x :4ɱlJO!&c:M q P;\ 9Y]"   5^BL;if=CS̅Δ3Zh€tc2J((8H?z?T)9Wa@DXt<rP MVRfsi!~𑘮1Xԅ!c+{ `9h^t)Ț\A$*%*l Dx~1anXé F1P]l0UjeyYiau< x6X8-d Ysh ec-o98 `͎d8YˉEN5g cX t{2Lv1-ޤ;O:ϕoԠ.*.Y6( <d%amiYZ Td^<40`ZufclJZ_~ aZPOD nqܾY"N&ibب&x rvͻt05), wqO?YCzt q%x.^ ,mJAs&ɷ62i`Б˃O3ё;m%}C'ҍt+[+"vխ~ugm`bTm5}W{x8)0PTؙ=m5!wO1z'0/C&"/S~o5hZ=&qqzf֗ # G 0'7|/bv}Ogp ):͌7џ~ 0_@ "o |{ 0]v@0 10@ֆAA0 CpHs D"@Up` >X/0F@p/p]`P ;PK 6sctest/scores/PK 68d? &sctest/scores/AbstractScoreTable.class1 sctest/scores/AbstractScoreTablejava/lang/Objectsctest/scores/ScoreTablePLAYERSI ConstantValue roundScores_Ljava/util/List; Signature$Ljava/util/List; roundRules_*Ljava/util/List;availableRules_Ljava/util/Map;;Ljava/util/Map;scores_[IchoosingPlayer_Lsctest/client/Player;()VCode     java/util/LinkedList  #  %java/util/LinkedHashMap $ (  * LineNumberTableLocalVariableTablethis"Lsctest/scores/AbstractScoreTable;isRuleAvailable(Lsctest/rule/RoundRules;)Z 243sctest/rule/RoundRules 56getName()Ljava/lang/String; 8:9 java/util/Map ;<get&(Ljava/lang/Object;)Ljava/lang/Object;ruleLsctest/rule/RoundRules; activateRule(Lsctest/rule/RoundRules;)V 8B CDput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;deactivateRulegetRules()Ljava/util/List;,()Ljava/util/List; 8J KLsize()I 8N OPvalues()Ljava/util/Collection; RTSjava/util/Collection UVtoArray(([Ljava/lang/Object;)[Ljava/lang/Object; XZYjava/util/List [\add(Ljava/lang/Object;)Zlarr[Lsctest/rule/RoundRules;iLocalVariableTypeTable addScores([ILsctest/rule/RoundRules;)V egfjava/lang/System hierrLjava/io/PrintStream;kError: Not a valid score array monjava/io/PrintStream pqprintln(Ljava/lang/String;)Vscoresrules getScores()[IgetChoosingPlayer()Lsctest/client/Player; y setChoosingPlayer(Lsctest/client/Player;)Vp resetScores SourceFileAbstractScoreTable.java!        k-** *Y!"*$Y&'*Y!)+ !,, --./0J*'+17+",-.=>?@J*'+1+AW+ &',-.=>E@J*'+1AW+ *,,-.=>FG H?Y!L*'I2M*'M,QW>+,2WW,++/02%4*544=9,*?-.7] *^_'`a 7]bcF+* djl*)+WW*",WW>*\.+.`O*+"= >@A(B-C9BEE,*F-.FrFs>*`tu/*+H, -.vw/*x+L, -.z{>*+x+ PQ,-.|}T* *Y!"*Y!)+TUVX, -.~PK 677%sctest/scores/AbstractScoreTable.javapackage sctest.scores; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import sctest.client.Player; import sctest.rule.RoundRules; public abstract class AbstractScoreTable implements ScoreTable { private static final int PLAYERS = 4; private List roundScores_; private List roundRules_; private Map availableRules_; private int scores_[]; private Player choosingPlayer_; public AbstractScoreTable() { scores_ = new int[PLAYERS]; this.roundRules_ = new LinkedList(); this.availableRules_ = new LinkedHashMap(); this.roundScores_ = new LinkedList(); } public boolean isRuleAvailable(RoundRules rule) { return (this.availableRules_.get(rule.getName()) != null); } public void activateRule(RoundRules rule) { this.availableRules_.put(rule.getName(), rule); } public void deactivateRule(RoundRules rule) { this.availableRules_.put(rule.getName(), null); } public List getRules() { List l = new LinkedList(); RoundRules arr[] = new RoundRules[this.availableRules_.size()]; this.availableRules_.values().toArray(arr); for (int i = 0;i(); this.roundScores_ = new LinkedList(); } } PK 6ZZ &sctest/scores/SchieberScoreTable.class1 sctest/scores/SchieberScoreTable sctest/scores/AbstractScoreTableSINGLELjava/lang/Integer;DOUBLE winningScore_IrlistLjava/util/Map; Signature;()VCodejava/lang/Integer  (I)V    LineNumberTableLocalVariableTable     "java/util/LinkedHashMap ! % 'sctest/rule/ObenRules & *,+ java/util/Map -.put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;0sctest/rule/UntenRules /3sctest/rule/TrumpfRules 2 *6 78keySet()Ljava/util/Set; :<; java/util/Set =>iterator()Ljava/util/Iterator; @BAjava/util/Iterator CDnext()Ljava/lang/Object;Fsctest/rule/RoundRules H IJ activateRule(Lsctest/rule/RoundRules;)V @L MNhasNext()Zthis"Lsctest/scores/SchieberScoreTable; winningScoreruleIterLjava/util/Iterator;LocalVariableTypeTable.Ljava/util/Iterator; addScores([ILsctest/rule/RoundRules;)V Y Z[ getMultiplier(Lsctest/rule/RoundRules;)I ] VWscores[IrulesLsctest/rule/RoundRules;multi isGameOver f gh getScores()[I scoreTeam1 scoreTeam2 *l mnget&(Ljava/lang/Object;)Ljava/lang/Object; p qrintValue()IruletoString()Ljava/lang/String;wjava/lang/StringBuilderyScores: Team 1: v{ |(Ljava/lang/String;)V v~ append(I)Ljava/lang/StringBuilder; Team 2: v -(Ljava/lang/String;)Ljava/lang/StringBuilder; v tu SourceFileSchieberScoreTable.java!    ?YY  =***!Y#$*$&Y()W*$/Y1)W*$2Y4)W*$2Y4)W*$2Y4)W*$2Y4)W*$59M*,?EG,K: (<Qf {!#%&%( OPQ RST RUVW%*,X>6+\.hO+*+,\13 436$74%OP%^_%`ab  c dN+*eL+.+.`=+.+.`>**"?A BDEG'H)J*+OP&^_ i j Z[E*$+koQOPsatu/*eL+.+.`=+.+.`>vYxz}}UW XZ*/OP*^_ "i j PK 6%sctest/scores/SchieberScoreTable.javapackage sctest.scores; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import sctest.rule.ObenRules; import sctest.rule.RoundRules; import sctest.rule.TrumpfRules; import sctest.rule.UntenRules; public class SchieberScoreTable extends AbstractScoreTable { private static final Integer SINGLE = new Integer(1); private static final Integer DOUBLE = new Integer(2); private int winningScore_; private Map rlist; public SchieberScoreTable(int winningScore) { super(); this.winningScore_ = winningScore; rlist = new LinkedHashMap(); rlist.put(new ObenRules(), DOUBLE); rlist.put(new UntenRules(), DOUBLE); rlist.put(new TrumpfRules(0), SINGLE); rlist.put(new TrumpfRules(1), SINGLE); rlist.put(new TrumpfRules(2), SINGLE); rlist.put(new TrumpfRules(3), SINGLE); //rlist.put(new CoiffeurRules(), DOUBLE); Iterator ruleIter = rlist.keySet().iterator(); while (ruleIter.hasNext()) { this.activateRule(ruleIter.next()); } } /* (non-Javadoc) * @see jagafa.scores.AbstractScoreTable#addScores(int[], jagafa.rule.RoundRules) */ public void addScores(int[] scores, RoundRules rules) { int mult = this.getMultiplier(rules); for (int i = 0;i= this.winningScore_) { return true; } if (scoreTeam2 >= this.winningScore_) { return true; } return false; } /* (non-Javadoc) * @see jagafa.scores.ScoreTable#getMultiplier(jagafa.rule.RoundRules) */ public int getMultiplier(RoundRules rule) { return (Integer)this.rlist.get(rule); } public String toString() { int scores[] = this.getScores(); int scoreTeam1 = scores[0] + scores[2]; int scoreTeam2 = scores[1] + scores[3]; return "Scores: \nTeam 1: " + scoreTeam1 + "\t Team 2: " + scoreTeam2; } } PK 6wk&sctest/scores/CoiffeurScoreTable.class1r sctest/scores/CoiffeurScoreTable sctest/scores/AbstractScoreTable winningScore_I ruleList_Ljava/util/Map; Signature;(I)VCode  ()V  java/util/TreeMap   sctest/rule/TrumpfRules  java/lang/Integer !valueOf(I)Ljava/lang/Integer; #%$ java/util/Map &'put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;)sctest/rule/ObenRules (,sctest/rule/UntenRules + #/ 01keySet()Ljava/util/Set; 354 java/util/Set 67iterator()Ljava/util/Iterator; 9;:java/util/Iterator <=next()Ljava/lang/Object;?sctest/rule/RoundRules A BC activateRule(Lsctest/rule/RoundRules;)V 9E FGhasNext()ZLineNumberTableLocalVariableTablethis"Lsctest/scores/CoiffeurScoreTable; winningScoreruleIterLjava/util/Iterator;LocalVariableTypeTable.Ljava/util/Iterator; addScores([ILsctest/rule/RoundRules;)V T UV getMultiplier(Lsctest/rule/RoundRules;)I X QRscores[IrulesLsctest/rule/RoundRules;multi isGameOver a bc getScores()[I scoreTeam1 scoreTeam2 #g higet&(Ljava/lang/Object;)Ljava/lang/Object; k lmintValue()Irule SourceFileCoiffeurScoreTable.java Deprecated!    D***Y*Y"W*Y"W*Y"W*Y"W*(Y*"W*+Y-"W*.2M*,8>@,DH: *@Vl!#$#&I JKLMNO MPQR %*,S>6+\.hO+*+,WH,. /.1$3I4%JK%YZ%[\] ^_G +*`L+.+.`=+.+.`>**H"8: ;=>@'A)CI*+JK&YZ deUV E*+fjHGIJKn\opqPK 6"NwLL%sctest/scores/CoiffeurScoreTable.javapackage sctest.scores; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; import sctest.rule.ObenRules; import sctest.rule.RoundRules; import sctest.rule.TrumpfRules; import sctest.rule.UntenRules; /** * @deprecated */ public class CoiffeurScoreTable extends AbstractScoreTable { private int winningScore_; private Map ruleList_; public CoiffeurScoreTable(int winningScore) { super(); this.winningScore_ = winningScore; ruleList_ = new TreeMap(); ruleList_.put(new TrumpfRules(0), 1); ruleList_.put(new TrumpfRules(1), 2); ruleList_.put(new TrumpfRules(2), 3); ruleList_.put(new TrumpfRules(3), 4); ruleList_.put(new ObenRules(), 5); ruleList_.put(new UntenRules(), 6); Iterator ruleIter = ruleList_.keySet().iterator(); while (ruleIter.hasNext()) { this.activateRule(ruleIter.next()); } } @Override public void addScores(int[] scores, RoundRules rules) { int mult = this.getMultiplier(rules); for (int i = 0;i= this.winningScore_) { return true; } if (scoreTeam2 >= this.winningScore_) { return true; } return false; } public int getMultiplier(RoundRules rule) { return (Integer)this.ruleList_.get(rule); } } PK 6acsctest/scores/ScoreTable.class1sctest/scores/ScoreTablejava/lang/ObjectisRuleAvailable(Lsctest/rule/RoundRules;)Z activateRule(Lsctest/rule/RoundRules;)VdeactivateRulegetRules()Ljava/util/List; Signature,()Ljava/util/List; addScores([ILsctest/rule/RoundRules;)V getScores()[I resetScores()V isGameOver()ZsetChoosingPlayer(Lsctest/client/Player;)VgetChoosingPlayer()Lsctest/client/Player; getMultiplier(Lsctest/rule/RoundRules;)I SourceFileScoreTable.java     PK 6,sctest/scores/ScoreTable.javapackage sctest.scores; import java.util.List; import sctest.client.Player; import sctest.rule.RoundRules; public interface ScoreTable { public abstract boolean isRuleAvailable(RoundRules rule); public abstract void activateRule(RoundRules rule); public abstract void deactivateRule(RoundRules rule); public abstract List getRules(); public abstract void addScores(int scores[], RoundRules rules); public abstract int[] getScores(); public abstract void resetScores(); public abstract boolean isGameOver(); public abstract void setChoosingPlayer(Player p); public abstract Player getChoosingPlayer(); public abstract int getMultiplier(RoundRules rule); } PK64L43META-INF/MANIFEST.MFPK !6zsctest/PK !6 sctest/view/PK !6sctest/view/resource/PK a}6'Hpt&t&(sctest/view/resource/Schellen Koenig.gifPK 364L33 'manifest.infPK b}6jF((sctest/view/resource/Schellen Sieben.gifPK `}63b#b#'Fsctest/view/resource/Eicheln Koenig.gifPK a}6|""%isctest/view/resource/Rosen Koenig.gifPK `}6{#S!S!#sctest/view/resource/Eicheln As.gifPK b}6puu'&sctest/view/resource/Schilten Sechs.gifPK b}6w"W(sctest/view/resource/Schilten Banner.gifPK b}6w8#]]&sctest/view/resource/Schilten Ober.gifPK 6c{3} } Ssctest/view/PlayerUI.classPK 6 /``sctest/view/PlayerUI.javaPK ጾ6obK&zz/sctest/view/GameServerUI$GameUIPrintSream.classPK ጾ6Ǝ~MMfsctest/view/GameServerUI.classPK ጾ6I+#sctest/view/GameServerUI.javaPK 6M D+sctest/view/CardButton.classPK 6;Dtu u 08sctest/view/CardButton.javaPK 6lb Dsctest/view/BoardPanel.classPK 6܍GGNsctest/view/BoardPanel.javaPK 6Z^bWsctest/view/HandPanel.classPK 6<KK4gsctest/view/HandPanel.javaPK u6,u-xsctest/view/BoardUI.classPK u6 Ɲ&&sctest/view/BoardUI.javaPK 6 Qsctest/ai/PK 6һ ysctest/ai/SimpleAI.classPK 6 Ri__1sctest/ai/SimpleAI.javaPK 6k%22Řsctest/ai/RoundStats.classPK 6eA../sctest/ai/RoundStats.javaPK 6S ;Qsctest/ai/JassAI.classPK 6:,Rsctest/ai/JassAI.javaPK 6Nsctest/naming/PK 63Vzsctest/naming/EColorNames.classPK  6Asctest/naming/EColorNames.javaPK 6q 77sctest/naming/CardNames.classPK 6S>++=sctest/naming/CardNames.javaPK 6=Gv  sctest/naming/EValueNames.classPK  6isctest/naming/EValueNames.javaPK a}6C#Dsctest/view/resource/Rosen Acht.gifPK a}6UWa"a"!{sctest/view/resource/Rosen As.gifPK b}6؄7q%%'sctest/view/resource/Schellen Under.gifPK `}6 K&<sctest/view/resource/Eicheln Sechs.gifPK a}63{$Wsctest/view/resource/Schellen As.gifPK 6х  psctest/Start.classPK 6{!; 1|sctest/Start.javaPK 6:(Wsctest/StartApplet.classPK y6C,sctest/Star