Esempio n. 1
0
def eval_post_flop_current(hole_cards, community_cards):
    board = []
    hand = []
    remaining_cards = all_cards[:]
    for card in hole_cards:
        new_card = Card.new(card[1] + card[0].lower())
        hand.append(new_card)
        remaining_cards.remove(new_card)
    for card in community_cards:
        new_card = Card.new(card[1] + card[0].lower())
        board.append(new_card)
        remaining_cards.remove(new_card)

    score = evaluator.evaluate(board, hand)

    rounds = 0
    wins = 0
    draws = 0
    for i in xrange(0, len(remaining_cards)):
        for j in xrange(i + 1, len(remaining_cards)):
            rounds += 1
            opp_hand = [remaining_cards[i], remaining_cards[j]]
            opp_score = evaluator.evaluate(board, opp_hand)
            if (opp_score > score):
                wins += 1
            # elif(evaluator.evaluate(board, opp_hand) < score):
            #     loses += 1
            elif (opp_score == score):
                draws += 1
    # print("Rounds played: " + str(rounds) + " Wins: " + str(wins) + " Draws: " + str(draws))
    return 100.0 * (float(wins) / rounds)
Esempio n. 2
0
def eval_post_flop_rank(hole_cards, community_cards):
    board = []
    hand = []
    for card in hole_cards:
        hand.append(Card.new(card[1] + card[0].lower()))  # 9c, Ah, Kd etc..
    for card in community_cards:
        board.append(Card.new(card[1] + card[0].lower()))

    score = evaluator.evaluate(board, hand)
    return (
        7462 - score + 1
    ) / 7462.0 * 100  # there are only 7642 distinctly ranked hands in poker
Esempio n. 3
0
    def GetFullDeck():
        if Deck._FULL_DECK:
            return list(Deck._FULL_DECK)

        # create the standard 52 card deck
        for rank in Card.STR_RANKS:
            for suit, val in Card.CHAR_SUIT_TO_INT_SUIT.iteritems():
                Deck._FULL_DECK.append(Card.new(rank + suit))

        return list(Deck._FULL_DECK)
Esempio n. 4
0
def eval_post_flop_true(hole_cards, community_cards):
    board = []
    hand = []
    remaining_cards = all_cards[:]
    for card in hole_cards:
        new_card = Card.new(card[1] + card[0].lower())
        hand.append(new_card)
        remaining_cards.remove(new_card)
    for card in community_cards:
        new_card = Card.new(card[1] + card[0].lower())
        board.append(new_card)
        remaining_cards.remove(new_card)

    rounds = 0
    wins = 0
    draws = 0

    if (len(community_cards) == 5):  # (45 choose 2) = 990 iterations
        score = evaluator.evaluate(board, hand)
        for i in xrange(0, len(remaining_cards)):
            for j in xrange(i + 1, len(remaining_cards)):
                rounds += 1
                opp_hand = [remaining_cards[i], remaining_cards[j]]
                opp_score = evaluator.evaluate(board, opp_hand)
                if (opp_score > score):
                    wins += 1
                # elif(evaluator.evaluate(board, opp_hand) < score):
                #     loses += 1
                elif (opp_score == score):
                    draws += 1
        print("Rounds played: " + str(rounds) + " Wins: " + str(wins) +
              " Draws: " + str(draws))
        return (float(wins) / rounds) * 100.0
    elif (len(community_cards) == 4
          ):  # (46 choose 3) * (3 choose 1) = 45540 iterations
        for i in range(0, len(remaining_cards)):
            temp_board = board + [remaining_cards[i]]
            for j in xrange(0, len(remaining_cards)):
                if (i == j):
                    continue
                else:
                    for k in xrange(j + 1, len(remaining_cards)):
                        if ((i == k) or (j == k)):
                            continue
                        else:
                            rounds += 1
                            opp_hand = [remaining_cards[j], remaining_cards[k]]
                            opp_score = evaluator.evaluate(
                                temp_board, opp_hand)
                            score = evaluator.evaluate(temp_board, hand)
                            if (opp_score > score):
                                wins += 1
                            # elif(evaluator.evaluate(board, opp_hand) < score):
                            #     loses += 1
                            elif (opp_score < score):
                                draws += 1
        print("Rounds played: " + str(rounds) + " Wins: " + str(wins) +
              " Draws: " + str(draws))
        return (float(wins) / rounds) * 100.0
    elif (len(community_cards) == 3
          ):  # (47 choose 4) * (4 choose 2) = 1070190 iterations
        for h in xrange(0, len(remaining_cards)):
            temp_board = board + [remaining_cards[h]]
            for i in xrange(h + 1, len(remaining_cards)):
                temp_board_2 = temp_board + [remaining_cards[i]]
                for j in xrange(0, len(remaining_cards)):
                    if ((i == j) or (h == j)):
                        continue
                    else:
                        for k in xrange(j + 1, len(remaining_cards)):
                            if ((i == k) or (h == k)):
                                continue
                            else:
                                rounds += 1
                                # print(rounds)
                                opp_hand = [
                                    remaining_cards[j], remaining_cards[k]
                                ]
                                opp_score = evaluator.evaluate(
                                    temp_board_2, opp_hand)
                                score = evaluator.evaluate(temp_board_2, hand)
                                if (opp_score > score):
                                    wins += 1
                                # elif(evaluator.evaluate(board, opp_hand) < score):
                                #     loses += 1
                                elif (opp_score < score):
                                    draws += 1
        print("Rounds played: " + str(rounds) + " Wins: " + str(wins) +
              " Draws: " + str(draws))
        return (float(wins) / rounds) * 100.0
    else:
        print("ERROR")
Esempio n. 5
0
# https://github.com/worldveil/deuces
# e.g. hole_cards = ['SA', 'C2'], community_cards = ['D9', 'H3', 'C5', 'S6', 'D4']
from Group02_card import Card
import Group02_evaluator
evaluator = Group02_evaluator.Evaluator()

all_cards = []
all_cards.append(Card.new('Ad'))
for i in xrange(8):
    all_cards.append(Card.new(str(i + 2) + 'd'))
all_cards.append(Card.new('Td'))
all_cards.append(Card.new('Jd'))
all_cards.append(Card.new('Qd'))
all_cards.append(Card.new('Kd'))

all_cards.append(Card.new('Ac'))
for i in xrange(8):
    all_cards.append(Card.new(str(i + 2) + 'c'))
all_cards.append(Card.new('Tc'))
all_cards.append(Card.new('Jc'))
all_cards.append(Card.new('Qc'))
all_cards.append(Card.new('Kc'))

all_cards.append(Card.new('Ah'))
for i in xrange(8):
    all_cards.append(Card.new(str(i + 2) + 'h'))
all_cards.append(Card.new('Th'))
all_cards.append(Card.new('Jh'))
all_cards.append(Card.new('Qh'))
all_cards.append(Card.new('Kh'))