1
0
Fork 0
mirror of https://github.com/shlomif/PySolFC.git synced 2025-04-15 02:54:09 -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 # imports
import sys
# PySol imports # PySol imports
from pysollib.gamedb import registerGame, GameInfo, GI from pysollib.gamedb import registerGame, GameInfo, GI
from pysollib.util import *
from pysollib.stack import *
from pysollib.game import Game from pysollib.game import Game
from pysollib.layout import Layout 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) # Daddy Longlegs (by Jim Sizelove)
#*********************************************************************** # ***********************************************************************
class DaddyLonglegs(Game): class DaddyLonglegs(Game):
Talon_Class = DealRowTalonStack Talon_Class = DealRowTalonStack

View file

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

View file

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

View file

@ -24,21 +24,26 @@
__all__ = [] __all__ = []
# imports # imports
import sys
# PySol imports # PySol imports
from pysollib.gamedb import registerGame, GameInfo, GI from pysollib.gamedb import registerGame, GameInfo, GI
from pysollib.util import *
from pysollib.stack import *
from pysollib.game import Game from pysollib.game import Game
from pysollib.layout import Layout from pysollib.layout import Layout
from pysollib.hint import AbstractHint, DefaultHint, CautiousDefaultHint from pysollib.hint import CautiousDefaultHint
from pysollib.pysoltk import MfxCanvasText
from pysollib.util import ANY_SUIT, KING
from pysollib.stack import \
AbstractFoundationStack, \
ReserveStack, \
WasteStack, \
WasteTalonStack
# ************************************************************************ # ************************************************************************
# * Doublets # * Doublets
# ************************************************************************ # ************************************************************************
class Doublets_Foundation(AbstractFoundationStack): class Doublets_Foundation(AbstractFoundationStack):
def acceptsCards(self, from_stack, cards): def acceptsCards(self, from_stack, cards):
if not AbstractFoundationStack.acceptsCards(self, from_stack, cards): if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
@ -74,8 +79,9 @@ class Doublets(Game):
dir=0, mod=13, dir=0, mod=13,
max_move=0, max_cards=48)) max_move=0, max_cards=48))
l.createText(s.foundations[0], "s") l.createText(s.foundations[0], "s")
## help = "A, 2, 4, 8, 3, 6, Q, J, 9, 5, 10, 7, A, ..." # 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) # 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 x, y = l.XM, l.YM + 3*l.YS/2
s.talon = WasteTalonStack(x, y, self, max_rounds=3) s.talon = WasteTalonStack(x, y, self, max_rounds=3)
l.createText(s.talon, "s") l.createText(s.talon, "s")
@ -132,5 +138,4 @@ class Doublets(Game):
# register the game # register the game
registerGame(GameInfo(111, Doublets, "Doublets", registerGame(GameInfo(111, Doublets, "Doublets",
GI.GT_1DECK_TYPE, 1, 2, GI.SL_MOSTLY_LUCK, 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', '.' );
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 # TEST
eq_or_diff( scalar(`$cmd`), '', "flake8 is happy with the code." ); eq_or_diff( scalar(`$cmd`), '', "flake8 is happy with the code." );