예제 #1
0
파일: pileon.py 프로젝트: jimsize/PySolFC
 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
예제 #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
예제 #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)
예제 #4
0
파일: doublets.py 프로젝트: shlomif/PySolFC
 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
예제 #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)
예제 #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
예제 #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
예제 #8
0
파일: golf.py 프로젝트: shlomif/PySolFC
 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
예제 #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
예제 #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
예제 #11
0
파일: glenwood.py 프로젝트: tuchang/PySolFC
 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
예제 #12
0
파일: acesup.py 프로젝트: shlomif/PySolFC
 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
예제 #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
예제 #15
0
파일: gypsy.py 프로젝트: jimsize/PySolFC
 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
예제 #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
예제 #17
0
파일: braid.py 프로젝트: joeraz/PySolFC
 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)
예제 #18
0
파일: hexadeck.py 프로젝트: jimsize/PySolFC
 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
예제 #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
예제 #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
예제 #21
0
파일: braid.py 프로젝트: shlomif/PySolFC
 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)
예제 #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
예제 #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
예제 #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
예제 #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
예제 #26
0
파일: golf.py 프로젝트: shlomif/PySolFC
 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
예제 #27
0
파일: osmosis.py 프로젝트: shlomif/PySolFC
 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
예제 #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
예제 #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
예제 #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
예제 #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
예제 #32
0
파일: osmosis.py 프로젝트: shlomif/PySolFC
 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
예제 #33
0
파일: spider.py 프로젝트: jimsize/PySolFC
 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)
예제 #34
0
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     return isRankSequence(cards, dir=0)
예제 #35
0
파일: pyramid.py 프로젝트: voyageur/PySolFC
 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
예제 #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)
예제 #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)
예제 #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
예제 #39
0
파일: acesup.py 프로젝트: shlomif/PySolFC
 def acceptsCards(self, from_stack, cards):
     if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
         return False
     return isRankSequence(cards, dir=0)