class _TwoImageCardWithHideItem(_HideableCard): # Private instance variables: # __face, __back -- the canvas items making up the card def __init__(self, id, deck, suit, rank, game, x=0, y=0): _HideableCard.__init__(self, id, deck, suit, rank, game, x=x, y=y) self.item = MfxCanvasGroup(game.canvas) self.__face = MfxCanvasImage(game.canvas, self.x, self.y + 11000, image=game.getCardFaceImage(deck, suit, rank), anchor="nw") self.__back = MfxCanvasImage(game.canvas, self.x, self.y, image=game.getCardBackImage(deck, suit, rank), anchor="nw") self.__face.addtag(self.item) self.__back.addtag(self.item) def showFace(self, unhide=1): if not self.face_up: self.__back.move(0, 10000) ##self.__face.tkraise() self.__face.move(0, -11000) self.tkraise(unhide) self.face_up = 1 def showBack(self, unhide=1): if self.face_up: self.__face.move(0, 11000) ##self.__back.tkraise() self.__back.move(0, -10000) self.tkraise(unhide) self.face_up = 0 def updateCardBackground(self, image): self.__back.config(image=image)
class _OneImageCard(_HideableCard): def __init__(self, id, deck, suit, rank, game, x=0, y=0): _HideableCard.__init__(self, id, deck, suit, rank, game, x=x, y=y) self._face_image = game.getCardFaceImage(deck, suit, rank) self._back_image = game.getCardBackImage(deck, suit, rank) self._shade_image = game.getCardShadeImage() self._active_image = self._back_image self.item = MfxCanvasImage(game.canvas, self.x, self.y, image=self._active_image, anchor="nw") self.shade_item = None # self._setImage = self.item.config def _setImage(self, image): if image is not self._active_image: self.item.config(image=image) self._active_image = image def showFace(self, unhide=1): if not self.face_up: self._setImage(image=self._face_image) self.tkraise(unhide) self.face_up = 1 def showBack(self, unhide=1): if self.face_up: self._setImage(image=self._back_image) self.tkraise(unhide) self.face_up = 0 def updateCardBackground(self, image): self._back_image = image if not self.face_up: self._setImage(image=image) # # optimized by inlining # def moveBy(self, dx, dy): dx, dy = int(dx), int(dy) self.x = self.x + dx self.y = self.y + dy item = self.item item.canvas.tk.call(item.canvas._w, "move", item.id, dx, dy) # for resize def update(self, id, deck, suit, rank, game): self._face_image = game.getCardFaceImage(deck, suit, rank) self._back_image = game.getCardBackImage(deck, suit, rank) self._shade_image = game.getCardShadeImage() if self.face_up: img = self._face_image else: img = self._back_image self.item.config(image=img) self._active_image = img
class _OneImageCard(_HideableCard): def __init__(self, id, deck, suit, rank, game, x=0, y=0): _HideableCard.__init__(self, id, deck, suit, rank, game, x=x, y=y) self._face_image = game.getCardFaceImage(deck, suit, rank) self._back_image = game.getCardBackImage(deck, suit, rank) self._shade_image = game.getCardShadeImage() self._active_image = self._back_image self.item = MfxCanvasImage( game.canvas, self.x, self.y, image=self._active_image, anchor="nw") self.shade_item = None # self._setImage = self.item.config def _setImage(self, image): if image is not self._active_image: self.item.config(image=image) self._active_image = image def showFace(self, unhide=1): if not self.face_up: self._setImage(image=self._face_image) self.tkraise(unhide) self.face_up = 1 def showBack(self, unhide=1): if self.face_up: self._setImage(image=self._back_image) self.tkraise(unhide) self.face_up = 0 def updateCardBackground(self, image): self._back_image = image if not self.face_up: self._setImage(image=image) # # optimized by inlining # def moveBy(self, dx, dy): dx, dy = int(dx), int(dy) self.x = self.x + dx self.y = self.y + dy item = self.item item.canvas.tk.call(item.canvas._w, "move", item.id, dx, dy) # for resize def update(self, id, deck, suit, rank, game): self._face_image = game.getCardFaceImage(deck, suit, rank) self._back_image = game.getCardBackImage(deck, suit, rank) self._shade_image = game.getCardShadeImage() if self.face_up: img = self._face_image else: img = self._back_image self.item.config(image=img) self._active_image = img