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-09-18 15:57:16 +03:00
parent 86b243ad53
commit e0efb8a02c
10 changed files with 65 additions and 79 deletions

View file

@ -124,6 +124,9 @@
A badly formatted set of arguments will raise a ``VdtParamError``. A badly formatted set of arguments will raise a ``VdtParamError``.
""" """
import sys
import re
__docformat__ = "restructuredtext en" __docformat__ = "restructuredtext en"
__version__ = '0.2.3' __version__ = '0.2.3'
@ -161,8 +164,6 @@ __all__ = (
'__docformat__', '__docformat__',
) )
import sys
import re
INTP_VER = sys.version_info[:2] INTP_VER = sys.version_info[:2]
if INTP_VER < (2, 2): if INTP_VER < (2, 2):
raise RuntimeError("Python v.2.2 or later needed") raise RuntimeError("Python v.2.2 or later needed")
@ -704,7 +705,7 @@ def _is_num_param(names, values, to_float=False):
elif isinstance(val, (int, long, float, StringTypes)): elif isinstance(val, (int, long, float, StringTypes)):
try: try:
out_params.append(fun(val)) out_params.append(fun(val))
except ValueError as e: except ValueError:
raise VdtParamError(name, val) raise VdtParamError(name, val)
else: else:
raise VdtParamError(name, val) raise VdtParamError(name, val)

View file

@ -474,9 +474,9 @@ class Indian(FortyThieves):
FortyThieves.createGame(self, XCARDS=74) FortyThieves.createGame(self, XCARDS=74)
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.suit != card2.suit return (card1.suit != card2.suit and
and (card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or
or card2.rank + 1 == card1.rank)) card2.rank + 1 == card1.rank))
class Midshipman(Indian): class Midshipman(Indian):

View file

@ -165,9 +165,9 @@ class ThumbAndPouch(Klondike):
Klondike.createGame(self, max_rounds=1) Klondike.createGame(self, max_rounds=1)
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.suit != card2.suit return (card1.suit != card2.suit and
and (card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or
or card2.rank + 1 == card1.rank)) card2.rank + 1 == card1.rank))
class Chinaman(ThumbAndPouch): class Chinaman(ThumbAndPouch):

View file

@ -337,8 +337,8 @@ class LarasGame(Game):
break break
i = i + 1 % self.ROW_LENGTH i = i + 1 % self.ROW_LENGTH
return (card1.suit == card2.suit and return (card1.suit == card2.suit and
((card1.rank + 1) % self.Mod(i) == card2.rank ((card1.rank + 1) % self.Mod(i) == card2.rank or
or (card1.rank - 1) % self.Mod(i) == card2.rank)) (card1.rank - 1) % self.Mod(i) == card2.rank))
def getHighlightPilesStacks(self): def getHighlightPilesStacks(self):
return () return ()

View file

@ -21,8 +21,6 @@
# #
# ---------------------------------------------------------------------------## # ---------------------------------------------------------------------------##
__all__ = []
# imports # imports
# PySol imports # PySol imports

View file

@ -449,8 +449,8 @@ class Elevens_RowStack(Giza_Reserve):
if from_stack is self or not self.cards or len(cards) != 1: if from_stack is self or not self.cards or len(cards) != 1:
return False return False
c = self.cards[-1] c = self.cards[-1]
return (c.face_up and cards[0].face_up return (c.face_up and cards[0].face_up and
and cards[0].rank + c.rank == self.ACCEPTED_SUM) cards[0].rank + c.rank == self.ACCEPTED_SUM)
def clickHandler(self, event): def clickHandler(self, event):
return OpenStack.clickHandler(self, event) return OpenStack.clickHandler(self, event)
@ -651,8 +651,8 @@ class Fifteens(Elevens):
else: else:
reserve_ranks = [c.rank for c in reserve.cards] reserve_ranks = [c.rank for c in reserve.cards]
reserve_ranks.sort() reserve_ranks.sort()
if (9 in reserve_ranks or JACK in reserve_ranks if (9 in reserve_ranks or JACK in reserve_ranks or
or QUEEN in reserve_ranks or KING in reserve_ranks): QUEEN in reserve_ranks or KING in reserve_ranks):
if reserve_ranks == [9, JACK, QUEEN, KING]: if reserve_ranks == [9, JACK, QUEEN, KING]:
self._dropReserve() self._dropReserve()
else: else:

View file

@ -167,8 +167,8 @@ class WheelOfFortune_RowStack(Tarock_OpenStack):
return 0 return 0
if not self.cards: if not self.cards:
return 1 return 1
return ((cards[0].suit == self.cards[-1].suit) return ((cards[0].suit == self.cards[-1].suit) and
and (cards[0].rank == self.cards[-1].rank - 1)) (cards[0].rank == self.cards[-1].rank - 1))
def getBottomImage(self): def getBottomImage(self):
return self.game.app.images.getReserveBottom() return self.game.app.images.getReserveBottom()
@ -207,8 +207,8 @@ class Nasty_RowStack(SS_RowStack):
if not self.basicAcceptsCards(from_stack, cards): if not self.basicAcceptsCards(from_stack, cards):
return 0 return 0
if self.cards: if self.cards:
return (cards[0].rank == self.cards[-1].rank - 1 return (cards[0].rank == self.cards[-1].rank - 1 and
and cards[0].suit == self.cards[-1].suit) cards[0].suit == self.cards[-1].suit)
return cards[0].rank == 13 + 8 * (cards[0].suit == 4) return cards[0].rank == 13 + 8 * (cards[0].suit == 4)
@ -431,8 +431,7 @@ class Pagat(AbstractTarockGame):
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.suit == card2.suit and return (card1.suit == card2.suit and
(card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or card2.rank + 1 == card1.rank))
or card2.rank + 1 == card1.rank))
# ************************************************************************ # ************************************************************************
@ -502,8 +501,7 @@ class Skiz(AbstractTarockGame):
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.suit == card2.suit and return (card1.suit == card2.suit and
(card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or card2.rank + 1 == card1.rank))
or card2.rank + 1 == card1.rank))
# ************************************************************************ # ************************************************************************
@ -567,8 +565,7 @@ class FifteenPlus(AbstractTarockGame):
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.suit == card2.suit and return (card1.suit == card2.suit and
(card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or card2.rank + 1 == card1.rank))
or card2.rank + 1 == card1.rank))
# ************************************************************************ # ************************************************************************
@ -652,8 +649,7 @@ class Excuse(AbstractTarockGame):
self.s.talon.dealRow(rows=self.s.rows[:15]) self.s.talon.dealRow(rows=self.s.rows[:15])
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.rank + 1 == card2.rank return (card1.rank + 1 == card2.rank or card1.rank - 1 == card2.rank)
or card1.rank - 1 == card2.rank)
# ************************************************************************ # ************************************************************************
@ -741,9 +737,9 @@ class Grasshopper(AbstractTarockGame):
r.flipMove() r.flipMove()
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return ((card1.rank + 1 == card2.rank return ((card1.rank + 1 == card2.rank or
or card1.rank - 1 == card2.rank) card1.rank - 1 == card2.rank) and
and card1.color != card2.color) card1.color != card2.color)
class DoubleGrasshopper(Grasshopper): class DoubleGrasshopper(Grasshopper):
@ -889,10 +885,10 @@ class Cavalier(AbstractTarockGame):
self.s.talon.dealRow(rows=self.s.rows[:6]) self.s.talon.dealRow(rows=self.s.rows[:6])
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return ((card1.rank + 1 == card2.rank return ((card1.rank + 1 == card2.rank or
or card1.rank - 1 == card2.rank) card1.rank - 1 == card2.rank) and
and ((card1.suit == 4 or card2.suit == 4) ((card1.suit == 4 or card2.suit == 4) or
or card1.color != card2.color)) card1.color != card2.color))
class FiveAces(Cavalier): class FiveAces(Cavalier):
@ -914,9 +910,9 @@ class Wicked(FiveAces):
Cavalier.startGame(self, flip=(1, 1, 1), foundations=1) Cavalier.startGame(self, flip=(1, 1, 1), foundations=1)
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return ((card1.rank + 1 == card2.rank return ((card1.rank + 1 == card2.rank or
or card1.rank - 1 == card2.rank) card1.rank - 1 == card2.rank) and
and card1.suit == card2.suit) card1.suit == card2.suit)
class Nasty(Wicked): class Nasty(Wicked):

View file

@ -202,8 +202,8 @@ class ThreePeaks(Game):
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
if stack1 == self.s.waste or stack2 == self.s.waste: if stack1 == self.s.waste or stack2 == self.s.waste:
return ((card1.rank + 1) % 13 == card2.rank return ((card1.rank + 1) % 13 == card2.rank or
or (card1.rank - 1) % 13 == card2.rank) (card1.rank - 1) % 13 == card2.rank)
return False return False
def getHandScore(self): def getHandScore(self):

View file

@ -106,8 +106,8 @@ class AppachansWaterfall_Foundation(AbstractFoundationStack):
if self.cards: if self.cards:
rank = (self.cards[-1].rank + 1) % 12 rank = (self.cards[-1].rank + 1) % 12
suit = self.cards[-1].suit + (rank == 0) suit = self.cards[-1].suit + (rank == 0)
if (not pile or len(pile) <= 11 - rank if (not pile or len(pile) <= 11 - rank or
or not isSameSuitSequence(pile[-(12 - rank):])): not isSameSuitSequence(pile[-(12 - rank):])):
return 0 return 0
return cards[0].suit == suit and cards[0].rank == rank return cards[0].suit == suit and cards[0].rank == rank
@ -149,8 +149,8 @@ class Dashavatara_OpenStack(OpenStack):
dir = self.cap.dir dir = self.cap.dir
c1 = cards[0] c1 = cards[0]
for c2 in cards[1:]: for c2 in cards[1:]:
if not ((c1.suit + c2.suit) % 2 if not ((c1.suit + c2.suit) % 2 and
and c1.rank + dir == c2.rank): c1.rank + dir == c2.rank):
return 0 return 0
c1 = c2 c1 = c2
return 1 return 1
@ -173,8 +173,7 @@ class Dashavatara_OpenStack(OpenStack):
dir = self.cap.dir dir = self.cap.dir
c1 = cards[0] c1 = cards[0]
for c2 in cards[1:]: for c2 in cards[1:]:
if not (c1.suit == c2.suit if not (c1.suit == c2.suit and c1.rank + dir == c2.rank):
and c1.rank + dir == c2.rank):
return 0 return 0
c1 = c2 c1 = c2
return 1 return 1
@ -294,9 +293,9 @@ class AppachansWaterfall_RowStack(RK_RowStack):
pile, stack, rank = self.getPile(), stacks[0], 0 pile, stack, rank = self.getPile(), stacks[0], 0
if stack.cards: if stack.cards:
rank = (stack.cards[-1].rank + 1) % 12 rank = (stack.cards[-1].rank + 1) % 12
if (not pile or len(pile) <= 11 - rank if (not pile or len(pile) <= 11 - rank or
or not isSameSuitSequence(pile[-(12 - rank):]) not isSameSuitSequence(pile[-(12 - rank):]) or
or not stack.acceptsCards(self, pile[-1:])): not stack.acceptsCards(self, pile[-1:])):
return (None, 0) return (None, 0)
return (stack, 1) return (stack, 1)
@ -335,8 +334,8 @@ class Dashavatara_ReserveStack(ReserveStack):
OpenStack.__init__(self, x, y, game, **cap) OpenStack.__init__(self, x, y, game, **cap)
def acceptsCards(self, from_stack, cards): def acceptsCards(self, from_stack, cards):
return (ReserveStack.acceptsCards(self, from_stack, cards) return (ReserveStack.acceptsCards(self, from_stack, cards) and
and self.game.s.talon.cards) self.game.s.talon.cards)
class Dashavatara_RowStack(BasicRowStack): class Dashavatara_RowStack(BasicRowStack):
@ -372,9 +371,8 @@ class AbstractDashavataraGame(Game):
pass pass
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.suit == card2.suit return (card1.suit == card2.suit and
and (card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or card1.rank - 1 == card2.rank))
or card1.rank - 1 == card2.rank))
class Journey_Hint(DefaultHint): class Journey_Hint(DefaultHint):
@ -578,8 +576,7 @@ class Balarama(AbstractDashavataraGame):
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.color % 2 != card2.color % 2 and return (card1.color % 2 != card2.color % 2 and
(card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or card2.rank + 1 == card1.rank))
or card2.rank + 1 == card1.rank))
# ************************************************************************ # ************************************************************************
@ -601,8 +598,7 @@ class Hayagriva(Balarama):
Balarama.createGame(self) Balarama.createGame(self)
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.rank + 1 == card2.rank return (card1.rank + 1 == card2.rank or card2.rank + 1 == card1.rank)
or card2.rank + 1 == card1.rank)
# ************************************************************************ # ************************************************************************
@ -626,10 +622,9 @@ class Shanka(Balarama):
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
if stack1 in self.s.foundations: if stack1 in self.s.foundations:
return (card1.suit == card2.suit and return (card1.suit == card2.suit and
(card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or
or card2.rank + 1 == card1.rank)) card2.rank + 1 == card1.rank))
return (card1.rank + 1 == card2.rank return (card1.rank + 1 == card2.rank or card2.rank + 1 == card1.rank)
or card2.rank + 1 == card1.rank)
# ************************************************************************ # ************************************************************************
@ -659,9 +654,9 @@ class Surukh(Balarama):
force1 = 0 force1 = 0
else: else:
force1 = 1 force1 = 1
return (force0 != force1 return (force0 != force1 and
and (card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or
or card2.rank + 1 == card1.rank)) card2.rank + 1 == card1.rank))
# ************************************************************************ # ************************************************************************
@ -716,8 +711,7 @@ class Matsya(AbstractDashavataraGame):
self.s.talon.dealCards() self.s.talon.dealCards()
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.rank + 1 == card2.rank return (card1.rank + 1 == card2.rank or card2.rank + 1 == card1.rank)
or card2.rank + 1 == card1.rank)
# ************************************************************************ # ************************************************************************
@ -777,9 +771,8 @@ class Narasimha(Matsya):
Matsya.createGame(self, max_rounds=1, num_deal=1) Matsya.createGame(self, max_rounds=1, num_deal=1)
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.color % 2 != card2.color % 2 return (card1.color % 2 != card2.color % 2 and
and (card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or card2.rank + 1 == card1.rank))
or card2.rank + 1 == card1.rank))
# ************************************************************************ # ************************************************************************
@ -801,9 +794,8 @@ class Vamana(Matsya):
Matsya.createGame(self, max_rounds=-1, num_deal=3) Matsya.createGame(self, max_rounds=-1, num_deal=3)
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.color % 2 != card2.color % 2 return (card1.color % 2 != card2.color % 2 and
and (card1.rank + 1 == card2.rank (card1.rank + 1 == card2.rank or card2.rank + 1 == card1.rank))
or card2.rank + 1 == card1.rank))
# ************************************************************************ # ************************************************************************
@ -825,8 +817,7 @@ class Parashurama(Matsya):
Matsya.createGame(self, max_rounds=2, num_deal=3) Matsya.createGame(self, max_rounds=2, num_deal=3)
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.rank + 1 == card2.rank return (card1.rank + 1 == card2.rank or card2.rank + 1 == card1.rank)
or card2.rank + 1 == card1.rank)
# ************************************************************************ # ************************************************************************
@ -938,8 +929,8 @@ class Journey(AbstractDashavataraGame):
def shallHighlightMatch(self, stack1, card1, stack2, card2): def shallHighlightMatch(self, stack1, card1, stack2, card2):
return (card1.suit == card2.suit and return (card1.suit == card2.suit and
((card1.rank + 1) % 12 == card2.rank ((card1.rank + 1) % 12 == card2.rank or
or (card2.rank + 1) % 12 == card1.rank)) (card2.rank + 1) % 12 == card1.rank))
def getHighlightPilesStacks(self): def getHighlightPilesStacks(self):
return () return ()

View file

@ -44,7 +44,7 @@ while ( my $r = $tree->next_obj )
my $cmd = shell_quote( 'flake8', @filenames ); my $cmd = shell_quote( 'flake8', @filenames );
diag("<$cmd>"); # diag("<$cmd>");
# TEST # TEST
eq_or_diff( scalar(`$cmd`), '', "flake8 is happy with the code." ); eq_or_diff( scalar(`$cmd`), '', "flake8 is happy with the code." );