Exemplo n.º 1
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if not self.cards:
         return True
     dir = self._getDir()
     return (self.cards[-1].rank+dir) % self.cap.mod == cards[0].rank
Exemplo n.º 2
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if not self.cards:
         return True
     dir = self._getDir()
     return (self.cards[-1].rank + dir) % self.cap.mod == cards[0].rank
Exemplo n.º 3
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # check the rank
     if len(self.cards) > 12:
         return cards[0].rank == 25 - len(self.cards)
     else:
         return cards[0].rank == len(self.cards)
Exemplo n.º 4
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if self.cards:
         # check the rank
         if (2 * self.cards[-1].rank + 1) % self.cap.mod != cards[0].rank:
             return False
     return True
Exemplo n.º 5
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # check the rank
     if len(self.cards) > 12:
         return cards[0].rank == 25 - len(self.cards)
     else:
         return cards[0].rank == len(self.cards)
Exemplo n.º 6
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if self.cards:
         # check the rank
         if (2 * self.cards[-1].rank + 1) % self.cap.mod != cards[0].rank:
             return False
     return True
Exemplo n.º 7
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # check the rank
     if self.cards:
         r1, r2 = self.cards[-1].rank, cards[0].rank
         return (r1 + 1) % self.cap.mod == r2
     return True
Exemplo n.º 8
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # check the rank
     if self.cards:
         r1, r2 = self.cards[-1].rank, cards[0].rank
         return (r1 + 1) % self.cap.mod == r2
     return True
Exemplo n.º 9
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if self.game.base_rank is None:
         return True
     if not self.cards:
         return cards[-1].rank == self.game.base_rank
     # check the rank
     return (self.cards[-1].rank + self.cap.dir) % \
         self.cap.mod == cards[0].rank
Exemplo n.º 10
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     c = cards[0]
     for s in self.game.s.rows:
         if s is not from_stack and s.cards and s.cards[-1].suit == c.suit:
             if s.cards[-1].rank > c.rank or s.cards[-1].rank == ACE:
                 # found a higher rank or an Ace on the row stacks
                 return c.rank != ACE
     return False
Exemplo n.º 11
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if self.game.base_rank is None:
         return True
     if not self.cards:
         return cards[-1].rank == self.game.base_rank
     # check the rank
     return (self.cards[-1].rank + self.cap.dir) % \
         self.cap.mod == cards[0].rank
Exemplo n.º 12
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     c = cards[0]
     for s in self.game.s.rows:
         if s is not from_stack and s.cards and s.cards[-1].suit == c.suit:
             if s.cards[-1].rank > c.rank or s.cards[-1].rank == ACE:
                 # found a higher rank or an Ace on the row stacks
                 return c.rank != ACE
     return False
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return 0
     if not self.cards:
         return cards[0].suit == self.game.base_card.suit
     stack_dir = self.game.getFoundationDir()
     if stack_dir == 0:
         card_dir = (cards[0].suit - self.cards[-1].suit) % 12
         return card_dir in (1, 11)
     else:
         return (self.cards[-1].suit + stack_dir) % 12 == cards[0].suit
Exemplo n.º 14
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return 0
     if not self.cards:
         return cards[0].suit == self.game.base_card.suit
     stack_dir = self.game.getFoundationDir()
     if stack_dir == 0:
         card_dir = (cards[0].suit - self.cards[-1].suit) % 12
         return card_dir in (1, 11)
     else:
         return (self.cards[-1].suit + stack_dir) % 12 == cards[0].suit
Exemplo n.º 15
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if self.cards:
         # check the rank - an ACE equals a Six
         rank = self.cards[-1].rank
         if rank == ACE:
             rank = 5
         if (rank + self.cap.dir) % self.cap.mod != cards[0].rank:
             return False
     return True
Exemplo n.º 16
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if self.cards:
         # check the rank - an ACE equals a Six
         rank = self.cards[-1].rank
         if rank == ACE:
             rank = 5
         if (rank + self.cap.dir) % self.cap.mod != cards[0].rank:
             return False
     return True
Exemplo n.º 17
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if not self.cards:
         return True
     stack_dir = self.game.getFoundationDir()
     if stack_dir == 0:
         card_dir = self.getRankDir(cards=(self.cards[-1], cards[0]))
         return card_dir in (1, -1)
     else:
         return ((self.cards[-1].rank + stack_dir) %
                 self.cap.mod == cards[0].rank)
Exemplo n.º 18
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return 0
     if not self.cards:
         return 1
     stack_dir = self.game.getFoundationDir()
     if stack_dir == 0:
         card_dir = (cards[0].rank - self.cards[-1].rank) % self.cap.mod
         return card_dir in (1, 15)
     else:
         return (self.cards[-1].rank + stack_dir) % self.cap.mod \
             == cards[0].rank
Exemplo n.º 19
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return 0
     if not self.cards:
         return 1
     stack_dir = self.game.getFoundationDir()
     if stack_dir == 0:
         card_dir = (cards[0].rank - self.cards[-1].rank) % self.cap.mod
         return card_dir in (1, 11)
     else:
         return (self.cards[-1].rank + stack_dir) % \
                 self.cap.mod == cards[0].rank
Exemplo n.º 20
0
 def acceptsCards(self, from_stack, cards):
     if not (from_stack in self.game.s.rows and
             AbstractFoundationStack.acceptsCards(self, from_stack, cards)):
         return 0
     pile, rank, suit = from_stack.getPile(), 0, 0
     if self.cards:
         rank = (self.cards[-1].rank + 1) % 12
         suit = self.cards[-1].suit + (rank == 0)
     if (not pile or len(pile) <= 11 - rank
             or not isSameSuitSequence(pile[-(12 - rank):])):
         return 0
     return cards[0].suit == suit and cards[0].rank == rank
Exemplo n.º 21
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if not self.cards:
         return True
     stack_dir = self.game.getFoundationDir()
     if stack_dir == 0:
         card_dir = self.getRankDir(cards=(self.cards[-1], cards[0]))
         return card_dir in (1, -1)
     else:
         return ((self.cards[-1].rank + stack_dir) %
                 self.cap.mod == cards[0].rank)
Exemplo n.º 22
0
 def acceptsCards(self, from_stack, cards):
     if not (from_stack in self.game.s.rows and
             AbstractFoundationStack.acceptsCards(self, from_stack, cards)):
         return 0
     pile, rank, suit = from_stack.getPile(), 0, 0
     if self.cards:
         rank = (self.cards[-1].rank + 1) % 12
         suit = self.cards[-1].suit + (rank == 0)
     if (not pile or len(pile) <= 11 - rank or
             not isSameSuitSequence(pile[-(12 - rank):])):
         return 0
     return cards[0].suit == suit and cards[0].rank == rank
Exemplo n.º 23
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # check the rank
     # 7, 8, 9, 10, J, Q, K, A, K, Q, J, 10, 9, 8, 7, A
     if len(self.cards) < 7:
         return cards[0].rank - 6 == len(self.cards)
     elif len(self.cards) == 7:
         return cards[0].rank == ACE
     elif len(self.cards) < 15:
         return cards[0].rank == 20 - len(self.cards)
     else:  # len(self.cards) == 15
         return cards[0].rank == ACE
Exemplo n.º 24
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # check the rank
     # 7, 8, 9, 10, J, Q, K, A, K, Q, J, 10, 9, 8, 7, A
     if len(self.cards) < 7:
         return cards[0].rank - 6 == len(self.cards)
     elif len(self.cards) == 7:
         return cards[0].rank == ACE
     elif len(self.cards) < 15:
         return cards[0].rank == 20 - len(self.cards)
     else:  # len(self.cards) == 15
         return cards[0].rank == ACE
Exemplo n.º 25
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     c1 = cards[0]
     if not self.cards:
         return c1.rank == ACE and c1.suit == 0
     c2 = self.cards[-1]
     if c2.rank == KING:
         suit = (c2.suit+1) % 4
         rank = ACE
     else:
         suit = c2.suit
         rank = c2.rank+1
     return c1.suit == suit and c1.rank == rank
Exemplo n.º 26
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     c1 = cards[0]
     if not self.cards:
         return c1.rank == ACE and c1.suit == 0
     c2 = self.cards[-1]
     if c2.rank == KING:
         suit = (c2.suit+1) % 4
         rank = ACE
     else:
         suit = c2.suit
         rank = c2.rank+1
     return c1.suit == suit and c1.rank == rank
Exemplo n.º 27
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # search foundation with max number of cards
     assert len(cards) == 1
     max_s, max_cards = None, -1
     for s in self.game.s.foundations:
         if len(s.cards) > max_cards:
             max_s, max_cards = s, len(s.cards)
     # if we have less cards, then rank must match the card in this
     # foundation
     if len(self.cards) < max_cards:
         if cards[0].rank != max_s.cards[len(self.cards)].rank:
             return False
     #
     return True
Exemplo n.º 28
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # search foundation with max number of cards
     assert len(cards) == 1
     max_s, max_cards = None, -1
     for s in self.game.s.foundations:
         if len(s.cards) > max_cards:
             max_s, max_cards = s, len(s.cards)
     # if we have less cards, then rank must match the card in this
     # foundation
     if len(self.cards) < max_cards:
         if cards[0].rank != max_s.cards[len(self.cards)].rank:
             return False
     #
     return True
Exemplo n.º 29
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if from_stack not in self.game.s.rows:
         return False
     if cards[0].rank == ACE:
         return True
     if not self.cards:
         return False
     rank = self.cards[-1].rank
     if rank == ACE:
         rank = 5
     if (rank + self.cap.dir) % self.cap.mod != cards[0].rank:
         return False
     if cards[0].rank == QUEEN:
         return True
     i = list(self.game.s.foundations).index(self)
     j = list(self.game.s.rows).index(from_stack)
     return i == j
Exemplo n.º 30
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     if from_stack not in self.game.s.rows:
         return False
     if cards[0].rank == ACE:
         return True
     if not self.cards:
         return False
     rank = self.cards[-1].rank
     if rank == ACE:
         rank = 5
     if (rank + self.cap.dir) % self.cap.mod != cards[0].rank:
         return False
     if cards[0].rank == QUEEN:
         return True
     i = list(self.game.s.foundations).index(self)
     j = list(self.game.s.rows).index(from_stack)
     return i == j
Exemplo n.º 31
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     assert len(cards) == 1
     indx = list(self.game.s.foundations).index(self)
     c0 = cards[0]
     below_found = self.game.s.foundations[indx-1]
     if indx == 0:
         if not self.cards:
             return True
         return c0.suit == self.cards[0].suit
     if not below_found.cards:
         return False
     if not self.cards:
         return c0.rank == below_found.cards[0].rank
     if c0.suit != self.cards[0].suit:
         return False
     for c1 in below_found.cards:
         if c0.rank == c1.rank:
             return True
     return False
Exemplo n.º 32
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     assert len(cards) == 1
     indx = list(self.game.s.foundations).index(self)
     c0 = cards[0]
     below_found = self.game.s.foundations[indx-1]
     if indx == 0:
         if not self.cards:
             return True
         return c0.suit == self.cards[0].suit
     if not below_found.cards:
         return False
     if not self.cards:
         return c0.rank == below_found.cards[0].rank
     if c0.suit != self.cards[0].suit:
         return False
     for c1 in below_found.cards:
         if c0.rank == c1.rank:
             return True
     return False
Exemplo n.º 33
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     return isSameColorSequence(cards, self.cap.mod, self.cap.dir)
Exemplo n.º 34
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     return isRankSequence(cards, dir=0)
Exemplo n.º 35
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # We accept any King. Pairs will get delivered by _dropPairMove.
     return cards[0].rank == KING
Exemplo n.º 36
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # check the rank
     return ((self.cards[-1].rank+1) % 13 == cards[0].rank or
             (self.cards[-1].rank-1) % 13 == cards[0].rank)
Exemplo n.º 37
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # check the rank
     return ((self.cards[-1].rank+1) % 13 == cards[0].rank or
             (self.cards[-1].rank-1) % 13 == cards[0].rank)
Exemplo n.º 38
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     # We accept any King. Pairs will get delivered by _dropPairMove.
     return cards[0].rank == KING
Exemplo n.º 39
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     return isRankSequence(cards, dir=0)