コード例 #1
0
 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
コード例 #2
0
 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
コード例 #3
0
 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
コード例 #4
0
 def add(self, card):
     CardPile.add(self, card, False)
     return self