From 1ac67d54c4f3cc09e6620d1d201472c8b5949921 Mon Sep 17 00:00:00 2001 From: skomoroh Date: Sat, 8 Aug 2009 05:33:50 +0000 Subject: [PATCH] + 1 new game * minor fixes git-svn-id: file:///home/shlomif/Backup/svn-dumps/PySolFC/svnsync-repos/pysolfc/PySolFC/trunk@249 efabe8c0-fbe8-4139-b769-b5e6d273206e --- .../cards/bottoms/french/bottom02-n.png | Bin 5250 -> 4497 bytes data/images/cards/bottoms/french/bottom02.png | Bin 5250 -> 3868 bytes pysollib/games/golf.py | 9 ++++++++- pysollib/games/pyramid.py | 17 +++-------------- pysollib/games/windmill.py | 12 +++--------- 5 files changed, 14 insertions(+), 24 deletions(-) diff --git a/data/images/cards/bottoms/french/bottom02-n.png b/data/images/cards/bottoms/french/bottom02-n.png index 7c1e5f25bb7c06811ddbaadb02077c44e661e1f2..9511020c29f2e2943b2ebd17b5f4fb6f7134db89 100644 GIT binary patch delta 4460 zcmV-y5tHtMDUleIB@zGt5hF=NK~#9!?VWkFR@HgNfA0m9St+Q15Ku!< zG%AXyC;~-63=szwRck6}vSPbbs*O!u8rxW7HFbn&veXPlO;RZuM#UjGgjqtc3^fWW zq7ViZL6G6{^pA5$ub1!M``4r9!zlQPRiC7WerF+X^Yhj*`~IK;mbT`cxeHDF&)JWu8$ecKMj+iv_2 zSPQ%cEGlJN3fv9DTjXhB+ZcYd6}(kgC82CYl*VPMrg&~FHv4Q zNjFPc9>BJrO8QEQ{9WdIkmnKWB=yg`0DpT+njWE&+a>)_QtLWpnxq9G%6dmq%R1#W zmvlpfp>B_)N0a{6lyrRxOIT5{UDBAmig1*qPh+a+Qb|YDDf`qAFK1Mp`#VXR9g}VA zC7qc7f6XNQrz!_~b9eql(svSQ#hdD`V@djDfP0^-bKgKo?WY|0k_DhO?XlDUVnH#Ex>)}`nLUTfbY~WL-p{8+?k~DDKAtffyI*gW+}o`Qu3O4T2gCC ztI8ZYn@Rd^3U+OgbWBL@ddB#38F(EyDJ9)61r`C{Y~s2{@Xl^r zl9FAon%SU$yj=y{ORzI0m4em4w|~v-#k7R@4d9n4S8^{+JM?bHJCBhjE-?$*xXlAp`Y-8L)Jl*MTKb+O*caYfHa9Bc)?1sr2$ z50;zjCW;Ubce)G5iJ49FzZ-7?KC7bozYH92W{;Ygg4`H-vLa~<;XPui6`z<{hk!gD z2TZ~9{;5>#@Eg^HpaP7eM}Mqwy4w$d&lj87GT;>8r3$U{LZGjiJrGueQN{Fu)7^gf zFw9M6_7O0goP~-j19t-h%L2cLAFwjBoo03wa2>EGLlJ%goMUFM=ktrz^Z8qrqQBc(N$2~| zKC8s>ql+8=oHEx}r_>WxW<)SawtP4pHK#=ClrvEgMa<+*D!d}DJwYPKg#Q}N)EU= zIz)JtW%6QJIs_oPy~>Lty;V~Cf^rlj5dNp~QtLVdBzb%QlE)X6qh^v8mC4a)r>fut zo20h_2=OgdaAv89Tpg#TbFtjxR27cgF#Fk87MQQbwp>@L!n3kwMe3IoF2~4LNnb7~ zXU*m18-FZ?^PH-J6WT)3!U*eQ3slgg*pf~z!N)A8s&HifM+{q6KPWJNuha{qd8|`a zFam3QU&7iLgjnl;Gu0H3$1!zyc*rR$7$6w>#1Dv`&f0N;uq`t^5V1OpIvfuzj| z`r2)jG_qiv{zTHNdA6~6#ssy-i=fpF7z&Ig`G1hUoq%bQR^Wx!osAcv;R7?YK<|1jML!pIuzrTKZZ=UV6 z6bU&LxBxHL$l?B9N4(Q~Yw_0d<^j{qY)itn^uf!Ca&kReHUaDWzxlw^X120|MK~Pq zgny*r#poFpBtKp?wZl80KC4}X9efX$Brq$;$$vcGgJ(%Xw#>~cG)Ecro>*ob?ygo5cJ$9e zB#Hl#bZ{BAbZa15Se$q}Z(@{mSHL>lR*jRASt$jOoY|OztE2-Y%}>de*?BpJAn9L2 z*5SL=B*fcOj_Z6!BewiFWm_J|0spsFQqCojKqj%?`~vj~R)F901fu2&~uwxl6Why@d(FMq-*KS9KEO|^jDttR=Jty!#0kJ&r$Gcv40z8S5!l&`EIXbE-Xy_Vu^twX(@1gK}ERS%#I7d)xd(RI1Dhe zd1>~DVS0pW!UWeFMz3dFJ>r4D`@kUu6X8cdcQe~wCQm(qcM8N$4>MbnT90UEJAu0? z9_}hvgg(wL7(Zp#H-F9~iT41D3Pkb(zs^B0v|vIUnz|6ptQNQe_`CoFe-4cE>l_3{ zOJd$Dbs_pTVDu4(#0bR^&Pu4^8zMkw%hOIHE9qcK{}qGn>m-e+Q*J|< zs2;0x&4?1Ibi?3@w1dCL`2sqnkh?Dk-jmcVLq7URdL~5jr1vFVC#hAv@@6z}{mOdR zwes(OKY!qJYb8wzb5JVNS#tyAcgKs4&^_aJu^Bki%>FkA4fIQRLE(o1r{D!4ZCPjN z-2|)#UcyUrG1ts?mndgr1M8InI+)p(de^tWi#Rb1&!P1Qpkp14>;TsLGydm+=gn+w z)vS6->MdzwhCSi7Qt8xk#?e8NI+q(?M$!@GCVxt5qMYWEx}-7e)?`hx??iB}zvh)T zb^{li*@8R^(ag4(+4=wr#Qh`wzVEqv%xs;RZLNAC`W0S`xBId)&5j1orE3<|hggJI zSV+21(w>xtsb!V()hi$;L-JyKP0qQ!8ZYNaRIC8b zH?wL#b3HoY>kHj0ww1IjLQnXyq+SK#X?;L$K9khdsjPgGkCOCJ2ocs6Wp*g(-$FLj zhn>QL5q(aGHO89@!p&ilwuThq9!bYIg?|Mj{GS34JXw+zgqI&joXGvwsVg|?Pn1FI zGD&RQA1i@-ahdPA?djTi;6OlsgA=l%e zM$(j+7yRefcd&J6`b9igg2<&s*e&q=6Q?K{%#-A@i3NBW9VBh2L*QOXXBME|gJmTB zDPgCOKTEnO>647r^isx^Iuul8b?hSPEJ@c&dLw1;^|$?%ioue)7iAS9%u6y!b0mEt y=`hELLzZGZQPST#CLA0b92^`R92^{~3;zeBI>A`DTmZiS00007;jiO>VYE(4O&$IUgV+AD=qdvPRcER2r4x@rmz@g}6 z<&V8lyxel;oN4FG{63%iN#xAzy=I^9S-Z^IYeT70rAn15Re!2fsZym% z)lap0EmGBSs=889+t7ENHGJ3UTGCV71%m~;=2M9RMjmQi2DFPEBo1KAfBbk>lr%( zFG9Dxq3=5CyUwS+>vS$XVr3An51g1nRa*mx738;loc-T5fL%%uE7SRyHNiAAR#m$+ zxHsGcIBKbX`eg}X$KG%~U}TC_y1+pV?hP*imL7ua?0>t?uoA@fH6nvL_iA8oxC=0} zm5(m>U1x<7#C(A`NL5#BKnObn7q{{82EYj=h;3_&4C?F*Y}9}b@qD0nJD;E8yH3v% z#AU~aU4a!ds=h~qdBc&w?>o3`CE(H$#AW3bwC=be>;+s`;pM}9*V(rO@%vg-(7NM< zaAn|5V1Jbew_WGE&K4zz-|6Fm)*Yw*7uY1?Jq~b>?>gN|5CI#&I;RA&YH#>k;D9P` z?+J|eU8hs&5seg}F7Qagn?f52b-7g|v*D-`^0Cy12YtdtT z*EzBT5$**Rq+I76bqrw>a2v2zjKyB%yUzZF27ggR{sml?VwEpi`0G_;fguU-aFg#k zd#3*V=c#2?byeUUOvqBw+CfAfsZ(z_5*VN0_qPbx(+k2$MeLdpkvYJx08O~6tLqrT zVVDT^B%R3ez+JxU3@Rju7REb)QxdG=A>h|_3gJLIsY@efb46f+?>a*Y38IDZeBe(B z6o36RFj7RmsY3|+0~0XsiPO@`z$D*wjxN*~vBh|?Gw?F;MaRqmdW*=+I)rdb;1S>l z8Jck^aJ(0Uiwgy!g|Vxh-L73@Q6aFEh)kW7EsC3JLITL~Xy&#-dcOcq5%0qzd zFl$~OuqyB=CRfdSz+_;Gh%9d9{*7&yx_@ewCNu-PipYa)*w+&i$-JJmZB6SveP9Og zIPhF+wxs~!P&+2f)83j_fZe?y{HQKKRMl;PKLCS)NT(k#k`;0xI)_|02heJTPZy+y zV@weC0&c3p>*qnY07rO1xG+-?Rds*N3-~1T6(;EOcuaqMwR0L2a$&LiD5!npN+E5>xPS8#wrdX1 zUqq%?0bx%&2^&abs2LO2c)Aya^HT%SP9mNMewxyQz6?AE9MQpbSKD#weks}Yn1~FB z=mihAU)m}(p56nF_JZ)Cv_L%Aj%(7?Vmf{`8DjQhq^WNwM(qID1vmsa2IxiO>ki-& zF9@GW8pOAN4Jifiiim8{3V(cqfK4%pLPr3r6|illV#3y50$%ol@RODoG}Qp%mL-JW z)8?w$yA2QC3FuQ$2*0#Ls`+-MVR5V;QB}_ZPA&QSo=z2!bK2>e`vB(xI~SlW-UP-0 zH&*g)x)u;0!o0pK^_?b*$W9eZR(7`&l?@uO4d!A}o?Pn%VZ{N?wSUAT_9(flu1&lk zoM6X|Cu7!08%2)-n|nccO%w=g^@v|meMC&7>I)HBJ<1Kf>uieI#8uA+6V10js>`DS z7zc=R$yaz%9u$hm%299fUFU~(R#}fjohiV7dO`SRErrz5HGf=kw=7fD+~ft}=fF1=a%Ml#;t; z^ir(_ctLn0uziky=wAZ|c|jQK=C)cuyfbIN&^#!XHnEYW6T!JwDdmabygzsf^Zz>OqeWE=*LB9D>m8E^A} z2Y{cq*k-zEE7xwalwFHOHmQHMC46!DBpFK2kyfJP1HI$ z8IZ;dITH{Qf_o@|gv z7la`u>D8-M7I9ma5Y{D#z>zUs(`Yb$VTTz}L&#nSj>_8py6T$k@fRP{ab);BpocxB zpnp*EUFRfB9-T@w7uYI}z}BL9#8FhXJ)w)ewut&8CJjs_IxG(m)|E%Jd3N5S@-3L} zV3vZkXe8PVSyO5M7>rB2AUr-VHrJC!97VK!z#A0RD|$ir8gN!Sm%IU-lqZ|(!Xv8c z2AJrZsJjN|0ewW|odSBrPMGZ+eOmc=SAQ=EAIOuvO?3caXG{{%YPPO+0dBRqvy0{x zziDIjU~=9dte38NEU;A#_xA(NENB-!mG2+O-i%2HQYwNcY*N)fsA{v;u4Yv|RaKjc z){egG?BlzR+P^=SWJQCphpIlJ@#|q5xl^dIqVGDs1+h#c7y-gPRdu!|r_WS%w||1c zc$M!ukLB6MP8mbzVB!kb!i0^DB>9xS-GB+IIt>#-^$6x|&Bv`ofj5d?vwx*ZW$FzLl!3psKg3>I!9Rl*$ssOYQpUC3&_pwdfn) zb=Cy-#GKpL!~S)}?B<(+S<8DGn1AR6;g<>9vN7fqsGqg4Wfm~g{yhWS zS9(FXsE#1)hS^ND^hUFffz3ta^TL2=7f>(7oIzKuo(4vHLHJaSw(J93K!58Q#46Q0 zzzJRu-cttByJJ#u@Vdbk&a zpXCt5aX=->p)MAY(G3Tp?|(X7fhU083EKM_u$|q*+nz0J*~vzd86VySw#gHWs(Jx% zVuV}H5|J@^u)QfJ2%Bsd*gIi+HwA99^|fWo^1$Cn{;a_Df$?^4NFE?OJtBkvr>W|H zHw=iFaQ>kw**pw5yPeN3!=%PbLj!?}a{%EO;EXD7KVMZ(%=#H>?thwn*Xd`w!L)Y- z_VeB zPQcAEK?rc7s$Qe2%her-zUvGoyAw5cu=OvoWf--kWvfNo`>wNdiV&^@+=EFR8mA5i z?#SZ3bgdrogp7w4OMfpv{8z@d{4OO3e}Gxa+BKmn_5vQTNlf!UMzo8?vuQuSO43@0 z*@GgO_r#go;sxQn1R->RzhiQNC#~m!VInds?;de*#$PW1iZW+z05r4wLm{X)y%K3Ayj9K*Ft^_fk`m6>Bw*e;90fa4K?3*=+AC%lJqj#%> z(8WZyuT*Ex+Xc8=RoBQ8#3xJcmeEsHK-d`*$lJY6pLs1{e64xPYXR}GlDk-boPPp- zUgys}5V)|G0&0pQ^j&8L$%o|Ei$3*&@JA87;UT~c4S&=I2Z+e+X?sL~yGs7P)n6h) zxG`{5gSEjms@f|H5HAN7mkgr7xQO?hOMcf1tCa(slRAiA5WWN4UvkL(wk<04hFbx{ z8?-ILD-DR47;EJ4ZHvt zWuG~UHYgZ~8>SATg>gD?S^*k(OqIE{yB7?^?thtpXmtryM4{A?o}u~-U|CJ(nlq|* z&CEdbf^ac#C=fOvgbOffi>rODnbr1+Ls{2hj^c1@@ycj%a-y*sq2zd5P{Q7>E@=Z{i6yeb-qB zn12#w;F>ed0{VGDSo0eZ8%{qHlR2T$H4Er2A{8A;(v-9{UJ!nW33;l=^~FWN-f=(( zV84{HDcira(u^G)TPcL8c*LbV-ujH9?OcsL?dKQU>*Lb9z#tKsTFuRAd&DInW5Y2yn)9Y?$Io?IdBdHm=)DM82`-@a<~vt5vrGeMIDiY71z};@h?f&xZkTzoqJ)1gvN8pAoU%#h45g zKNXRKL}YGF?U3a+@4L?0nCu8^XMYUgY|QCVng1|U^~ac`@Ix(}F5hiCRXZ7Y4|BNs zWZ)?g`MQ;IKBM*ZN(ELIkuO_Z-x-r}Vkjn{bzPwAQjE;E-gAnrce04gi0ucNb;J9v z(+iU=KdVLFuYkcVk5kK&RCP5>f~HxOtj*aI2;OVwk|84U&kD-vgozlMSAVO=%VpQx zqMLpbb1J~x466Sc7?EcPZ5R5bhy)Q9i2K#}`I36S5s{fmLzoK?EsRs`1ZH8Hjs_Fb z^&pL>SU^luO?ffI3&KZ${Yfu~^EfXEZ=*3atb@;YP}Sv25Zi|FZs4dCsyfdL!iL<7 zZIe4~)WKz|lCvF!O?hibFMkNHBl=0~QFN^rgs0HB8d2eOdzT<~4C5bx3lb>$9^hyi zTO%vHZg^H_GuI7>7RHl+Yho<&F<}2Hwt&`Cx4a>h=OF3^Y+r&{nSO~mbEH;H1NQKO zu+jHik4*Ub#3XrdS$i(@Gr%TQ7V!lp!ust-CQwzo0Pg@%(kF+&hJPaBmmaa>E_xnj zjqzVq+`bq%u+bs38XXZrFd1IYC_Q2{&$uHniD-LtPxXTEoJJ>5Rexl?VV5dyZ^lIA zOwaNen(C#oy&(Jt(SlX)!sMwgg3hQCLhKLwywW2^_l&my2X=7T>p*|otv9+i?1kB~ z+o{H)ejy^69pcnfhktE<1n^=zpU(mIDhPxt1GmQjA;8V5x@HMt|lAUvc2!RwC6yt)N& zByDesNEGb(sJ;Lrz1RQ%002ovPDHLkV1i<0;|l-) diff --git a/data/images/cards/bottoms/french/bottom02.png b/data/images/cards/bottoms/french/bottom02.png index 7c1e5f25bb7c06811ddbaadb02077c44e661e1f2..52c8b3efccc0dfdda11f24560634eba6f735ae87 100644 GIT binary patch delta 3825 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 delta 5218 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 diff --git a/pysollib/games/golf.py b/pysollib/games/golf.py index 4786dd8e..5952f591 100644 --- a/pysollib/games/golf.py +++ b/pysollib/games/golf.py @@ -914,6 +914,7 @@ class FirTree_GameMethods: class ThreeFirTrees(Golf, FirTree_GameMethods): Hint_Class = CautiousDefaultHint + Waste_Class = Golf_Waste def createGame(self): @@ -929,7 +930,7 @@ class ThreeFirTrees(Golf, FirTree_GameMethods): s.talon = Golf_Talon(x, y, self, max_rounds=1) l.createText(s.talon, 'n') x += l.XS - s.waste = Golf_Waste(x, y, self) + s.waste = self.Waste_Class(x, y, self) s.waste.CARD_XOFFSET = l.XOFFSET/4 l.createText(s.waste, 'n') # the Waste is also our only Foundation in this game @@ -946,6 +947,10 @@ class ThreeFirTrees(Golf, FirTree_GameMethods): self.s.talon.dealCards() +class RelaxedThreeFirTrees(ThreeFirTrees): + Waste_Class = StackWrapper(Golf_Waste, mod=13) + + # ************************************************************************ # * Napoleon Takes Moscow # * Napoleon Leaves Moscow @@ -1169,4 +1174,6 @@ registerGame(GameInfo(763, Wasatch, "Wasatch", GI.GT_1DECK_TYPE, 1, UNLIMITED_REDEALS, GI.SL_MOSTLY_LUCK)) registerGame(GameInfo(764, Beacon, "Beacon", GI.GT_1DECK_TYPE | GI.GT_ORIGINAL, 1, 0, GI.SL_MOSTLY_SKILL)) +registerGame(GameInfo(768, RelaxedThreeFirTrees, "Relaxed Three Fir-trees", + GI.GT_GOLF, 2, 0, GI.SL_BALANCED)) diff --git a/pysollib/games/pyramid.py b/pysollib/games/pyramid.py index 7a589200..5292468f 100644 --- a/pysollib/games/pyramid.py +++ b/pysollib/games/pyramid.py @@ -727,22 +727,10 @@ class TripleAlliance(Game): # * Pharaohs # ************************************************************************ -class Pharaohs_RowStack(Pyramid_RowStack): - def acceptsCards(self, from_stack, cards): - if not self.basicAcceptsCards(from_stack, cards): - return False - if not self.cards: - return False - r0, r1 = cards[0].rank, self.cards[-1].rank - if r0+r1 == 11: - return True - return r0 == r1 - - class Pharaohs(Pyramid): Talon_Class = InitialDealTalonStack - RowStack_Class = Pharaohs_RowStack + RowStack_Class = Pyramid_RowStack PYRAMID_Y_FACTOR = 3 @@ -769,6 +757,7 @@ class Pharaohs(Pyramid): s.foundations.append(Pyramid_Foundation(x, y, self, suit=ANY_SUIT, dir=0, base_rank=ANY_RANK, max_move=0, max_cards=52)) + l.createText(s.foundations[0], 's') # define stack-groups l.defaultStackGroups() @@ -867,7 +856,7 @@ class Apophis_Hint(Pyramid_Hint): self.addHint(50000+len(r1.cards)+len(r2.cards), 1, r1, r2) -class Apophis_RowStack(Pharaohs_RowStack): +class Apophis_RowStack(Pyramid_RowStack): def acceptsCards(self, from_stack, cards): if not self.basicAcceptsCards(from_stack, cards): return False diff --git a/pysollib/games/windmill.py b/pysollib/games/windmill.py index 9cb06305..434c28be 100644 --- a/pysollib/games/windmill.py +++ b/pysollib/games/windmill.py @@ -194,9 +194,7 @@ class DutchSolitaire(Windmill): # * Napoleon's Tomb # ************************************************************************ -class NapoleonsTomb(Windmill): - - FILL_STACK = False +class NapoleonsTomb(Game): # # game layout @@ -223,12 +221,11 @@ class NapoleonsTomb(Windmill): s.rows.append(Windmill_RowStack(x, y, self)) x, y = x0 + l.XS, y0 + l.YS s.foundations.append(Windmill_Foundation(x, y, self, base_rank=5, - mod=6, min_cards=1, max_cards=24, - max_move=0, dir=-1)) + mod=13, max_cards=24, dir=-1)) for d in ((0.1, 0.1), (1.9, 0.1), (0.1, 1.9), (1.9, 1.9)): x, y = x0 + d[0] * l.XS, y0 + d[1] * l.YS s.foundations.append(Windmill_Foundation(x, y, self, - max_cards=7, base_rank=6, max_move=0)) + max_cards=7, base_rank=6, mod=13)) # define stack-groups l.defaultStackGroups() @@ -238,9 +235,6 @@ class NapoleonsTomb(Windmill): # game overrides # - def _shuffleHook(self, cards): - return cards - def startGame(self): self.startDealSample() self.s.talon.dealRow()