mirror of
https://github.com/shlomif/PySolFC.git
synced 2025-04-05 00:02:29 -04:00
New layout for Open Osmium/Open Peek that's more monitor-friendly.
This commit is contained in:
parent
82ef3b4b0e
commit
2d8efe9f42
4 changed files with 63 additions and 36 deletions
|
@ -12,3 +12,6 @@ Just like <a href="osmium.html">Osmium</a>,
|
||||||
but the rows are dealt face-up, and the remainder of
|
but the rows are dealt face-up, and the remainder of
|
||||||
the deck is dealt out face-up as reserve cards that
|
the deck is dealt out face-up as reserve cards that
|
||||||
can be moved to the foundations at any time.
|
can be moved to the foundations at any time.
|
||||||
|
<p>
|
||||||
|
Like <a href="openpeek.html">Open Peek</a>, but with
|
||||||
|
Osmium rules.
|
||||||
|
|
16
html-src/rules/openpeek.html
Normal file
16
html-src/rules/openpeek.html
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<h1>Open Peek</h1>
|
||||||
|
<p>
|
||||||
|
One-Deck game type. 1 deck. No redeal.
|
||||||
|
|
||||||
|
<h3>Object</h3>
|
||||||
|
<p>
|
||||||
|
Move all cards to the foundations.
|
||||||
|
|
||||||
|
<h3>Quick Description</h3>
|
||||||
|
<p>
|
||||||
|
Just like <a href="osmosis.html">Osmosis</a>,
|
||||||
|
but the rows are dealt face-up, and the remainder of
|
||||||
|
the deck is dealt out face-up as reserve cards that
|
||||||
|
can be moved to the foundations at any time.
|
||||||
|
<p>
|
||||||
|
An open variant of <a href="peek.html">Peek</a>.
|
|
@ -544,7 +544,7 @@ class GI:
|
||||||
tuple(range(22217, 22219))),
|
tuple(range(22217, 22219))),
|
||||||
('fc-2.14', tuple(range(811, 827))),
|
('fc-2.14', tuple(range(811, 827))),
|
||||||
('fc-2.15', tuple(range(827, 855)) + tuple(range(22400, 22407))),
|
('fc-2.15', tuple(range(827, 855)) + tuple(range(22400, 22407))),
|
||||||
('dev', tuple(range(855, 856)))
|
('dev', tuple(range(855, 857)))
|
||||||
)
|
)
|
||||||
|
|
||||||
# deprecated - the correct way is to or a GI.GT_XXX flag
|
# deprecated - the correct way is to or a GI.GT_XXX flag
|
||||||
|
|
|
@ -37,11 +37,12 @@ from pysollib.stack import \
|
||||||
from pysollib.util import ANY_RANK, ANY_SUIT, UNLIMITED_REDEALS
|
from pysollib.util import ANY_RANK, ANY_SUIT, UNLIMITED_REDEALS
|
||||||
|
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
# * Osmosis
|
# * Osmium
|
||||||
|
# * Osmium II
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
|
||||||
|
|
||||||
class Osmosis_Foundation(AbstractFoundationStack):
|
class Osmium_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):
|
||||||
return False
|
return False
|
||||||
|
@ -63,8 +64,8 @@ class Osmosis_Foundation(AbstractFoundationStack):
|
||||||
return _('Foundation. Build in suit regardless of rank.')
|
return _('Foundation. Build in suit regardless of rank.')
|
||||||
|
|
||||||
|
|
||||||
class Osmosis(Game):
|
class Osmium(Game):
|
||||||
Foundation_Class = Osmosis_Foundation
|
Foundation_Class = Osmium_Foundation
|
||||||
|
|
||||||
#
|
#
|
||||||
# game layout
|
# game layout
|
||||||
|
@ -122,21 +123,17 @@ class Osmosis(Game):
|
||||||
self.s.talon.dealCards() # deal first card to WasteStack
|
self.s.talon.dealCards() # deal first card to WasteStack
|
||||||
|
|
||||||
|
|
||||||
|
class OsmiumII(Osmium):
|
||||||
|
def startGame(self):
|
||||||
|
Osmium.startGame(self, flip=1)
|
||||||
|
|
||||||
|
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
# * Osmosis
|
||||||
# * Peek
|
# * Peek
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
|
||||||
class Peek(Osmosis):
|
class Osmosis_Foundation(AbstractFoundationStack):
|
||||||
def startGame(self):
|
|
||||||
Osmosis.startGame(self, flip=1)
|
|
||||||
|
|
||||||
|
|
||||||
# ************************************************************************
|
|
||||||
# * Treasure Trove
|
|
||||||
# * Peek II
|
|
||||||
# ************************************************************************
|
|
||||||
|
|
||||||
class OsmosisII_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):
|
||||||
return False
|
return False
|
||||||
|
@ -163,12 +160,12 @@ class OsmosisII_Foundation(AbstractFoundationStack):
|
||||||
return _('Foundation. Build in suit regardless of rank.')
|
return _('Foundation. Build in suit regardless of rank.')
|
||||||
|
|
||||||
|
|
||||||
class OsmosisII(Osmosis):
|
class Osmosis(Osmium):
|
||||||
Foundation_Class = FullStackWrapper(
|
Foundation_Class = FullStackWrapper(
|
||||||
OsmosisII_Foundation, base_rank=ANY_RANK, suit=ANY_SUIT, max_move=0)
|
Osmosis_Foundation, base_rank=ANY_RANK, suit=ANY_SUIT, max_move=0)
|
||||||
|
|
||||||
def createGame(self, max_rounds=-1, num_deal=3):
|
def createGame(self, max_rounds=-1, num_deal=3):
|
||||||
Osmosis.createGame(self, num_deal=3)
|
Osmium.createGame(self, num_deal=3)
|
||||||
|
|
||||||
def startGame(self, flip=0):
|
def startGame(self, flip=0):
|
||||||
self.startDealSample()
|
self.startDealSample()
|
||||||
|
@ -182,17 +179,18 @@ class OsmosisII(Osmosis):
|
||||||
self.s.talon.dealCards()
|
self.s.talon.dealCards()
|
||||||
|
|
||||||
|
|
||||||
class PeekII(OsmosisII):
|
class Peek(Osmosis):
|
||||||
def startGame(self):
|
def startGame(self):
|
||||||
OsmosisII.startGame(self, flip=1)
|
Osmosis.startGame(self, flip=1)
|
||||||
|
|
||||||
|
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
# * Open Osmium
|
||||||
# * Open Peek
|
# * Open Peek
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
|
||||||
class OpenPeek(Game):
|
class OpenOsmium(Game):
|
||||||
|
Foundation_Class = Osmium_Foundation
|
||||||
#
|
#
|
||||||
# game layout
|
# game layout
|
||||||
#
|
#
|
||||||
|
@ -202,7 +200,7 @@ class OpenPeek(Game):
|
||||||
l, s = Layout(self), self.s
|
l, s = Layout(self), self.s
|
||||||
|
|
||||||
# set window
|
# set window
|
||||||
w, h = max(2*l.XM+2*l.XS+(5+13)*l.XOFFSET, l.XM + 8*l.XS), l.YM+8*l.YS
|
w, h = 10 * l.XM + 10 * l.XS + (5 + 13) * l.XOFFSET, l.YM + 4 * l.YS
|
||||||
self.setSize(w, h)
|
self.setSize(w, h)
|
||||||
|
|
||||||
# create stacks
|
# create stacks
|
||||||
|
@ -214,20 +212,22 @@ class OpenPeek(Game):
|
||||||
y += l.YS
|
y += l.YS
|
||||||
x, y, = 2*l.XM+l.XS+5*l.XOFFSET, l.YM
|
x, y, = 2*l.XM+l.XS+5*l.XOFFSET, l.YM
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
stack = Osmosis_Foundation(
|
stack = self.Foundation_Class(
|
||||||
x, y, self, i, base_rank=ANY_RANK, max_move=0)
|
x, y, self, suit=i, base_rank=ANY_RANK, max_move=0)
|
||||||
stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0
|
stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0
|
||||||
s.foundations.append(stack)
|
s.foundations.append(stack)
|
||||||
y += l.YS
|
y += l.YS
|
||||||
y = l.YM + 4*l.YS
|
x += l.XS
|
||||||
|
x2 = x + (13 * l.XOFFSET)
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
x = l.XM
|
y = l.YM + (l.YS * i)
|
||||||
|
x = x2
|
||||||
for j in range(8):
|
for j in range(8):
|
||||||
s.reserves.append(OpenStack(x, y, self, max_accept=0))
|
s.reserves.append(OpenStack(x, y, self, max_accept=0))
|
||||||
x += l.XS
|
x += l.XS
|
||||||
y += l.YS
|
y += l.YS
|
||||||
|
|
||||||
x, y = w-l.XS, l.YM
|
x, y = w - l.XS, l.YM + (3 * l.YS)
|
||||||
s.talon = InitialDealTalonStack(x, y, self)
|
s.talon = InitialDealTalonStack(x, y, self)
|
||||||
|
|
||||||
# define stack-groups
|
# define stack-groups
|
||||||
|
@ -242,6 +242,11 @@ class OpenPeek(Game):
|
||||||
self.s.talon.dealRow(rows=self.s.reserves)
|
self.s.talon.dealRow(rows=self.s.reserves)
|
||||||
|
|
||||||
|
|
||||||
|
class OpenPeek(OpenOsmium):
|
||||||
|
Foundation_Class = FullStackWrapper(
|
||||||
|
Osmosis_Foundation, base_rank=ANY_RANK, suit=ANY_SUIT, max_move=0)
|
||||||
|
|
||||||
|
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
# * Genesis
|
# * Genesis
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
@ -320,8 +325,8 @@ class Bridesmaids(Game):
|
||||||
|
|
||||||
x, y = l.XM+2*l.XS, l.YM
|
x, y = l.XM+2*l.XS, l.YM
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
stack = OsmosisII_Foundation(x, y, self, suit=ANY_SUIT,
|
stack = Osmosis_Foundation(x, y, self, suit=ANY_SUIT,
|
||||||
base_rank=ANY_RANK, max_move=0)
|
base_rank=ANY_RANK, max_move=0)
|
||||||
stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0
|
stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0
|
||||||
s.foundations.append(stack)
|
s.foundations.append(stack)
|
||||||
y += l.YS
|
y += l.YS
|
||||||
|
@ -340,11 +345,11 @@ class Bridesmaids(Game):
|
||||||
|
|
||||||
|
|
||||||
# register the game
|
# register the game
|
||||||
registerGame(GameInfo(59, Osmosis, "Osmium",
|
registerGame(GameInfo(59, Osmium, "Osmium",
|
||||||
GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK))
|
GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK))
|
||||||
registerGame(GameInfo(60, Peek, "Osmium II",
|
registerGame(GameInfo(60, OsmiumII, "Osmium II",
|
||||||
GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK))
|
GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK))
|
||||||
registerGame(GameInfo(298, OpenPeek, "Open Osmium",
|
registerGame(GameInfo(298, OpenOsmium, "Open Osmium",
|
||||||
GI.GT_1DECK_TYPE | GI.GT_OPEN | GI.GT_ORIGINAL, 1, 0,
|
GI.GT_1DECK_TYPE | GI.GT_OPEN | GI.GT_ORIGINAL, 1, 0,
|
||||||
GI.SL_MOSTLY_SKILL))
|
GI.SL_MOSTLY_SKILL))
|
||||||
registerGame(GameInfo(370, Genesis, "Genesis",
|
registerGame(GameInfo(370, Genesis, "Genesis",
|
||||||
|
@ -355,8 +360,11 @@ registerGame(GameInfo(371, GenesisPlus, "Genesis +",
|
||||||
GI.SL_MOSTLY_SKILL))
|
GI.SL_MOSTLY_SKILL))
|
||||||
registerGame(GameInfo(409, Bridesmaids, "Bridesmaids",
|
registerGame(GameInfo(409, Bridesmaids, "Bridesmaids",
|
||||||
GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK))
|
GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK))
|
||||||
registerGame(GameInfo(715, OsmosisII, "Osmosis",
|
registerGame(GameInfo(715, Osmosis, "Osmosis",
|
||||||
GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK,
|
GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK,
|
||||||
altnames=("Treasure Trove",)))
|
altnames=("Treasure Trove",)))
|
||||||
registerGame(GameInfo(716, PeekII, "Peek",
|
registerGame(GameInfo(716, Peek, "Peek",
|
||||||
GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK))
|
GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK))
|
||||||
|
registerGame(GameInfo(856, OpenPeek, "Open Peek",
|
||||||
|
GI.GT_1DECK_TYPE | GI.GT_OPEN | GI.GT_ORIGINAL, 1, 0,
|
||||||
|
GI.SL_MOSTLY_SKILL))
|
||||||
|
|
Loading…
Add table
Reference in a new issue