def createGame(self, rows=13, reserves=False): # create layout l, s = Layout(self), self.s # set window w, h = l.XM+rows*l.XS, l.YM+2*l.YS+20*l.YOFFSET self.setSize(w, h) # create stacks x, y, = l.XM+(rows-4)*l.XS//2, l.YM for i in range(4): stack = Osmosis_Foundation( x, y, self, i, base_rank=ANY_RANK, max_move=0) stack.CARD_XOFFSET, stack.CARD_YOFFSET = 0, l.YOFFSET s.foundations.append(stack) x += l.XS x, y, = l.XM, h-2*l.YS-3*l.YOFFSET for i in range(rows): s.rows.append(BasicRowStack(x, y, self)) x += l.XS x, y, = l.XM, h-l.YS-3*l.YOFFSET for i in range(rows): s.rows.append(BasicRowStack(x, y, self)) x += l.XS if reserves: s.reserves.append(ReserveStack(l.XM, l.YM, self)) s.reserves.append(ReserveStack(w-l.XS, l.YM, self)) s.talon = InitialDealTalonStack(l.XM, l.YM, self) # define stack-groups l.defaultStackGroups()
def createGame(self): l, s = Layout(self), self.s self.setSize(l.XM+8.5*l.XS, l.YM+4*l.YS) y = l.YM suit = 0 for i in (0, 1, 3, 4): x = l.XM+(2+i)*l.XS s.foundations.append(SS_FoundationStack(x, y, self, suit=suit)) suit += 1 x, y = l.XM+4*l.XS, l.YM for i in range(4): s.foundations.append(SS_FoundationStack(x, y, self, suit=i, base_rank=KING, dir=-1)) y += l.YS for i, j in ((0, 0), (1, 0), (2, 0), (5, 0), (6, 0), (7, 0), (0, 1), (1, 1), (2, 1), (5, 1), (6, 1), (7, 1), ): x, y = l.XM+(0.5+i)*l.XS, l.YM+(1.5+j)*l.YS stack = BasicRowStack(x, y, self, max_accept=0) s.rows.append(stack) stack.CARD_YOFFSET = 0 x, y = l.XM, l.YM s.talon = DealRowRedealTalonStack(x, y, self, max_rounds=3) l.createText(s.talon, 'se') l.createRoundText(s.talon, 'ne') l.defaultStackGroups()
def createGame(self): # create layout l, s = Layout(self), self.s # 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 self.setSize(w, h) # create stacks x, y, = l.XM, l.YM for i in range(4): stack = BasicRowStack(x, y, self, max_move=1, max_accept=0) stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0 s.rows.append(stack) y += l.YS x, y, = 2*l.XM+l.XS+5*l.XOFFSET, l.YM for i in range(4): stack = Osmosis_Foundation( x, y, self, i, base_rank=ANY_RANK, max_move=0) stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0 s.foundations.append(stack) y += l.YS y = l.YM + 4*l.YS for i in range(4): x = l.XM for j in range(8): s.reserves.append(OpenStack(x, y, self, max_accept=0)) x += l.XS y += l.YS x, y = w-l.XS, l.YM s.talon = InitialDealTalonStack(x, y, self) # define stack-groups l.defaultStackGroups()
def createGame(self): l, s = Layout(self), self.s self.setSize(l.XM + 11 * l.XS, 2 * l.YM + max(2 * l.YS + 12 * l.YOFFSET, 5 * l.YS)) x, y, = l.XM + 1.5 * l.XS, l.YM for i in range(8): s.foundations.append(SS_FoundationStack(x, y, self, suit=i % 4)) x += l.XS x, y = l.XM + 1.5 * l.XS, 2 * l.YM + l.YS for i in range(8): s.reserves.append( BasicRowStack(x, y, self, max_move=1, max_accept=0)) x += l.XS x, y = l.XM, 2 * l.YM + l.YS for i in range(4): stack = Saxony_Reserve(x, y, self, max_move=1) self.s.rows.append(stack) stack.CARD_YOFFSET = 0 y += l.YS x, y = self.width - l.XS, 2 * l.YM + l.YS for i in range(4): self.s.reserves.append(ReserveStack(x, y, self)) y += l.YS s.talon = Saxony_Talon(l.XM, l.YM, self) l.createText(s.talon, "ne") l.defaultStackGroups()
def createGame(self): l, s = Layout(self), self.s self.setSize(l.XM + 10 * l.XS, l.YM + 5 * l.YS) x, y = l.XM, l.YM for i in range(4): s.foundations.append(SS_FoundationStack(x, y, self, suit=i)) s.foundations.append( SS_FoundationStack(x + 6 * l.XS, y, self, suit=i)) x += l.XS x, y = l.XM + 4 * l.XS, l.YM r = list(range(11)) for i in range(5, 0, -1): for j in r[i:-i]: x, y = l.XM + (j - 0.5) * l.XS, l.YM + (5 - i) * l.YS s.rows.append(BasicRowStack(x, y, self, max_accept=0)) x, y = l.XM, l.YM + 1.5 * l.YS s.talon = WasteTalonStack(x, y, self, max_rounds=1) l.createText(s.talon, 'ne') y += l.YS s.waste = WasteStack(x, y, self) l.createText(s.waste, 'ne') l.defaultStackGroups()
def createGame(self, playcards=20, rows=8, reserves=1): decks = self.gameinfo.decks l, s = Layout(self), self.s self.setSize( l.XM + (reserves + 0.5 + rows) * l.XS, l.YM + max(2 * l.YS + 7 * l.YOFFSET, l.YS + playcards * l.YOFFSET)) x, y = self.width - l.XS, self.height - l.YS s.talon = InitialDealTalonStack(x, y, self) x, y = l.XM, l.YM for i in range(reserves): stack = ReserveStack(x, y, self, max_cards=UNLIMITED_CARDS) stack.CARD_YOFFSET = l.YOFFSET s.reserves.append(stack) x += l.XS x, y = l.XM + (reserves + 0.5 + (rows - decks * 4) / 2.0) * l.XS, l.YM for i in range(4): s.foundations.append(RK_FoundationStack(x, y, self, suit=ANY_SUIT)) x += l.XS x, y = l.XM + (reserves + 0.5) * l.XS, l.YM + l.YS for i in range(rows): s.rows.append(BasicRowStack(x, y, self, base_rank=NO_RANK)) x += l.XS l.defaultStackGroups()
def createGame(self, rows=8, reserves=4, playcards=6): l, s = Layout(self), self.s self.setSize(l.XM + rows * l.XS, l.YM + 3 * l.YS + playcards * l.YOFFSET) dx = (self.width - l.XM - (reserves + 1) * l.XS) // 3 x, y = l.XM + dx, l.YM for i in range(reserves): s.reserves.append(ReserveStack(x, y, self)) x += l.XS x += dx max_cards = 52 * self.gameinfo.decks s.foundations.append( RK_FoundationStack(x, y, self, base_rank=ANY_RANK, mod=13, max_cards=max_cards)) l.createText(s.foundations[0], 'ne') x, y = l.XM, l.YM + l.YS for i in range(rows): s.rows.append(BasicRowStack(x, y, self)) x += l.XS s.talon = InitialDealTalonStack(l.XM, self.height - l.YS, self) l.defaultAll()
def createGame(self, max_rounds=-1, num_deal=1): # create layout l, s = Layout(self), self.s # set window w, h = 3*l.XM+3*l.XS+(4+13)*l.XOFFSET, l.YM+4*l.YS self.setSize(w, h) # create stacks x, y, = l.XM, l.YM for i in range(4): stack = BasicRowStack(x, y, self, max_move=1, max_accept=0) stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0 s.rows.append(stack) y = y + l.YS x, y, = 2*l.XM+l.XS+4*l.XOFFSET, l.YM for i in range(4): stack = self.Foundation_Class(x, y, self, suit=i, base_rank=ANY_RANK, max_move=0) stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0 s.foundations.append(stack) y = y + l.YS x, y, = self.width - l.XS, l.YM + l.YS s.talon = WasteTalonStack(x, y, self, max_rounds=max_rounds, num_deal=num_deal) l.createText(s.talon, "sw") y = y + l.YS s.waste = WasteStack(x, y, self) l.createText(s.waste, "sw") # define stack-groups l.defaultStackGroups()
def createGame(self): layout, s = Layout(self), self.s w0 = layout.XS+5*layout.XOFFSET self.setSize(layout.XM+5*w0, layout.YM+5*layout.YS) x, y = layout.XM, layout.YM for i in range(3): s.reserves.append(TripleAlliance_Reserve(x, y, self)) x += layout.XS x, y = self.width-layout.XS, layout.YM s.foundations.append(AbstractFoundationStack(x, y, self, suit=ANY_SUIT, max_move=0, max_accept=0, max_cards=52)) layout.createText(s.foundations[0], 'nw') y = layout.YM+layout.YS nstacks = 0 for i in range(4): x = layout.XM for j in range(5): stack = BasicRowStack(x, y, self, max_accept=0) s.rows.append(stack) stack.CARD_XOFFSET, stack.CARD_YOFFSET = layout.XOFFSET, 0 x += w0 nstacks += 1 if nstacks >= 18: break y += layout.YS x, y = self.width-layout.XS, self.height-layout.YS s.talon = InitialDealTalonStack(x, y, self) layout.defaultStackGroups()
def createGame(self, max_rounds=2): l, s = Layout(self), self.s self.setSize(l.XM + 10 * l.XS, l.YM + 5 * l.YS) lay = ( (1.5, 0), (2.5, 0.3), (3, 1.3), (2.5, 2.3), (1.5, 2.6), (0.5, 2.3), (0, 1.3), (0.5, 0.3), ) suit = 0 x0, y0 = l.XM + l.XS, l.YM for xx, yy in lay: x, y = x0 + xx * l.XS, y0 + yy * l.YS s.foundations.append( SS_FoundationStack(x, y, self, suit=suit // 2, base_rank=6, max_cards=7)) suit += 1 suit = 0 x0, y0 = l.XM + 5 * l.XS, l.YM for xx, yy in lay: x, y = x0 + xx * l.XS, y0 + yy * l.YS s.foundations.append( SS_FoundationStack(x, y, self, suit=suit // 2, base_rank=5, dir=-1, max_cards=6)) suit += 1 x, y = l.XM, l.YM + 4 * l.YS for i in range(8): stack = BasicRowStack(x, y, self) stack.CARD_YOFFSET = 0 s.rows.append(stack) x += l.XS x += l.XS s.talon = DealRowRedealTalonStack(x, y, self, max_rounds=2) l.createText(s.talon, 'nw') l.createRoundText(s.talon, 'sw') l.defaultStackGroups()
def createGame(self, rows=3): # create layout l, s = Layout(self), self.s # set window # (piles up to 4 cards are playable in default window size) h = max((2 * l.YS) + l.TEXT_HEIGHT, (4 * l.YOFFSET)) self.setSize(l.XM + (1.5 + rows) * l.XS + l.XM, l.YM + h) # create stacks x0 = l.XM + (l.XS * 1.5) x = x0 y = l.YM font = self.app.getFont("canvas_default") for i in range(rows): stack = BasicRowStack(x, y, self, max_cards=5, max_accept=0, max_move=1) if self.preview <= 1: tx, ty, ta, tf = l.getTextAttr(stack, anchor="n") stack.texts.misc = MfxCanvasText(self.canvas, tx, ty, anchor=ta, font=font) s.rows.append(stack) x = x + l.XS self.setRegion(s.rows, (x0 - l.XS // 2, y - l.CH // 2, 999999, 999999)) x, y = l.XM, l.YM s.talon = Knockout_Talon(x, y, self, max_rounds=3) l.createText(s.talon, 'ne') l.createRoundText(s.talon, 's') y = y + l.YS + l.TEXT_HEIGHT s.foundations.append( Knockout_Foundation(x, y, self, max_move=0, base_rank=ANY_RANK, suit=self.FOUNDATION_SUIT)) l.createText(s.foundations[0], 'se') # define stack-groups l.defaultStackGroups() return l
def createGame(self, rows=8): # create layout l, s = Layout(self), self.s # set window w, h = l.XM + (rows + 2) * l.XS, max( l.YM + 3 * l.XS + 10 * l.YOFFSET, l.YM + 2 * l.YS + self.RESERVE_CARDS * l.YOFFSET + l.TEXT_HEIGHT) self.setSize(w, h) # create stacks y = l.YM for i in range(4): x = l.XM + (rows - 8) * l.XS // 2 + i * l.XS s.foundations.append(SS_FoundationStack(x, y, self, suit=i)) x = l.XM + (rows // 2 + 2) * l.XS + i * l.XS s.foundations.append(SS_FoundationStack(x, y, self, suit=i)) x, y = l.XM + rows * l.XS // 2, l.YM s.reserves.append(Backbone_BraidStack(x, y, self, max_accept=0)) x += l.XS s.reserves.append(Backbone_BraidStack(x, y, self, max_accept=0)) x, y = l.XM + (rows + 1) * l.XS // 2, l.YM + self.RESERVE_CARDS * l.YOFFSET s.reserves.append(BasicRowStack(x, y, self, max_accept=0)) x, y = l.XM, l.YM + l.YS for i in range(rows // 2): s.rows.append(SS_RowStack(x, y, self, max_move=1)) x += l.XS x, y = l.XM + (rows // 2 + 2) * l.XS, l.YM + l.YS for i in range(rows // 2): s.rows.append(SS_RowStack(x, y, self, max_move=1)) x += l.XS x, y = l.XM + rows * l.XS // 2, h - l.YS s.talon = WasteTalonStack(x, y, self, max_rounds=1) l.createText(s.talon, "n") x += l.XS s.waste = WasteStack(x, y, self) l.createText(s.waste, "n") # define stack-groups l.defaultStackGroups()
def createGame(self): l, s = Layout(self), self.s self.setSize(l.XM+6*l.XS, l.YM+2*l.YS+12*l.YOFFSET) x, y, = l.XM, l.YM s.talon = self.Talon_Class(x, y, self) l.createText(s.talon, "s") x, y = l.XM+2*l.XS, l.YM for i in range(4): s.foundations.append(Formic_Foundation(x, y, self, suit=ANY_SUIT, base_rank=ANY_RANK, max_cards=52, max_move=0)) x += l.XS x, y = l.XM+2*l.XS, l.YM+l.YS for i in range(4): s.rows.append(BasicRowStack(x, y, self, max_move=1, max_accept=0)) x += l.XS l.defaultStackGroups()
def createGame(self): # create layout l, s = Layout(self), self.s # set window self.setSize(l.XM + 10 * l.XS, max(l.YM + l.YS + 20 * l.YOFFSET, 2 * l.YM + 5 * l.YS)) # create stacks x, y, = l.XM + 2 * l.XS, l.YM for i in range(4): s.foundations.append(SS_FoundationStack(x, y, self, suit=i)) x = x + l.XS for i in range(4): s.foundations.append( SS_FoundationStack(x, y, self, suit=i, base_rank=KING, dir=-1)) x = x + l.XS x, y = l.XM + 2 * l.XS, 2 * l.YM + l.YS for i in range(6): stack = BasicRowStack(x, y, self, max_move=1, max_accept=0) s.rows.append(stack) if not self.ROW_YOFFSET: stack.CARD_YOFFSET = 0 x = x + l.XS x, y = l.XM, 2 * l.YM + l.YS for i in range(4): self.s.reserves.append(ReserveStack(x, y, self)) y += l.YS x, y = l.XM + 9 * l.XS, 2 * l.YM + l.YS for i in range(4): self.s.reserves.append(ReserveStack(x, y, self)) y += l.YS s.talon = Tournament_Talon(l.XM, l.YM, self, max_rounds=3) l.createText(s.talon, "se") l.createRoundText(s.talon, 'ne') # define stack-groups l.defaultStackGroups()
def createGame(self): # create layout l, s = Layout(self), self.s # set window w, h = l.XM + 12 * l.XS, l.YM + 2 * l.YS + 2 * (l.YS + 5 * l.YOFFSET) self.setSize(w, h) # create stacks y = l.YM + 2 * l.YS for i in range(2): x = l.XM for j in range(12): s.rows.append(BasicRowStack(x, y, self, max_accept=0)) x += l.XS y += l.YS + 5 * l.YOFFSET x = l.XM + 2 * l.XS for j in range(2): for i in range(4): y = l.YM s.foundations.append( SS_FoundationStack(x, y, self, suit=j * 2 + i / 2)) y += l.YS s.foundations.append( SS_FoundationStack(x, y, self, suit=j * 2 + i / 2, base_rank=KING, dir=-1)) x += l.XS s.reserves.append(ReserveStack(l.XM, l.YM, self)) s.reserves.append(ReserveStack(w - l.XS, l.YM, self)) s.talon = InitialDealTalonStack(l.XM, l.YM + l.YS, self) # default l.defaultAll()
def createGame(self, rows=(7, 7, 7, 5)): # create layout l, s = Layout(self), self.s # set window w, h = l.XM + max(max(rows) * (l.XS + 3 * l.XOFFSET), 9 * l.XS), l.YM + (len(rows) + 2) * l.YS self.setSize(w, h) # create stacks x, y = l.XM + (w - l.XM - 8 * l.XS) // 2, l.YM for i in range(4): s.foundations.append(SS_FoundationStack(x, y, self, suit=i)) x += l.XS for i in range(4): s.foundations.append( SS_FoundationStack(x, y, self, base_rank=KING, suit=i, dir=-1)) x += l.XS n = 0 y = l.YM + l.YS for i in rows: x = l.XM for j in range(i): stack = BasicRowStack(x, y, self, max_move=1, max_accept=0) stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0 s.rows.append(stack) x += l.XS + 3 * l.XOFFSET n += 1 y += l.YS x, y = l.XM + (w - l.XM - 8 * l.XS) // 2, h - l.YS for i in range(8): s.reserves.append(ReserveStack(x, y, self)) x += l.XS s.talon = InitialDealTalonStack(w - l.XS, h - l.YS, self) # default l.defaultAll()
def createGame(self, max_rounds=1): l, s = Layout(self), self.s w, h = 3 * l.XM + 5 * l.XS, l.YM + 4 * l.YS if max_rounds > 1: h += l.TEXT_HEIGHT + l.TEXT_MARGIN self.setSize(w, h) x, y = l.XM, l.YM for i in range(4): s.foundations.append(SS_FoundationStack(x, y, self, suit=i)) y += l.YS x, y = 3 * l.XM + 4 * l.XS, l.YM for i in range(4): s.foundations.append( SS_FoundationStack(x, y, self, suit=i, base_rank=KING, dir=-1)) y += l.YS y = l.YM for i in range(3): x = 2 * l.XM + l.XS for j in range(3): s.rows.append( BasicRowStack(x, y, self, max_cards=1, max_accept=1)) x += l.XS y += l.YS x, y = 2 * l.XM + l.XS + l.XS // 2, l.YM + 3 * l.YS s.talon = WasteTalonStack(x, y, self, max_rounds=max_rounds) x += l.XS s.waste = WasteStack(x, y, self) if max_rounds > 1: l.createText(s.talon, 's') l.createRoundText(s.talon, 'sss') l.createText(s.waste, 's') else: l.createText(s.talon, 'sw') l.createText(s.waste, 'se') l.defaultStackGroups()
def createGame(self, rows=4): # create layout max_rows = max(10, 4 + rows) l, s = Layout(self), self.s # set window w, h = l.XM + max_rows * l.XS, l.YM + 2 * l.YS + 18 * l.YOFFSET self.setSize(w, h) # create stacks x, y = l.XM, l.YM s.talon = GrandDuchess_Talon(x, y, self, max_rounds=4) l.createText(s.talon, 'se') l.createRoundText(s.talon, 'ne') x += 2 * l.XS for i in range(4): s.foundations.append(SS_FoundationStack(x, y, self, suit=i)) x += l.XS for i in range(4): s.foundations.append( SS_FoundationStack(x, y, self, suit=i, base_rank=KING, dir=-1)) x += l.XS x, y = l.XM + (max_rows - rows) * l.XS // 2, l.YM + l.YS for i in range(rows): stack = BasicRowStack(x, y, self, max_move=1, max_accept=0) stack.CARD_YOFFSET = l.YOFFSET s.rows.append(stack) x += l.XS dx = (max_rows - rows) * l.XS // 4 - l.XS // 2 x, y = l.XM + dx, l.YM + l.YS s.reserves.append(GrandDuchess_Reserve(x, y, self)) x, y = self.width - dx - l.XS, l.YM + l.YS s.reserves.append(GrandDuchess_Reserve(x, y, self)) # define stack-groups l.defaultStackGroups()
def createGame(self): l, s = Layout(self), self.s self.setSize(l.XM + 8 * l.XS, l.YM + 4 * l.YS + l.TEXT_HEIGHT) x0 = l.XM + 1.5 * l.XS for k in (0, 1): suit = 0 for i, j in ((1, 0), (0, 0.5), (2, 0.5), (1, 1)): x, y = x0 + i * l.XS, l.YM + j * l.YS s.foundations.append(AC_FoundationStack(x, y, self, suit=suit)) suit += 1 x0 += 3.5 * l.XS x, y = l.XM, l.YM + l.YS s.talon = WasteTalonStack(x, y, self, max_rounds=UNLIMITED_REDEALS) l.createText(s.talon, 'se') y += l.YS s.waste = WasteStack(x, y, self) l.createText(s.waste, 'se') x, y = l.XM + 3.75 * l.XS, l.YM + 2 * l.YS for i in (0, 1): stack = KingAC_RowStack(x, y, self, max_move=1) stack.getBottomImage = stack._getReserveBottomImage s.rows.append(stack) stack.CARD_XOFFSET, stack.CARD_YOFFSET = 0, 0 x += l.XS x, y = l.XM + 2.75 * l.XS, l.YM + 3 * l.YS for i in range(4): stack = BasicRowStack(x, y, self) s.reserves.append(stack) stack.CARD_XOFFSET, stack.CARD_YOFFSET = 0, 0 l.createText(stack, 's') x += l.XS l.defaultStackGroups()
def createGame(self): # create layout l, s = Layout(self), self.s # set window self.setSize(l.XM + 10 * l.XS, l.YM + 4 * l.YS) # create stacks for i in range(4): x, y, = l.XM + i * l.XS, l.YM s.rows.append(BasicRowStack(x, y, self, max_accept=0)) for i in range(4): x, y, = l.XM + 4 * l.XS, l.YM + i * l.YS s.foundations.append( self.Foundation_Class(x, y, self, i, dir=2, mod=13)) x += l.XS s.foundations.append( self.Foundation_Class(x, y, self, i, dir=2, mod=13, base_rank=1)) for i in range(4): for j in range(4): x, y, = l.XM + (j + 6) * l.XS, l.YM + i * l.YS s.reserves.append(ReserveStack(x, y, self, max_accept=0)) x, y = l.XM + l.XS, self.height - l.YS s.talon = WasteTalonStack(x, y, self, max_rounds=1) l.createText(s.talon, "sw") x = x + l.XS s.waste = WasteStack(x, y, self) l.createText(s.waste, "se") # define stack-groups l.defaultStackGroups()
def createGame(self): l, s = Layout(self), self.s self.setSize(l.XM + 9.5 * l.XS, l.YM + 5 * l.YS) # internal stack (for swap) s.internals.append(InvisibleStack(self)) x0, y0 = l.XM + 1.5 * l.XS, l.YM # barriers for xx, yy in ( (0, 2), (7, 2), (3.5, 0), (3.5, 4), ): x, y = x0 + xx * l.XS, y0 + yy * l.YS s.rows.append(BasicRowStack(x, y, self, max_accept=0)) # northern hemisphere (red) for xx, yy in ( (0.5, 1), (1.5, 0.5), (2.5, 0.3), (4.5, 0.3), (5.5, 0.5), (6.5, 1), ): x, y = x0 + xx * l.XS, y0 + yy * l.YS stack = Hemispheres_RowStack(x, y, self, base_color=RED, max_move=1) stack.CARD_YOFFSET = 0 s.rows.append(stack) # southern hemisphere (black) for xx, yy in ( (6.5, 3), (5.5, 3.5), (4.5, 3.8), (2.5, 3.8), (1.5, 3.5), (0.5, 3), ): x, y = x0 + xx * l.XS, y0 + yy * l.YS stack = Hemispheres_RowStack(x, y, self, base_color=BLACK, max_move=1, dir=1) stack.CARD_YOFFSET = 0 s.rows.append(stack) # foundations x, y = x0 + 2 * l.XS, y0 + 1.5 * l.YS for i in range(4): s.foundations.append( SS_FoundationStack(x, y, self, suit=2 + i / 2, max_move=0)) x += l.XS x, y = x0 + 2 * l.XS, y + l.YS for i in range(4): s.foundations.append( SS_FoundationStack(x, y, self, suit=i / 2, max_move=0, base_rank=KING, dir=-1)) x += l.XS # talon & waste x, y = l.XM, l.YM s.talon = WasteTalonStack(x, y, self, max_rounds=1) l.createText(s.talon, 'ne') y += l.YS s.waste = WasteStack(x, y, self) l.createText(s.waste, 'ne') l.defaultStackGroups()
def createGame(self): # create layout l, s = Layout(self), self.s # set window self.setSize(l.XM + 10 * l.XS, l.YM + 4.5 * l.YS) # register extra stack variables s.addattr(jewels=None) s.addattr(lid=[]) # create stacks # Lid x0, y0 = l.XM + 2.5 * l.XS, l.YM for xx, yy in ( (0, 0.5), (1, 0.25), (2, 0), (3, 0.25), (4, 0.5), ): x, y = x0 + xx * l.XS, y0 + yy * l.YS s.lid.append(BasicRowStack(x, y, self, max_accept=0)) # Casket x0, y0 = l.XM + 3 * l.XS, l.YM + 1.5 * l.YS for xx, yy in ( (0, 0), (3, 0), (0, 1), (3, 1), (0, 2), (1, 2), (2, 2), (3, 2), ): x, y = x0 + xx * l.XS, y0 + yy * l.YS stack = Casket_RowStack(x, y, self, max_move=1) stack.CARD_YOFFSET = 0 s.rows.append(stack) # Reserves x, y = l.XM, l.YM + 1.5 * l.YS for i in range(3): stack = Casket_Reserve(x, y, self, max_cards=UNLIMITED_CARDS) l.createText(stack, "ne") s.reserves.append(stack) y += l.YS # Foundations x = l.XM + 8 * l.XS for i in range(2): y = l.YM for j in range(4): s.foundations.append(SS_FoundationStack(x, y, self, suit=j)) y += l.YS x += l.XS # Jewels x, y = l.XM + 4.5 * l.XS, l.YM + 2 * l.YS s.jewels = JewelsStack(x, y, self) l.createText(s.jewels, "s") # waste & talon x, y = l.XM, l.YM s.talon = WasteTalonStack(x, y, self, max_rounds=1) l.createText(s.talon, "s") x += l.XS s.waste = WasteStack(x, y, self, max_cards=1) # define stack-groups self.sg.talonstacks = [s.talon] + [s.waste] self.sg.openstacks = s.foundations + s.rows + s.reserves self.sg.dropstacks = s.lid + s.rows + [s.waste] + s.reserves