Exemplo n.º 1
0
 def clickHandler(self, event):
     game = self.game
     drag = game.drag
     # checks
     if not self.cards:
         return 1
     card = self.cards[-1]
     from_stack = drag.stack
     if from_stack is self:
         # remove selection
         self.game.playSample("nomove")
         self._stopDrag()
         return 1
     if self.basicIsBlocked():
         # remove selection
         # self.game.playSample("nomove")
         return 1
     # possible move
     if from_stack:
         if self.acceptsCards(from_stack, from_stack.cards):
             self._stopDrag()
             # this code actually moves the tiles
             from_stack.playMoveMove(1, self, frames=0, sound=True)
             if TOOLKIT == 'kivy':
                 if drag.shade_img:
                     # drag.shade_img.dtag(drag.shade_stack.group)
                     drag.shade_img.delete()
                     # game.canvas.delete(drag.shade_img)
                     drag.shade_img = None
             return 1
     drag.stack = self
     self.game.playSample("startdrag")
     # create the shade image (see stack.py, _updateShade)
     if drag.shade_img:
         # drag.shade_img.dtag(drag.shade_stack.group)
         drag.shade_img.delete()
         # game.canvas.delete(drag.shade_img)
         drag.shade_img = None
     img = game.app.images.getHighlightedCard(card.deck, card.suit,
                                              card.rank)
     if img is None:
         return 1
     img = MfxCanvasImage(game.canvas,
                          self.x,
                          self.y,
                          image=img,
                          anchor=ANCHOR_NW,
                          group=self.group)
     drag.shade_img = img
     # raise/lower the shade image to the correct stacking order
     img.tkraise(card.item)
     drag.shade_stack = self
     return 1
Exemplo n.º 2
0
 def clickHandler(self, event):
     game = self.game
     drag = game.drag
     # checks
     if not self.cards:
         return 1
     card = self.cards[-1]
     from_stack = drag.stack
     if from_stack is self:
         # remove selection
         self.game.playSample("nomove")
         self._stopDrag()
         return 1
     if self.basicIsBlocked():
         # remove selection
         # self.game.playSample("nomove")
         return 1
     # possible move
     if from_stack:
         if self.acceptsCards(from_stack, from_stack.cards):
             self._stopDrag()
             # this code actually moves the tiles
             from_stack.playMoveMove(1, self, frames=0, sound=True)
             if TOOLKIT == 'kivy':
                 if drag.shade_img:
                     # drag.shade_img.dtag(drag.shade_stack.group)
                     drag.shade_img.delete()
                     # game.canvas.delete(drag.shade_img)
                     drag.shade_img = None
             return 1
     drag.stack = self
     self.game.playSample("startdrag")
     # create the shade image (see stack.py, _updateShade)
     if drag.shade_img:
         # drag.shade_img.dtag(drag.shade_stack.group)
         drag.shade_img.delete()
         # game.canvas.delete(drag.shade_img)
         drag.shade_img = None
     img = game.app.images.getHighlightedCard(
         card.deck, card.suit, card.rank)
     if img is None:
         return 1
     img = MfxCanvasImage(game.canvas, self.x, self.y, image=img,
                          anchor=ANCHOR_NW, group=self.group)
     drag.shade_img = img
     # raise/lower the shade image to the correct stacking order
     img.tkraise(card.item)
     drag.shade_stack = self
     return 1
Exemplo n.º 3
0
    def _highlightCards(self, info, sleep=1.5, delta=(1,1,1,1)):
        if not Image:
            delta = (-self._delta_x, 0, 0, -self._delta_y)
            return Game._highlightCards(self, info, sleep=sleep, delta=delta)

        if not info:
            return 0
        if self.pause:
            return 0
        self.stopWinAnimation()
        items = []
        for s, c1, c2, color in info:
            assert c1 is c2
            assert c1 in s.cards
            tkraise = False
            x, y = s.x, s.y
            img = self.app.images.getHighlightCard(c1.deck, c1.suit, c1.rank)
            if img is None:
                continue
            img = MfxCanvasImage(self.canvas, x, y, image=img,
                                 anchor=ANCHOR_NW, group=s.group)
            if self.drag.stack and s is self.drag.stack:
                img.tkraise(self.drag.shade_img)
            else:
                img.tkraise(c1.item)
            items.append(img)
        if not items:
            return 0
        self.canvas.update_idletasks()
        if sleep:
            self.sleep(sleep)
            items.reverse()
            for r in items:
                r.delete()
            self.canvas.update_idletasks()
            return EVENT_HANDLED
        else:
            # remove items later (find_card_dialog)
            return items
Exemplo n.º 4
0
    def _highlightCards(self, info, sleep=1.5, delta=(1, 1, 1, 1)):
        if not Image:
            delta = (-self._delta_x, 0, 0, -self._delta_y)
            return Game._highlightCards(self, info, sleep=sleep, delta=delta)

        if not info:
            return 0
        if self.pause:
            return 0
        self.stopWinAnimation()
        items = []
        for s, c1, c2, color in info:
            assert c1 is c2
            assert c1 in s.cards
            tkraise = False
            x, y = s.x, s.y
            img = self.app.images.getHighlightedCard(c1.deck, c1.suit, c1.rank,
                                                     'black')
            if img is None:
                continue
            img = MfxCanvasImage(self.canvas,
                                 x,
                                 y,
                                 image=img,
                                 anchor=ANCHOR_NW,
                                 group=s.group)
            if self.drag.stack and s is self.drag.stack:
                img.tkraise(self.drag.shade_img)
            else:
                img.tkraise(c1.item)
            items.append(img)
        if not items:
            return 0
        self.canvas.update_idletasks()
        if sleep:
            self.sleep(sleep)
            items.reverse()
            for r in items:
                r.delete()
            self.canvas.update_idletasks()
            return EVENT_HANDLED
        else:
            # remove items later (find_card_dialog)
            return items