예제 #1
0
def bestHand(cards):
    best = PokerHand('2S 3C 4H 5C 7H')  # Weakest Poker Hand
    cards = cards.split(' ')
    for one in range(len(cards)):
        for two in range(one + 1, len(cards)):
            for three in range(two + 1, len(cards)):
                for four in range(three + 1, len(cards)):
                    for five in range(four + 1, len(cards)):
                        test = PokerHand(cards[one] + ' ' + cards[two] + ' ' +
                                         cards[three] + ' ' + cards[four] +
                                         ' ' + cards[five])
                        if test > best or test == best:
                            best = test
    return best
def receive_result(sck, idx):
    global hands_stored, play_hand, play_hand_count
    pickled_hand = sck.recv(4096)
    hand = pickle.loads(pickled_hand)
    hands_stored[idx] = hand
    play_hand[idx] = True
    play_hand_count += 1
    this_hand = PokerHand()
    points_stored[idx] = this_hand.get_six_hands_points(hands_stored[idx])
    sd = ShowDownPoints(points_stored, play_hand)
    for i in range(6):
        if play_hand[i] == True:
            for cardlist in hands_stored[i]:
                window.title("Player Hands")
                y_list = [
                    0, 5 * Y_GAP, 4 * Y_GAP, 3 * Y_GAP, 2 * Y_GAP, Y_GAP, 0
                ]
                for j in [6, 5, 4, 3, 2, 1]:
                    x = X_OFFSET
                    x1 = x
                    y = y_list[j] + 8
                    overlap_factor = 1
                    for card in cardlist[j]:
                        if len(cardlist[i]) > 5:
                            overlap_factor = 5 / (len(cardlist[j]) + 1)
                        r.create_image(x,
                                       y,
                                       image=image_dict[card[0:3]],
                                       anchor="nw",
                                       tag="best")
                        x += X_GAP * overlap_factor
                    x1 = x1 + 5 * X_GAP
                    x = x1
    print("Server Received", idx, hand)
예제 #3
0
 def Ks_Qs_J(self):
     return PokerHand([
         PlayingCard(Suit.Diamonds, FaceValue.King),
         PlayingCard(Suit.Clubs, FaceValue.King),
         PlayingCard(Suit.Spades, FaceValue.Queen),
         PlayingCard(Suit.Diamonds, FaceValue.Queen),
         PlayingCard(Suit.Spades, FaceValue.Jack)
     ])
예제 #4
0
 def three_2s_AK(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Tre),
         PlayingCard(Suit.Diamonds, FaceValue.Tre),
         PlayingCard(Suit.Clubs, FaceValue.Tre),
         PlayingCard(Suit.Spades, FaceValue.Ace),
         PlayingCard(Suit.Hearts, FaceValue.King)
     ])
예제 #5
0
 def aces_2s_K(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Ace),
         PlayingCard(Suit.Diamonds, FaceValue.Ace),
         PlayingCard(Suit.Spades, FaceValue.Deuce),
         PlayingCard(Suit.Diamonds, FaceValue.Deuce),
         PlayingCard(Suit.Spades, FaceValue.King)
     ])
예제 #6
0
 def flush_h_KQJ98(self):
     return PokerHand([
         PlayingCard(Suit.Hearts, FaceValue.King),
         PlayingCard(Suit.Hearts, FaceValue.Queen),
         PlayingCard(Suit.Hearts, FaceValue.Jack),
         PlayingCard(Suit.Hearts, FaceValue.Nine),
         PlayingCard(Suit.Hearts, FaceValue.Eight)
     ])
예제 #7
0
 def flush_s_A7532(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Ace),
         PlayingCard(Suit.Spades, FaceValue.Seven),
         PlayingCard(Suit.Spades, FaceValue.Five),
         PlayingCard(Suit.Spades, FaceValue.Tre),
         PlayingCard(Suit.Spades, FaceValue.Deuce)
     ])
예제 #8
0
 def ace_high_straight(self):
     return PokerHand([
         PlayingCard(Suit.Diamonds, FaceValue.Ace),
         PlayingCard(Suit.Hearts, FaceValue.King),
         PlayingCard(Suit.Hearts, FaceValue.Queen),
         PlayingCard(Suit.Hearts, FaceValue.Jack),
         PlayingCard(Suit.Hearts, FaceValue.Ten)
     ])
예제 #9
0
 def six_high_straight2(self):
     return PokerHand([
         PlayingCard(Suit.Clubs, FaceValue.Six),
         PlayingCard(Suit.Hearts, FaceValue.Five),
         PlayingCard(Suit.Spades, FaceValue.Four),
         PlayingCard(Suit.Hearts, FaceValue.Tre),
         PlayingCard(Suit.Hearts, FaceValue.Deuce)
     ])
예제 #10
0
 def eights_full_of_2s(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Eight),
         PlayingCard(Suit.Diamonds, FaceValue.Eight),
         PlayingCard(Suit.Clubs, FaceValue.Eight),
         PlayingCard(Suit.Spades, FaceValue.Deuce),
         PlayingCard(Suit.Diamonds, FaceValue.Deuce)
     ])
예제 #11
0
 def sevens_full_of_aces(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Seven),
         PlayingCard(Suit.Diamonds, FaceValue.Seven),
         PlayingCard(Suit.Clubs, FaceValue.Seven),
         PlayingCard(Suit.Clubs, FaceValue.Ace),
         PlayingCard(Suit.Diamonds, FaceValue.Ace)
     ])
예제 #12
0
 def four_4s_9(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Four),
         PlayingCard(Suit.Diamonds, FaceValue.Four),
         PlayingCard(Suit.Clubs, FaceValue.Four),
         PlayingCard(Suit.Hearts, FaceValue.Four),
         PlayingCard(Suit.Spades, FaceValue.Nine)
     ])
예제 #13
0
 def tens_9s_8(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Ten),
         PlayingCard(Suit.Diamonds, FaceValue.Ten),
         PlayingCard(Suit.Spades, FaceValue.Nine),
         PlayingCard(Suit.Diamonds, FaceValue.Nine),
         PlayingCard(Suit.Spades, FaceValue.Eight)
     ])
예제 #14
0
 def fours_3s_K(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Four),
         PlayingCard(Suit.Diamonds, FaceValue.Four),
         PlayingCard(Suit.Diamonds, FaceValue.Tre),
         PlayingCard(Suit.Clubs, FaceValue.Tre),
         PlayingCard(Suit.Hearts, FaceValue.King)
     ])
예제 #15
0
 def tens_9s_8v2(self):
     return PokerHand([
         PlayingCard(Suit.Clubs, FaceValue.Ten),
         PlayingCard(Suit.Hearts, FaceValue.Ten),
         PlayingCard(Suit.Clubs, FaceValue.Nine),
         PlayingCard(Suit.Hearts, FaceValue.Nine),
         PlayingCard(Suit.Diamonds, FaceValue.Eight)
     ])
예제 #16
0
 def seven_5_4_3_2(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Seven),
         PlayingCard(Suit.Spades, FaceValue.Five),
         PlayingCard(Suit.Diamonds, FaceValue.Four),
         PlayingCard(Suit.Spades, FaceValue.Tre),
         PlayingCard(Suit.Spades, FaceValue.Deuce)
     ])
예제 #17
0
 def king_high_straight_flush(self):
     return PokerHand([
         PlayingCard(Suit.Diamonds, FaceValue.King),
         PlayingCard(Suit.Diamonds, FaceValue.Queen),
         PlayingCard(Suit.Diamonds, FaceValue.Jack),
         PlayingCard(Suit.Diamonds, FaceValue.Ten),
         PlayingCard(Suit.Diamonds, FaceValue.Nine)
     ])
예제 #18
0
 def royal_flush_hearts(self):
     return PokerHand([
         PlayingCard(Suit.Hearts, FaceValue.Ace),
         PlayingCard(Suit.Hearts, FaceValue.King),
         PlayingCard(Suit.Hearts, FaceValue.Queen),
         PlayingCard(Suit.Hearts, FaceValue.Jack),
         PlayingCard(Suit.Hearts, FaceValue.Ten)
     ])
예제 #19
0
 def ace_K_Q_J_8(self):
     return PokerHand([
         PlayingCard(Suit.Diamonds, FaceValue.Ace),
         PlayingCard(Suit.Spades, FaceValue.King),
         PlayingCard(Suit.Diamonds, FaceValue.Queen),
         PlayingCard(Suit.Diamonds, FaceValue.Jack),
         PlayingCard(Suit.Spades, FaceValue.Eight)
     ])
예제 #20
0
 def ace_K_Q_J_8v2(self):
     return PokerHand([
         PlayingCard(Suit.Clubs, FaceValue.Ace),
         PlayingCard(Suit.Hearts, FaceValue.King),
         PlayingCard(Suit.Clubs, FaceValue.Queen),
         PlayingCard(Suit.Clubs, FaceValue.Jack),
         PlayingCard(Suit.Clubs, FaceValue.Eight)
     ])
예제 #21
0
 def twos_K_Q_J(self):
     return PokerHand([
         PlayingCard(Suit.Clubs, FaceValue.Deuce),
         PlayingCard(Suit.Hearts, FaceValue.Deuce),
         PlayingCard(Suit.Clubs, FaceValue.King),
         PlayingCard(Suit.Diamonds, FaceValue.Queen),
         PlayingCard(Suit.Hearts, FaceValue.Jack)
     ])
예제 #22
0
 def ace_k_q_j_9(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Ace),
         PlayingCard(Suit.Diamonds, FaceValue.King),
         PlayingCard(Suit.Spades, FaceValue.Queen),
         PlayingCard(Suit.Spades, FaceValue.Jack),
         PlayingCard(Suit.Spades, FaceValue.Nine)
     ])
예제 #23
0
 def fives_J_9_6v2(self):
     return PokerHand([
         PlayingCard(Suit.Clubs, FaceValue.Five),
         PlayingCard(Suit.Hearts, FaceValue.Five),
         PlayingCard(Suit.Clubs, FaceValue.Jack),
         PlayingCard(Suit.Diamonds, FaceValue.Nine),
         PlayingCard(Suit.Clubs, FaceValue.Six)
     ])
예제 #24
0
 def fives_J_9_6(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Five),
         PlayingCard(Suit.Diamonds, FaceValue.Five),
         PlayingCard(Suit.Diamonds, FaceValue.Jack),
         PlayingCard(Suit.Spades, FaceValue.Nine),
         PlayingCard(Suit.Diamonds, FaceValue.Six)
     ])
예제 #25
0
 def tens_8_7_6(self):
     return PokerHand([
         PlayingCard(Suit.Clubs, FaceValue.Ten),
         PlayingCard(Suit.Hearts, FaceValue.Ten),
         PlayingCard(Suit.Spades, FaceValue.Eight),
         PlayingCard(Suit.Spades, FaceValue.Seven),
         PlayingCard(Suit.Spades, FaceValue.Six)
     ])
예제 #26
0
 def tens_K_3_2(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Ten),
         PlayingCard(Suit.Diamonds, FaceValue.Ten),
         PlayingCard(Suit.Diamonds, FaceValue.King),
         PlayingCard(Suit.Diamonds, FaceValue.Tre),
         PlayingCard(Suit.Diamonds, FaceValue.Deuce)
     ])
예제 #27
0
 def aces_4_3_2(self):
     return PokerHand([
         PlayingCard(Suit.Clubs, FaceValue.Ace),
         PlayingCard(Suit.Hearts, FaceValue.Ace),
         PlayingCard(Suit.Spades, FaceValue.Four),
         PlayingCard(Suit.Spades, FaceValue.Tre),
         PlayingCard(Suit.Spades, FaceValue.Deuce)
     ])
예제 #28
0
 def four_8s_3(self):
     return PokerHand([
         PlayingCard(Suit.Spades, FaceValue.Eight),
         PlayingCard(Suit.Diamonds, FaceValue.Eight),
         PlayingCard(Suit.Clubs, FaceValue.Eight),
         PlayingCard(Suit.Hearts, FaceValue.Eight),
         PlayingCard(Suit.Diamonds, FaceValue.Tre)
     ])
예제 #29
0
 def best_hand(self):
     if len(self.table.table_cards) + len(self._cards) < 5:
         return None
     hands = [PokerHand(list(card_set)) for card_set in itertools.combinations(
         self._cards + self.table.table_cards, 5)]
     # only look at hand_type, not card values
     hands.sort(key=lambda h: h.hand_type.value, reverse=True)
     # throw out hands of lower valued hand_type
     contenders = []
     for hand in hands:
         if hand.hand_type == hands[0].hand_type:
             contenders.append(hand)
         else:
             break
     # Sort hands by face_value and return best
     contenders.sort()
     return contenders[-1]
예제 #30
0
 def test_poker_hand(self):
     self.assertTrue(
         PokerHand("TC TH 5C 5H KH").compare_with(
             PokerHand("9C 9H 5C 5H AC")) == Result.WIN)
     self.assertTrue(
         PokerHand("TS TD KC JC 7C").compare_with(
             PokerHand("JS JC AS KC TD")) == Result.LOSS)
     self.assertTrue(
         PokerHand("7H 7C QC JS TS").compare_with(
             PokerHand("7D 7C JS TS 6D")) == Result.WIN)
     self.assertTrue(
         PokerHand("5S 5D 8C 7S 6H").compare_with(
             PokerHand("7D 7S 5S 5D JS")) == Result.LOSS)
     self.assertTrue(
         PokerHand("AS AD KD 7C 3D").compare_with(
             PokerHand("AD AH KD 7C 4S")) == Result.LOSS)
     self.assertTrue(
         PokerHand("TS JS QS KS AS").compare_with(
             PokerHand("AC AH AS AS KS")) == Result.WIN)
     self.assertTrue(
         PokerHand("TS JS QS KS AS").compare_with(
             PokerHand("TC JS QC KS AC")) == Result.WIN)
     self.assertTrue(
         PokerHand("TS JS QS KS AS").compare_with(
             PokerHand("QH QS QC AS 8H")) == Result.WIN)
     self.assertTrue(
         PokerHand("AC AH AS AS KS").compare_with(
             PokerHand("TC JS QC KS AC")) == Result.WIN)
     self.assertTrue(
         PokerHand("AC AH AS AS KS").compare_with(
             PokerHand("QH QS QC AS 8H")) == Result.WIN)
     self.assertTrue(
         PokerHand("TC JS QC KS AC").compare_with(
             PokerHand("QH QS QC AS 8H")) == Result.WIN)
     self.assertTrue(
         PokerHand("7H 8H 9H TH JH").compare_with(
             PokerHand("JH JC JS JD TH")) == Result.WIN)
     self.assertTrue(
         PokerHand("7H 8H 9H TH JH").compare_with(
             PokerHand("4H 5H 9H TH JH")) == Result.WIN)
     self.assertTrue(
         PokerHand("7H 8H 9H TH JH").compare_with(
             PokerHand("7C 8S 9H TH JH")) == Result.WIN)
     self.assertTrue(
         PokerHand("7H 8H 9H TH JH").compare_with(
             PokerHand("TS TH TD JH JD")) == Result.WIN)
     self.assertTrue(
         PokerHand("7H 8H 9H TH JH").compare_with(
             PokerHand("JH JD TH TC 4C")) == Result.WIN)
     self.assertTrue(
         PokerHand("JH JC JS JD TH").compare_with(
             PokerHand("4H 5H 9H TH JH")) == Result.WIN)
     self.assertTrue(
         PokerHand("JH JC JS JD TH").compare_with(
             PokerHand("7C 8S 9H TH JH")) == Result.WIN)
     self.assertTrue(
         PokerHand("JH JC JS JD TH").compare_with(
             PokerHand("TS TH TD JH JD")) == Result.WIN)
     self.assertTrue(
         PokerHand("JH JC JS JD TH").compare_with(
             PokerHand("JH JD TH TC 4C")) == Result.WIN)
     self.assertTrue(
         PokerHand("4H 5H 9H TH JH").compare_with(
             PokerHand("7C 8S 9H TH JH")) == Result.WIN)
     self.assertTrue(
         PokerHand("4H 5H 9H TH JH").compare_with(
             PokerHand("TS TH TD JH JD")) == Result.LOSS)
     self.assertTrue(
         PokerHand("4H 5H 9H TH JH").compare_with(
             PokerHand("JH JD TH TC 4C")) == Result.WIN)
     self.assertTrue(
         PokerHand("7C 8S 9H TH JH").compare_with(
             PokerHand("TS TH TD JH JD")) == Result.LOSS)
     self.assertTrue(
         PokerHand("7C 8S 9H TH JH").compare_with(
             PokerHand("JH JD TH TC 4C")) == Result.WIN)
     self.assertTrue(
         PokerHand("TS TH TD JH JD").compare_with(
             PokerHand("JH JD TH TC 4C")) == Result.WIN)