def deal(self, num: int = 1): '''returns cardpile taken from deck''' if not isinstance(num, int): raise TypeError( 'Deck.deal() num argument must be an integer, not a ' + str(type(num))) cards = CardPile() while num > 0: card = self.take() cards.add(card) num -= 1 return cards
def take(self, n: int = 1) -> CardPile: if not isinstance(n, int): raise TypeError( 'DiscardPile.take() n argument must be an integer, not a ' + str(type(n))) if n > len(self): raise IndexError('Can only .take() up to ' + str(len(self)) + ' cards, not ' + str(n)) cards = CardPile() for i in range(n): cards.add(self.topCard()) self.cards.pop() return cards
def take(self, n: int = 1): if not isinstance(n, int): raise TypeError( 'BulidingPile.take() n argument must be an integer, not a ' + str(type(n))) if len(self) < 1: raise IllegalMove('an empty build pile cannot be taken from') num = 0 for card in self: if not card.facedown: num += 1 if n > num: raise IllegalMove( 'only faceup cards may be taken from a build pile') cards = CardPile() for i in range(n): cards.add(self.topCard(), False) self.cards.pop() if len(self) > 0 and self.topCard().facedown: self.topCard().flip() return cards
def add(self, card): CardPile.add(self, card, False) return self