def createGame(self):
        # create layout
        l, s = Layout(self, TEXT_HEIGHT=40), self.s
        help, text_width = self._getHelpText()
        text_width += 2*l.XM

        # set window
        # (piles up to 20 cards are playable in default window size)
        w = l.XM+max(4*l.XS+text_width, 8*l.XS)
        h = l.YM+2*l.YS+5*l.YOFFSET+l.TEXT_HEIGHT+l.YS
        self.setSize(w, h)

        # create stacks
        x, y = l.XM, l.YM
        for i in range(4):
            stack = self.Foundation_Class(x, y, self,
                                          mod=13, dir=i+1, base_rank=i)
            s.foundations.append(stack)
            tx, ty, ta, tf = l.getTextAttr(stack, "s")
            font = self.app.getFont("canvas_default")
            stack.texts.misc = MfxCanvasText(self.canvas, tx, ty,
                                             anchor=ta, font=font)
            x = x + l.XS
        self.texts.help = MfxCanvasText(
            self.canvas, x + l.XM, y + l.CH // 2, text=help,
            anchor="w", font=self.app.getFont("canvas_fixed"))
        x, y = l.XM, l.YM+l.YS+l.TEXT_HEIGHT
        for i in range(8):
            s.rows.append(self.RowStack_Class(x, y, self))
            x = x + l.XS

        s.talon = InitialDealTalonStack(l.XM, self.height-l.YS, self)

        # define stack-groups
        l.defaultStackGroups()
Exemple #2
0
    def createGame(self):
        # create layout
        l, s = Layout(self), self.s
        help, text_width = self._getHelpText()
        text_width += 2 * l.XM

        # set window
        self.setSize(5.5 * l.XS + l.XM + text_width,
                     l.YM + 3 * l.YS + l.TEXT_HEIGHT)

        # create stacks
        x0 = l.XM + l.XS * 3 / 2
        x, y = x0, l.YM
        for i in range(4):
            stack = BetsyRoss_Foundation(x,
                                         y,
                                         self,
                                         base_rank=i,
                                         max_cards=1,
                                         max_move=0,
                                         max_accept=0)
            s.foundations.append(stack)
            x += l.XS
        x = x0
        y = l.YM + l.YS
        for i in range(4):
            stack = BetsyRoss_Foundation(x,
                                         y,
                                         self,
                                         base_rank=2 * i + 1,
                                         mod=13,
                                         dir=i + 1,
                                         max_cards=12,
                                         max_move=0)
            tx, ty, ta, tf = l.getTextAttr(stack, "s")
            font = self.app.getFont("canvas_default")
            stack.texts.misc = MfxCanvasText(self.canvas,
                                             tx,
                                             ty,
                                             anchor=ta,
                                             font=font)
            s.foundations.append(stack)
            x += l.XS
        self.texts.help = MfxCanvasText(self.canvas,
                                        x + l.XM,
                                        y + l.CH / 2,
                                        text=help,
                                        anchor="w",
                                        font=self.app.getFont("canvas_fixed"))
        x = l.XM
        s.talon = WasteTalonStack(x, y, self, max_rounds=3)
        l.createText(s.talon, "n")
        l.createRoundText(s.talon, 'nnn')
        y += l.YS
        s.waste = WasteStack(x, y, self)
        l.createText(s.waste, "s")

        # define stack-groups
        l.defaultStackGroups()
Exemple #3
0
    def createGame(self):
        l, s = Layout(self), self.s
        font = self.app.getFont("canvas_default")

        # Set window size
        self.setSize(7 * l.XS, 5 * l.YS + 3 * l.YM)

        # Four winds
        TEXTS = (_("North"), _("East"), _("South"), _("West"),
                 _("NW"), _("NE"), _("SE"), _("SW"))

        # Create foundations
        x = l.XM * 3
        y = l.YM
        xoffset = (2.5, 5, 2.5, 0)
        yoffset = (0, 2, 4, 2)
        for i in range(4):
            x0 = x + (xoffset[i] * l.XS)
            y0 = y + (yoffset[i] * l.YS)
            stack = FourWinds_Foundation(x0, y0, self, -1,
                                         max_cards=12, max_accept=1,
                                         base_rank=i)
            s.foundations.append(stack)
            t = MfxCanvasText(self.canvas, x0 + l.CW / 2, y0 + l.YS + 5,
                              anchor="center", font=font,
                              text=TEXTS[i])
            stack.texts.misc = t

        # Create rows
        xoffset = (1.25, 3.75, 3.75, 1.25)
        yoffset = (0.75, 0.75, 3, 3)
        for i in range(4):
            x0 = x + (xoffset[i] * l.XS)
            y0 = y + (yoffset[i] * l.YS)
            stack = FourWinds_RowStack(x0, y0, self, yoffset=10,
                                       max_cards=3, max_accept=1,
                                       base_rank=ANY_RANK)
            s.rows.append(stack)
            t = MfxCanvasText(self.canvas, x0 + l.CW / 2, y0 + l.YS + 5,
                              anchor="center", font=font,
                              text=TEXTS[i+4])
            stack.texts.misc = t
        self.setRegion(s.rows, (x + l.XS, y + l.YS * 0.65, x + l.XS * 4 + 5,
                                y + l.YS * 3 + 5))

        # Create talon
        x = x + 2 * l.XS
        y = y + 2 * l.YS
        s.talon = WasteTalonStack(x, y, self, num_deal=1, max_rounds=2)
        l.createText(s.talon, "s")
        x = x + l.XS
        s.waste = WasteStack(x, y, self)
        l.createText(s.waste, "s")

        # Define stack-groups
        l.defaultStackGroups()
Exemple #4
0
    def createGame(self):

        # create layout
        l, s = Layout(self, TEXT_HEIGHT=40), self.s
        help, text_width = self._getHelpText()
        text_width += 2 * l.XM

        # set window
        w = l.XM + 5.5 * l.XS + text_width
        h = max(2 * l.YS, 20 * l.YOFFSET)
        self.setSize(w, l.YM + l.YS + l.TEXT_HEIGHT + h)

        # create stacks
        x0 = l.XM + l.XS * 3 / 2
        x, y = x0, l.YM
        for i in range(4):
            stack = self.Foundation_Class(x,
                                          y,
                                          self,
                                          mod=13,
                                          dir=i + 1,
                                          base_rank=i)
            s.foundations.append(stack)
            tx, ty, ta, tf = l.getTextAttr(stack, "s")
            font = self.app.getFont("canvas_default")
            stack.texts.misc = MfxCanvasText(self.canvas,
                                             tx,
                                             ty,
                                             anchor=ta,
                                             font=font)
            x = x + l.XS
        self.texts.help = MfxCanvasText(self.canvas,
                                        x + l.XM,
                                        y + l.CH / 2,
                                        text=help,
                                        anchor="w",
                                        font=self.app.getFont("canvas_fixed"))
        x = x0
        y = l.YM + l.YS + l.TEXT_HEIGHT
        for i in range(4):
            s.rows.append(self.RowStack_Class(x, y, self))
            x = x + l.XS
        self.setRegion(s.rows, (-999, y - l.CH / 2, 999999, 999999))
        x = l.XM
        s.talon = WasteTalonStack(x, y, self, max_rounds=1)
        l.createText(s.talon, "n")
        y = y + l.YS
        s.waste = WasteStack(x, y, self, max_cards=1)

        # define stack-groups
        l.defaultStackGroups()
Exemple #5
0
    def createGame(self):

        l, s = Layout(self), self.s
        h0 = l.YS+4*l.YOFFSET
        self.setSize(l.XM+11*l.XS, l.YM+2*l.YS+2*h0)
        self.base_rank = ANY_RANK

        x, y = l.XM, l.YM
        s.talon = GrandmammasPatience_Talon(x, y, self)
        l.createText(s.talon, 'ne')

        x, y = self.width-4*l.XS, l.YM
        for i in range(4):
            s.foundations.append(
                SS_FoundationStack(
                    x, y, self, suit=i,
                    dir=-1, mod=13, max_move=0, base_rank=ANY_RANK))
            x += l.XS
        stack = s.foundations[0]
        tx, ty, ta, tf = l.getTextAttr(stack, "sw")
        font = self.app.getFont("canvas_default")
        stack.texts.misc = MfxCanvasText(
            self.canvas, tx, ty, anchor=ta, font=font)
        x, y = self.width-4*l.XS, self.height-l.YS
        for i in range(4):
            s.foundations.append(SS_FoundationStack(x, y, self, suit=i,
                                 mod=13, max_move=0, base_rank=ANY_RANK))
            x += l.XS
        stack = s.foundations[4]
        tx, ty, ta, tf = l.getTextAttr(stack, "sw")
        font = self.app.getFont("canvas_default")
        stack.texts.misc = MfxCanvasText(
            self.canvas, tx, ty, anchor=ta, font=font)

        y = l.YM+l.YS
        for i in range(2):
            x = l.XM
            for j in range(11):
                s.rows.append(GrandmammasPatience_RowStack(x, y, self,
                              max_accept=1, max_cards=2))
                x += l.XS
            y += h0

        x, y = l.XM, self.height-l.YS
        for i in range(4):
            s.reserves.append(ReserveStack(x, y, self))
            x += l.XS

        l.defaultStackGroups()
        self.sg.dropstacks.append(s.talon)
Exemple #6
0
    def createGame(self):
        l, s = Layout(self), self.s
        self.setSize(l.XM + 9.5 * l.XS, l.YM + 3 * l.YS)

        x, y = l.XM + 1.5 * l.XS, l.YM
        for i in range(8):
            stack = BetsyRoss_Foundation(x,
                                         y,
                                         self,
                                         base_rank=i,
                                         mod=13,
                                         dir=i + 1,
                                         max_move=0)
            tx, ty, ta, tf = l.getTextAttr(stack, "s")
            font = self.app.getFont("canvas_default")
            stack.texts.misc = MfxCanvasText(self.canvas,
                                             tx,
                                             ty,
                                             anchor=ta,
                                             font=font)
            s.foundations.append(stack)
            x = x + l.XS
        x, y = l.XM + 1.5 * l.XS, l.YM + 2 * l.YS
        for i in range(8):
            stack = SeniorWrangler_RowStack(x, y, self, max_accept=0)
            s.rows.append(stack)
            stack.CARD_YOFFSET = 0
            x += l.XS
        x, y = l.XM, l.YM + l.YS
        s.talon = SeniorWrangler_Talon(x, y, self, max_rounds=9)
        l.createRoundText(s.talon, 'nn')

        # define stack-groups
        l.defaultStackGroups()
Exemple #7
0
    def createGame(self):

        l, s = Layout(self), self.s
        self.setSize(l.XM + 10 * l.XS, l.YM + 2 * l.YS + 12 * l.YOFFSET)

        # extra settings
        self.base_card = None

        # create stacks
        x, y = l.XM + 3 * l.XS, l.YM
        for i in range(4):
            s.foundations.append(SS_FoundationStack(x, y, self, suit=i,
                                                    mod=13))
            x = x + l.XS
        tx, ty, ta, tf = l.getTextAttr(s.foundations[-1], "ne")
        font = self.app.getFont("canvas_default")
        self.texts.info = MfxCanvasText(self.canvas,
                                        tx,
                                        ty,
                                        anchor=ta,
                                        font=font)
        x, y = l.XM, l.YM + l.YS
        for i in range(10):
            s.rows.append(UD_AC_RowStack(x, y, self, mod=13))
            x += l.XS

        x, y = l.XM, l.YM
        s.talon = InitialDealTalonStack(x, y, self)

        # default
        l.defaultAll()
Exemple #8
0
 def createGame(self):
     lay = Bastion.createGame(self)
     self.base_rank = None
     tx, ty, ta, tf = lay.getTextAttr(self.s.foundations[-1], 'se')
     font = self.app.getFont('canvas_default')
     self.texts.info = MfxCanvasText(self.canvas, tx, ty,
                                     anchor=ta, font=font)
    def createGame(self):
        rows = 8
        l, s = Layout(self), self.s
        self.setSize(l.XM + rows * l.XS, l.YM + 2 * l.YS + 20 * l.YOFFSET)

        x, y = l.XM, l.YM
        for i in range(rows):
            s.rows.append(RK_RowStack(x, y, self))
            x += l.XS
        x, y = l.XM + (rows - 1) * l.XS // 2, self.height - l.YS
        s.foundations.append(
            Waterfall_Foundation(x, y, self, suit=ANY_SUIT, max_cards=104))
        stack = s.foundations[0]
        tx, ty, ta, tf = l.getTextAttr(stack, 'se')
        font = self.app.getFont('canvas_default')
        stack.texts.misc = MfxCanvasText(self.canvas,
                                         tx,
                                         ty,
                                         anchor=ta,
                                         font=font)
        x, y = self.width - l.XS, self.height - l.YS
        s.talon = DealRowTalonStack(x, y, self)
        l.createText(s.talon, 'sw')

        l.defaultStackGroups()
Exemple #10
0
    def createGame(self):
        # create layout
        l, s = Layout(self), self.s

        # set window
        # compute best XOFFSET
        xoffset = int(l.XS * 8 / self.gameinfo.ncards)
        if xoffset < l.XOFFSET:
            l.XOFFSET = xoffset

        # Set window size
        w, h = l.XM + l.XS * 10, l.YM + l.YS * 4
        self.setSize(w, h)

        # Extra settings
        self.game_score = 52
        self.hand_score = self.sequence = 0
        self.peaks = [0] * 3

        # Create rows
        x, y = l.XM + l.XS * 1.5, l.YM
        for i in range(3):
            s.rows.append(ThreePeaks_RowStack(x, y, self))
            x = x + l.XS * 3
        x, y = l.XM + l.XS, y + l.YS * .5
        for i in range(3):
            s.rows.append(ThreePeaks_RowStack(x, y, self))
            x = x + l.XS
            s.rows.append(ThreePeaks_RowStack(x, y, self))
            x = x + l.XS * 2
        x, y = l.XM + l.XS * .5, y + l.YS * .5
        for i in range(9):
            s.rows.append(ThreePeaks_RowStack(x, y, self))
            x = x + l.XS
        x, y = l.XM, y + l.YS * .5
        for i in range(10):
            s.rows.append(ThreePeaks_RowStack(x, y, self))
            x = x + l.XS

        # Create talon
        x, y = l.XM, y + l.YM + l.YS
        s.talon = ThreePeaks_TalonStack(x, y, self, num_deal=1, max_rounds=1)
        l.createText(s.talon, "s")
        x = x + l.XS
        s.waste = self.Waste_Class(x, y, self)
        s.waste.CARD_XOFFSET = l.XOFFSET
        s.foundations.append(s.waste)
        l.createText(s.waste, "s")

        # Create text for scores
        if self.preview <= 1:
            self.texts.info = MfxCanvasText(
                self.canvas,
                l.XM + l.XS * 3,
                h - l.YM,
                anchor="sw",
                font=self.app.getFont("canvas_default"))

        # Define stack groups
        l.defaultStackGroups()
Exemple #11
0
    def createGame(self):
        layout, s = Layout(self), self.s
        self.rank = -1
        self.deadDeals = 1
        self.max_rounds = VARIABLE_REDEALS
        self.setSize(layout.XM + 4 * layout.XS, layout.YM + 2 * layout.YS)
        x, y = layout.XM + 3 * layout.XS // 2, layout.YM
        stack = HitOrMiss_Foundation(x, y, self, ANY_SUIT,
                                     dir=0, mod=13, max_move=0, max_cards=52)
        s.foundations.append(stack)
        layout.createText(stack, 'ne')
        x, y = layout.XM+layout.XS, layout.YM+layout.YS
        s.talon = HitOrMiss_Talon(x, y, self,
                                  max_rounds=VARIABLE_REDEALS, num_deal=1)
        layout.createText(s.talon, 'nw')

        x += layout.XS
        s.waste = HitOrMiss_Waste(x, y, self)
        layout.createText(s.waste, 'ne')
        x += layout.XS * 1.1
        y = layout.YM + 1.4 * layout.YS
        if self.preview <= 1:
            self.texts.base_rank = \
                MfxCanvasText(self.canvas, x, y, anchor="nw",
                              font=self.app.getFont("canvas_large"))

        # define stack-groups
        layout.defaultStackGroups()
Exemple #12
0
    def createGame(self, rows=10):
        l, s = Layout(self), self.s
        # set size so that at least 2/3 of a card is visible with 15 cards
        h = l.CH * 2 / 3 + (15 - 1) * l.YOFFSET
        h = l.YS + max(h, 3 * l.YS)
        self.setSize(l.XM + rows * l.XS, l.YM + h)

        x, y = l.XM + (rows - 8) * l.XS, l.YM
        for i in range(4):
            s.foundations.append(Braid_Foundation(x, y, self, suit=i))
            x += l.XS
        tx, ty, ta, tf = l.getTextAttr(s.foundations[-1], "se")
        font = self.app.getFont("canvas_default")
        self.texts.info = MfxCanvasText(self.canvas,
                                        tx,
                                        ty,
                                        anchor=ta,
                                        font=font)
        x += 2 * l.XS
        stack = ReserveStack(x, y, self, max_cards=UNLIMITED_CARDS)
        s.reserves.append(stack)
        l.createText(stack, 'se')
        x, y = l.XM, l.YM + l.YS
        for i in range(rows):
            s.rows.append(TheLittleCorporal_RowStack(x, y, self, mod=13))
            x += l.XS

        # talon
        x, y = l.XM, self.height - l.YS
        s.talon = InitialDealTalonStack(x, y, self)

        # define stack-groups
        l.defaultStackGroups()
    def createGame(self):
        l, s = Layout(self), self.s
        self.setSize(l.XM+13*l.XS, l.YM+7*l.YS)
        self.base_rank = ANY_RANK

        x, y = l.XM+2.5*l.XS, l.YM
        for i in range(8):
            s.foundations.append(StepUp_Foundation(x, y, self,
                                 suit=i % 4, mod=13, base_rank=ANY_RANK))
            x += l.XS
        tx, ty, ta, tf = l.getTextAttr(s.foundations[0], "sw")
        font = self.app.getFont("canvas_default")
        self.texts.info = MfxCanvasText(self.canvas, tx, ty,
                                        anchor=ta, font=font)

        x, y = l.XM, l.YM+l.YS
        for i in range(13):
            s.reserves.append(ReserveStack(x, y, self))
            x += l.XS
        x, y = l.XM+2*l.XS, l.YM+2*l.YS
        for i in range(9):
            s.rows.append(StepUp_RowStack(x, y, self, max_move=1, mod=13))
            x += l.XS

        x, y = l.XM, l.YM+2.5*l.YS
        s.talon = StepUp_Talon(x, y, self, max_rounds=1)
        l.createText(s.talon, 'se')
        y += l.YS
        s.waste = WasteStack(x, y, self)
        l.createText(s.waste, 'se')

        l.defaultStackGroups()
Exemple #14
0
    def createGame(self):
        l, s = Layout(self), self.s
        self.setSize(l.XM+9*l.XS, l.YM+4*l.YS)

        x, y = l.XM, l.YM
        s.talon = SlyFox_Talon(x, y, self)
        s.waste = s.talon
        l.createText(s.talon, 'ne')
        tx, ty, ta, tf = l.getTextAttr(s.talon, "ss")
        font = self.app.getFont("canvas_default")
        self.texts.misc = MfxCanvasText(self.canvas, tx, ty,
                                        anchor=ta, font=font)

        y = l.YM
        for i in range(4):
            x = l.XM+1.5*l.XS
            for j in range(5):
                stack = SlyFox_RowStack(x, y, self, max_cards=UNLIMITED_CARDS)
                stack.CARD_YOFFSET = 0
                s.rows.append(stack)
                x += l.XS
            y += l.YS

        x, y = self.width-2*l.XS, l.YM
        for i in range(4):
            s.foundations.append(SlyFox_Foundation(x, y, self, suit=i))
            s.foundations.append(SlyFox_Foundation(x+l.XS, y, self, suit=i,
                                                   base_rank=KING, dir=-1))
            y += l.YS

        l.defaultStackGroups()
Exemple #15
0
    def createGame(self, rows=8, reserves=4, playcards=15):

        decks = self.gameinfo.decks

        l, s = Layout(self), self.s
        self.setSize(l.XM+rows*l.XS, l.YM+2*l.YS+playcards*l.YOFFSET)

        x, y = l.XM, l.YM
        for i in range(reserves):
            s.reserves.append(ReserveStack(x, y, self))
            x += l.XS

        x = self.width - 2*l.XS
        s.foundations.append(FourByFour_Foundation(x, y, self,
                             suit=ANY_SUIT, base_rank=ACE, max_cards=52*decks,
                             max_accept=1, max_move=0))
        stack = s.foundations[0]
        tx, ty, ta, tf = l.getTextAttr(stack, 'ne')
        font = self.app.getFont('canvas_default')
        stack.texts.misc = MfxCanvasText(self.canvas, tx, ty,
                                         anchor=ta, font=font)

        x, y = l.XM, l.YM+l.YS
        for i in range(rows):
            s.rows.append(AC_RowStack(x, y, self))
            x += l.XS

        x, y = l.XM, self.height-l.YS
        s.talon = InitialDealTalonStack(x, y, self)

        l.defaultStackGroups()
Exemple #16
0
    def createGame(self):

        l, s = Layout(self), self.s
        self.setSize(l.XM+7*l.XS, l.YM+2*l.YS+20*l.YOFFSET)

        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)
        l.createText(s.waste, 's')

        x += 3.5*l.XS
        s.foundations.append(FourByFour_Foundation(x, y, self,
                             suit=ANY_SUIT, base_rank=ANY_RANK, max_cards=52,
                             max_accept=1, max_move=0, mod=13))
        stack = s.foundations[0]
        tx, ty, ta, tf = l.getTextAttr(stack, 'ne')
        font = self.app.getFont('canvas_default')
        stack.texts.misc = MfxCanvasText(self.canvas, tx, ty,
                                         anchor=ta, font=font)

        x, y = l.XM+3*l.XS, l.YM+l.YS
        for i in range(4):
            stack = UD_RK_RowStack(x, y, self, mod=13)
            stack.getBottomImage = stack._getReserveBottomImage
            s.rows.append(stack)
            x += l.XS

        l.defaultStackGroups()
Exemple #17
0
    def createGame(self):
        playcards = 6

        l, s = Layout(self), self.s
        self.setSize(
            l.XM+10*l.XS, l.YM+3*l.YS+2*playcards*l.YOFFSET+l.TEXT_HEIGHT)

        x, y = l.XM, l.YM
        s.talon = SlyFox_Talon(x, y, self)
        s.waste = s.talon
        l.createText(s.talon, 'ne')
        tx, ty, ta, tf = l.getTextAttr(s.talon, "ss")
        font = self.app.getFont("canvas_default")
        self.texts.misc = MfxCanvasText(self.canvas, tx, ty,
                                        anchor=ta, font=font)

        x += 2*l.XS
        for i in range(4):
            s.foundations.append(SlyFox_Foundation(x, y, self, suit=i))
            s.foundations.append(SlyFox_Foundation(x+4*l.XS, y, self, suit=i,
                                                   base_rank=KING, dir=-1))
            x += l.XS
        y = l.YM+l.YS+l.TEXT_HEIGHT
        for i in range(2):
            x = l.XM
            for j in range(10):
                stack = SlyFox_RowStack(x, y, self, max_cards=UNLIMITED_CARDS)
                s.rows.append(stack)
                stack.CARD_YOFFSET = l.YOFFSET
                x += l.XS
            y += l.YS+playcards*l.YOFFSET

        l.defaultStackGroups()
Exemple #18
0
    def createGame(self):
        self.base_card = None
        # create layout
        l, s = Layout(self), self.s

        # set window
        # (set size so that at least 3 cards are fully playable)
        w = max(2 * l.XS, l.XS + 3 * l.XOFFSET)
        w = min(3 * l.XS, w)
        w = (w + 1) & ~1
        self.setSize(l.XM + 6 * w, l.YM + 4 * l.YS + l.TEXT_HEIGHT)

        dx = (self.width - 4 * l.XS) // (4 + 1)
        x, y = l.XM + dx, l.YM
        dx += l.XS
        for i in range(4):
            s.foundations.append(SS_FoundationStack(x, y, self, suit=i,
                                                    mod=13))
            x += dx

        tx, ty, ta, tf = l.getTextAttr(s.foundations[0], "s")

        self.texts.info = \
            MfxCanvasText(self.canvas, tx, ty, anchor=ta,
                          font=self.app.getFont("canvas_default"))

        y += l.TEXT_HEIGHT
        for i in range(3):
            x, y = l.XM, y + l.YS
            for j in range(5):
                stack = UD_SS_RowStack(x,
                                       y,
                                       self,
                                       max_move=1,
                                       max_accept=1,
                                       base_rank=NO_RANK,
                                       mod=13,
                                       max_cards=3)
                stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0
                s.rows.append(stack)
                x += w
            stack = UD_SS_RowStack(x,
                                   y,
                                   self,
                                   max_move=1,
                                   max_accept=1,
                                   base_rank=ANY_RANK,
                                   mod=13,
                                   max_cards=3)
            stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0
            s.rows.append(stack)

        x, y = self.width - l.XS, self.height - l.YS
        s.talon = self.Talon_Class(x, y, self)

        # define stack-groups
        l.defaultStackGroups()
        return l
Exemple #19
0
 def createGame(self):
     lay = Fortress.createGame(self)
     tx, ty, ta, tf = lay.getTextAttr(self.s.foundations[-1], "e")
     font = self.app.getFont("canvas_default")
     self.texts.info = MfxCanvasText(self.canvas,
                                     tx + lay.XM,
                                     ty,
                                     anchor=ta,
                                     font=font)
 def createText(self, stack, anchor, dx=0, dy=0, text_format=""):
     if self.canvas.preview > 1:
         return
     assert stack.texts.ncards is None
     tx, ty, ta, tf = self.getTextAttr(stack, anchor)
     font = self.game.app.getFont("canvas_default")
     stack.texts.ncards = MfxCanvasText(self.canvas, tx+dx, ty+dy,
                                        anchor=ta, font=font)
     stack.texts.ncards.text_format = text_format or tf
Exemple #21
0
    def createGame(self):
        layout, s = Layout(self), self.s
        self.setSize(
            layout.XM + 9 * layout.XS, layout.YM + 3 * layout.YS +
            7 * layout.YOFFSET + 2 * layout.TEXT_HEIGHT)

        x, y = layout.XM + 4 * layout.XS, layout.YM
        stack = DevilsSolitaire_Foundation(x,
                                           y,
                                           self,
                                           suit=ANY_SUIT,
                                           base_rank=ANY_RANK,
                                           mod=13)
        tx, ty, ta, tf = layout.getTextAttr(stack, 'nw')
        font = self.app.getFont('canvas_default')
        stack.texts.misc = MfxCanvasText(self.canvas,
                                         tx,
                                         ty,
                                         anchor=ta,
                                         font=font)
        s.foundations.append(stack)

        x, y = self.width - layout.XS, layout.YM
        stack = AbstractFoundationStack(x,
                                        y,
                                        self,
                                        suit=ANY_SUIT,
                                        max_move=0,
                                        max_cards=104,
                                        max_accept=0,
                                        base_rank=ANY_RANK)
        layout.createText(stack, 'nw')
        s.foundations.append(stack)

        x, y = layout.XM, layout.YM + layout.YS
        for i in range(4):
            s.rows.append(Vague_RowStack(x, y, self))
            x += layout.XS
        x += layout.XS
        for i in range(4):
            s.rows.append(Vague_RowStack(x, y, self))
            x += layout.XS

        x, y = layout.XM + 4 * layout.XS, layout.YM + layout.YS
        stack = OpenStack(x, y, self)
        stack.CARD_YOFFSET = layout.YOFFSET
        s.reserves.append(stack)

        x, y = layout.XM + 4.5 * layout.XS, self.height - layout.YS
        s.talon = WasteTalonStack(x, y, self, max_rounds=3)
        layout.createText(s.talon, 'n')
        layout.createRoundText(s.talon, 'nnn')
        x -= layout.XS
        s.waste = DevilsSolitaire_WasteStack(x, y, self)
        layout.createText(s.waste, 'n')

        layout.defaultStackGroups()
Exemple #22
0
    def createGame(self):
        l, s = Layout(self), self.s
        font = self.app.getFont("canvas_default")

        # Set window size
        self.setSize(l.XM + l.XS * 11, l.YS * 6)

        # Create foundations
        id = 0
        for j in range(4):
            x, y = l.XM + l.XS * 8, l.YM * 3 + l.YS * j * 1.5
            for i in range(3):
                stack = Pagoda_Foundation(x, y, self, id)
                s.foundations.append(stack)
                t = MfxCanvasText(self.canvas,
                                  x + l.CW // 2,
                                  y - 12,
                                  anchor="center",
                                  font=font)
                stack.texts.misc = t
                x = x + l.XS
                id = id + 1

        # Build pagoda
        x, y = l.XM + l.XS, l.YM
        d = (0.4, 0.25, 0, 0.25, 0.4)
        for i in range(5):
            s.reserves.append(ReserveStack(x + l.XS * i, y + l.YS * d[i],
                                           self))

        x, y = l.XM + l.XS * 2, y + l.YS * 1.1
        d = (0.25, 0, 0.25)
        for i in range(3):
            s.reserves.append(ReserveStack(x + l.XS * i, y + l.YS * d[i],
                                           self))

        x, y = l.XM, y + l.YS * 1.1
        d = (0.5, 0.4, 0.25, 0, 0.25, 0.4, 0.5)
        for i in range(7):
            s.reserves.append(ReserveStack(x + l.XS * i, y + l.YS * d[i],
                                           self))

        x, y = l.XM + l.XS, y + l.YS * 1.5
        for i in range(5):
            s.reserves.append(ReserveStack(x + l.XS * i, y, self))

        # Create talon
        x = l.XM + l.XS * 2.5
        y = l.YM + l.YS * 4.9
        s.talon = WasteTalonStack(x, y, self, num_deal=4, 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()
Exemple #23
0
 def createGame(self, max_rounds=1, num_deal=1):
     lay = Canfield.createGame(self,
                               max_rounds=max_rounds,
                               num_deal=num_deal)
     self.texts.score = MfxCanvasText(self.canvas,
                                      8,
                                      self.height - 8,
                                      anchor="sw",
                                      font=self.app.getFont("canvas_large"))
     return lay
Exemple #24
0
    def createGame(self):
        # create layout
        l, s = Layout(self), self.s

        # set window
        self.setSize(l.XM + 11 * l.XS, l.YM + 3 * l.YS + 16 * l.YOFFSET)

        # create stacks
        #
        x, y = l.XM, self.height - l.YS
        s.talon = DoubleFives_Talon(x, y, self, max_rounds=2, num_deal=1)
        l.createText(s.talon, "n")
        l.createRoundText(self.s.talon, 'nnn')
        x += l.XS
        for i in range(5):
            s.reserves.append(DoubleFives_WasteStack(x, y, self))
            x += l.XS
        l.createText(s.reserves[0], 'n')
        #
        x = self.width - l.XS
        s.addattr(stock=None)  # register extra stack variable
        s.stock = DoubleFives_Stock(x, y, self)
        l.createText(s.stock, "n")
        #
        x, y = l.XM, l.YM
        s.reserves.append(Glenwood_ReserveStack(x, y, self))
        x += l.XS
        s.reserves.append(Glenwood_ReserveStack(x, y, self))
        #
        x += 2 * l.XS
        for i in range(8):
            s.foundations.append(
                Glenwood_Foundation(x,
                                    y,
                                    self,
                                    suit=i / 2,
                                    mod=13,
                                    base_rank=ANY_RANK,
                                    max_move=0))
            x += l.XS
        tx, ty, ta, tf = l.getTextAttr(None, "ss")
        tx, ty = x - l.XS + tx, y + ty
        font = self.app.getFont("canvas_default")
        self.texts.info = MfxCanvasText(self.canvas,
                                        tx,
                                        ty,
                                        anchor=ta,
                                        font=font)
        x, y = l.XM + l.XS / 2, l.YM + l.YS + l.TEXT_HEIGHT
        for i in range(10):
            s.rows.append(DoubleFives_RowStack(x, y, self, mod=13, max_move=1))
            x += l.XS

        # define stack-groups
        l.defaultStackGroups()
Exemple #25
0
    def createGame(self):
        # create layout
        l, s = Layout(self), self.s
        font = self.app.getFont("canvas_default")

        # set window
        # (piles up to 20 cards are playable - needed for Braid_BraidStack)
        decks = self.gameinfo.decks
        h = max(4 * l.YS + 30, l.YS + (self.BRAID_CARDS - 1) * l.YOFFSET)
        self.setSize(l.XM + (8 + decks) * l.XS, l.YM + h)

        # extra settings
        self.base_card = None

        # create stacks
        s.addattr(braid=None)  # register extra stack variable
        x, y = l.XM, l.YM
        for i in range(2):
            s.rows.append(Braid_RowStack(x + 0.5 * l.XS, y, self))
            s.rows.append(Braid_RowStack(x + 4.5 * l.XS, y, self))
            y = y + 3 * l.YS
        y = l.YM + l.YS
        for i in range(2):
            s.rows.append(Braid_ReserveStack(x, y, self))
            s.rows.append(Braid_ReserveStack(x + l.XS, y, self))
            s.rows.append(Braid_ReserveStack(x, y + l.YS, self))
            s.rows.append(Braid_ReserveStack(x + l.XS, y + l.YS, self))
            x = x + 4 * l.XS
        x, y = l.XM + l.XS * 5 // 2, l.YM
        s.braid = Braid_BraidStack(x, y, self)
        x, y = l.XM + 7 * l.XS, l.YM + l.YS * 3 // 2
        s.talon = WasteTalonStack(x, y, self, max_rounds=3)
        l.createText(s.talon, "s")
        l.createRoundText(s.talon, 'nn')
        x -= l.XS
        s.waste = WasteStack(x, y, self)
        l.createText(s.waste, "s")
        y = l.YM
        for i in range(4):
            x = l.XM + 8 * l.XS
            for cl in self.Foundation_Classes:
                s.foundations.append(cl(x, y, self, suit=i))
                x += l.XS
            y = y + l.YS
        x = l.XM + 8 * l.XS + decks * l.XS // 2
        self.texts.info = MfxCanvasText(self.canvas,
                                        x,
                                        y,
                                        anchor="n",
                                        font=font)

        # define stack-groups
        self.sg.talonstacks = [s.talon] + [s.waste]
        self.sg.openstacks = s.foundations + s.rows
        self.sg.dropstacks = [s.braid] + s.rows + [s.waste]
Exemple #26
0
    def createGame(self, playcards=13, reserves=0, texts=False):
        # create layout
        l, s = Layout(self), self.s

        # set window
        # (set size so that at least 13 cards are fully playable)
        w = max(3 * l.XS, l.XS + (playcards - 1) * l.XOFFSET)
        x0 = l.XM
        x1 = x0 + w + 2 * l.XM
        x2 = x1 + l.XS + 2 * l.XM
        x3 = x2 + w + l.XM
        h = l.YM + (4 + int(reserves != 0)) * l.YS + int(texts) * l.TEXT_HEIGHT
        self.setSize(x3, h)

        # create stacks
        y = l.YM
        if reserves:
            x = x1 - int(l.XS * (reserves - 1) / 2)
            for i in range(reserves):
                s.reserves.append(ReserveStack(x, y, self))
                x += l.XS
            y += l.YS
        x = x1
        for i in range(4):
            s.foundations.append(
                self.Foundation_Class(x, y, self, suit=i, max_move=0))
            y += l.YS
        if texts:
            tx, ty, ta, tf = l.getTextAttr(None, "ss")
            tx, ty = x + tx, y - l.YS + ty
            font = self.app.getFont("canvas_default")
            self.texts.info = MfxCanvasText(self.canvas,
                                            tx,
                                            ty,
                                            anchor=ta,
                                            font=font)
        for x in (x0, x2):
            y = l.YM + l.YS * int(reserves != 0)
            for i in range(4):
                stack = self.RowStack_Class(x, y, self)
                stack.CARD_XOFFSET, stack.CARD_YOFFSET = l.XOFFSET, 0
                s.rows.append(stack)
                y += l.YS
        x, y = self.width - l.XS, self.height - l.YS
        s.talon = InitialDealTalonStack(x, y, self)
        if reserves:
            l.setRegion(
                s.rows[:4],
                (-999, l.YM + l.YS - l.CH // 2, x1 - l.CW // 2, 999999))
        else:
            l.setRegion(s.rows[:4], (-999, -999, x1 - l.CW // 2, 999999))

        # default
        l.defaultAll()
Exemple #27
0
 def defaultText(self, layout_stack):
     if self.canvas.preview > 1:
         return None
     # print layout_stack, layout_stack.text_args
     if layout_stack is None or not layout_stack.text_args:
         return None
     layout_stack.text_args["font"] = \
         self.game.app.getFont("canvas_default")
     t = MfxCanvasText(self.game.canvas, **layout_stack.text_args)
     t.text_format = layout_stack.text_format
     return t
Exemple #28
0
    def createGame(self):
        layout = Rushdike.createGame(self)
        help = (_('''\
Club:    A 2 3 4 5 6 7 8 9 T J Q K
Spade:   2 4 6 8 T Q A 3 5 7 9 J K
Heart:   3 6 9 Q 2 5 8 J A 4 7 T K
Diamond: 4 8 Q 3 7 J 2 6 T A 5 9 K'''))
        self.texts.help = MfxCanvasText(self.canvas,
                                        layout.XM, self.height - layout.YM,
                                        text=help,
                                        anchor="sw",
                                        font=self.app.getFont("canvas_fixed"))
Exemple #29
0
 def prepareView(self):
     ReserveStack.prepareView(self)
     if not self.is_visible or self.game.preview > 1:
         return
     images = self.game.app.images
     x, y = self.x + images.CARDW // 2, self.y + images.CARDH // 2
     self.texts.misc = MfxCanvasText(
         self.game.canvas,
         x,
         y,
         anchor="center",
         font=self.game.app.getFont("canvas_default"))
Exemple #30
0
 def createGame(self):
     lay = LittleGate.createGame(self, rows=5)
     king_stack, queen_stack = self.s.reserves
     tx, ty, ta, tf = lay.getTextAttr(king_stack, "s")
     font = self.app.getFont("canvas_default")
     king_stack.texts.misc = MfxCanvasText(self.canvas,
                                           tx,
                                           ty,
                                           anchor=ta,
                                           font=font,
                                           text=_('King'))
     tx, ty, ta, tf = lay.getTextAttr(queen_stack, "s")
     font = self.app.getFont("canvas_default")
     queen_stack.texts.misc = MfxCanvasText(self.canvas,
                                            tx,
                                            ty,
                                            anchor=ta,
                                            font=font,
                                            text=_('Queen'))
     king_stack.cap.base_rank = KING
     queen_stack.cap.base_rank = QUEEN