1
0
Fork 0
mirror of https://github.com/shlomif/PySolFC.git synced 2025-04-05 00:02:29 -04:00
This commit is contained in:
Shlomi Fish 2017-04-17 21:45:33 +03:00
parent 8573e23829
commit e54fedae2b
5 changed files with 52 additions and 35 deletions

View file

@ -2,19 +2,25 @@
#
# imports
import sys
# PySol imports
from pysollib.gamedb import registerGame, GameInfo, GI
from pysollib.util import *
from pysollib.stack import *
from pysollib.game import Game
from pysollib.layout import Layout
#***********************************************************************
from pysollib.util import ACE
from pysollib.stack import \
DealRowTalonStack, \
Yukon_SS_RowStack, \
isSameSuitSequence, \
StackWrapper
# ***********************************************************************
# Daddy Longlegs (by Jim Sizelove)
#***********************************************************************
# ***********************************************************************
class DaddyLonglegs(Game):
Talon_Class = DealRowTalonStack
@ -53,5 +59,5 @@ class DaddyLonglegs(Game):
# register the game
registerGame(GameInfo(555001, DaddyLonglegs, "Daddy Longlegs",
GI.GT_SPIDER, 1, 0, GI.SL_MOSTLY_SKILL,
rules_filename="daddylonglegs.html"))
GI.GT_SPIDER, 1, 0, GI.SL_MOSTLY_SKILL,
rules_filename="daddylonglegs.html"))

View file

@ -24,22 +24,21 @@
__all__ = []
# imports
import sys
# PySol imports
from pysollib.gamedb import registerGame, GameInfo, GI
from pysollib.util import *
from pysollib.stack import *
from pysollib.game import Game
from pysollib.layout import Layout
from pysollib.hint import AbstractHint, DefaultHint, CautiousDefaultHint
from gypsy import DieKoenigsbergerin_Talon, DieRussische_Foundation
from pysollib.stack import AC_RowStack
# ************************************************************************
# * Die böse Sieben
# ************************************************************************
class DieBoeseSieben_Talon(DieKoenigsbergerin_Talon):
def canDealCards(self):
return len(self.cards) or self.round != self.max_rounds
@ -84,16 +83,19 @@ class DieBoeseSieben(Game):
l, s = Layout(self), self.s
# set window
self.setSize(l.XM + max(8,rows)*l.XS, l.YM + 5*l.YS)
self.setSize(l.XM + max(8, rows)*l.XS, l.YM + 5*l.YS)
# create stacks
for i in range(8):
x, y, = l.XM + i*l.XS, l.YM
s.foundations.append(DieRussische_Foundation(x, y, self, i/2, max_move=0, max_cards=8))
s.foundations.append(
DieRussische_Foundation(
x, y, self, i/2, max_move=0, max_cards=8))
for i in range(rows):
x, y, = l.XM + (2*i+8-rows)*l.XS/2, l.YM + l.YS
s.rows.append(AC_RowStack(x, y, self))
s.talon = DieBoeseSieben_Talon(l.XM, self.height-l.YS, self, max_rounds=2)
s.talon = DieBoeseSieben_Talon(
l.XM, self.height-l.YS, self, max_rounds=2)
l.createText(s.talon, 'ne')
l.createRoundText(s.talon, 'se')
@ -116,5 +118,4 @@ class DieBoeseSieben(Game):
registerGame(GameInfo(120, DieBoeseSieben, "Bad Seven",
GI.GT_2DECK_TYPE, 2, 1, GI.SL_MOSTLY_LUCK,
ranks=(0, 6, 7, 8, 9, 10, 11, 12),
altnames=("Die boese Sieben",) ))
altnames=("Die boese Sieben",)))

View file

@ -24,24 +24,32 @@
__all__ = []
# imports
import sys
# PySol imports
from pysollib.gamedb import registerGame, GameInfo, GI
from pysollib.util import *
from pysollib.stack import *
from pysollib.game import Game
from pysollib.layout import Layout
from pysollib.hint import AbstractHint, DefaultHint, CautiousDefaultHint
from fortythieves import FortyThieves_Hint
from spider import Spider_Hint
from pysollib.util import ACE, KING
from pysollib.stack import \
RK_RowStack, \
SS_FoundationStack, \
SS_RowStack, \
Spider_SS_RowStack, \
UD_SS_RowStack, \
WasteStack, \
WasteTalonStack, \
StackWrapper
# ************************************************************************
# * Diplomat
# ************************************************************************
class Diplomat(Game):
Foundation_Class = SS_FoundationStack
RowStack_Class = StackWrapper(RK_RowStack, max_move=1)
@ -82,7 +90,6 @@ class Diplomat(Game):
# define stack-groups
l.defaultStackGroups()
#
# game overrides
#
@ -169,8 +176,8 @@ class Parliament(Congress):
def _shuffleHook(self, cards):
# move Aces to top of the Talon (i.e. first cards to be dealt)
return self._shuffleHookMoveToTop(cards,
lambda c: (c.rank == ACE, (c.deck, c.suit)))
return self._shuffleHookMoveToTop(
cards, lambda c: (c.rank == ACE, (c.deck, c.suit)))
def startGame(self):
self.s.talon.dealRow(rows=self.s.foundations, frames=0)
@ -262,7 +269,6 @@ class TwinQueens(Congress):
shallHighlightMatch = Game._shallHighlightMatch_SS
# register the game
registerGame(GameInfo(149, Diplomat, "Diplomat",
GI.GT_FORTY_THIEVES, 2, 0, GI.SL_BALANCED))
@ -282,4 +288,3 @@ registerGame(GameInfo(549, Wheatsheaf, "Wheatsheaf",
GI.GT_FORTY_THIEVES, 2, 0, GI.SL_BALANCED))
registerGame(GameInfo(563, TwinQueens, "Twin Queens",
GI.GT_FORTY_THIEVES, 2, 1, GI.SL_MOSTLY_SKILL))

View file

@ -24,21 +24,26 @@
__all__ = []
# imports
import sys
# PySol imports
from pysollib.gamedb import registerGame, GameInfo, GI
from pysollib.util import *
from pysollib.stack import *
from pysollib.game import Game
from pysollib.layout import Layout
from pysollib.hint import AbstractHint, DefaultHint, CautiousDefaultHint
from pysollib.pysoltk import MfxCanvasText
from pysollib.hint import CautiousDefaultHint
from pysollib.util import ANY_SUIT, KING
from pysollib.stack import \
AbstractFoundationStack, \
ReserveStack, \
WasteStack, \
WasteTalonStack
# ************************************************************************
# * Doublets
# ************************************************************************
class Doublets_Foundation(AbstractFoundationStack):
def acceptsCards(self, from_stack, cards):
if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
@ -74,8 +79,9 @@ class Doublets(Game):
dir=0, mod=13,
max_move=0, max_cards=48))
l.createText(s.foundations[0], "s")
## help = "A, 2, 4, 8, 3, 6, Q, J, 9, 5, 10, 7, A, ..."
## self.texts.help = MfxCanvasText(self.canvas, x + l.CW/2, y + l.YS + l.YM, anchor="n", text=help)
# help = "A, 2, 4, 8, 3, 6, Q, J, 9, 5, 10, 7, A, ..."
# self.texts.help = MfxCanvasText(
# self.canvas, x + l.CW/2, y + l.YS + l.YM, anchor="n", text=help)
x, y = l.XM, l.YM + 3*l.YS/2
s.talon = WasteTalonStack(x, y, self, max_rounds=3)
l.createText(s.talon, "s")
@ -132,5 +138,4 @@ class Doublets(Game):
# register the game
registerGame(GameInfo(111, Doublets, "Doublets",
GI.GT_1DECK_TYPE, 1, 2, GI.SL_MOSTLY_LUCK,
altnames=('Double or Quits',) ))
altnames=('Double or Quits',)))

View file

@ -10,7 +10,7 @@ use String::ShellQuote qw/ shell_quote /;
# my $cmd = shell_quote( 'flake8', '.' );
my $cmd = shell_quote( 'flake8',
grep { not($_ eq './pysollib/pysoltk.py' or $_ eq './pysollib/tile/ttk.py') } glob('./pysollib/*.py ./pysollib/[cmpuw]*/*.py ./pysollib/tile/*.py ./pysollib/ui/tktile/*.py ./pysollib/games/[a-cy-z]*.py') );
grep { not($_ eq './pysollib/pysoltk.py' or $_ eq './pysollib/tile/ttk.py') } glob('./pysollib/*.py ./pysollib/[cmpuw]*/*.py ./pysollib/tile/*.py ./pysollib/ui/tktile/*.py ./pysollib/games/[a-dy-z]*.py') );
# TEST
eq_or_diff( scalar(`$cmd`), '', "flake8 is happy with the code." );