示例#1
0
def test_river():
    game = Game(players=5)
    game.deal()
    game.flop()
    game.turn()
    game.river()
    assert len(game.board) == 5
    assert len(game.deck.cards) == 37
示例#2
0
def test_turn():
    game = Game(players=2)
    game.deal()
    game.flop()
    game.turn()
    assert len(game.board) == 4
    assert len(game.deck.cards) == 44
示例#3
0
def test_big_blinds_and_button_and_pot():
    game = Game(players=4, button_position=2)
    game.deal()
    game.post_blinds()

    assert game.pot == 1.5
    assert game.players[0].stack == 99
    assert game.players[1].stack == 100
    assert game.players[2].stack == 100
    assert game.players[3].stack == 99.5
示例#4
0
def test_player_hand_has_right_number_cards():
    game = Game(players=3)

    game.deal()
    hand = game.get_player_hand(player=2)
    assert len(hand) == 2

    game.flop()
    hand = game.get_player_hand(player=2)
    assert len(hand) == 5

    game.turn()
    hand = game.get_player_hand(player=2)
    assert len(hand) == 6

    game.river()
    hand = game.get_player_hand(player=2)
    assert len(hand) == 7
示例#5
0
def test_flop():
    game = Game(players=2)
    game.deal()
    game.flop()
    assert len(game.board) == 3
示例#6
0
def test_game_has_deck():
    game = Game(players=2)
    deck = game.deck
    assert len(deck.cards)
示例#7
0
def test_game_can_deal_cards():
    game = Game(players=2)
    game.deal()
    assert len(game.deck) == 48
    assert len(game.players[0].hole_cards) == 2
    assert len(game.players[1].hole_cards) == 2
示例#8
0
def test_player():
    game = Game(players=2)
    second_player = game.players[1]
    assert second_player.stack == 100
示例#9
0
def test_game():
    game = Game(players=2)
    assert len(game.players)
示例#10
0

class RandomModel(Agent):
    def choose(self, state):
        valid_moves = self.get_moves()

        # player i [手牌] // [出牌]
        hand_card = []
        for i, n in enumerate(Card.all_card_name):
            hand_card.extend([n]*self.get_hand_card()[i])
        print("Player {}".format(self.player_id), ' ', hand_card, end=' // ')

        i = np.random.choice(len(valid_moves))
        move = valid_moves[i]
        print(Card.visual_card(move))
        print(move)
        return move, None


if __name__=="__main__":
    game = Game([RandomModel(i) for i in range(3)])

    for i_episode in range(1):
        game.game_reset()
        game.show()
        for i in range(100):
            pid, state, cur_moves, cur_move, winner, info = game.step()
            #game.show()
            if winner != -1:
                print('Winner:{}'.format(winner))
                break
示例#11
0
    def choose(self, state):
        valid_moves = self.get_moves()

        # player i [手牌] // [出牌]
        hand_card = []
        for i, n in enumerate(Card.all_card_name):
            hand_card.extend([n] * self.get_hand_card()[i])
        print("Player {}".format(self.player_id), ' ', hand_card, end=' // ')

        i = np.random.choice(len(valid_moves))
        move = valid_moves[i]
        print(Card.visual_card(move))

        return move, None


if __name__ == "__main__":
    #   game = Game([RandomModel(i) for i in range(3)])
    game = Game([MctsModel(0), RandomModel(1), RandomModel(2)])
    # win_count = [0, 0, 0]
    for i_episode in range(1):
        game.game_reset()
        # game.show()
        for i in range(100):
            pid, state, cur_moves, cur_move, winner, info = game.step()
            #game.show()
            if winner != -1:
                print(str(i_episode) + ': ' + 'Winner:{}'.format(winner))
                #  win_count[winner] += 1
                break
    #  print(win_count)
    def choose(self, state):
        valid_moves = self.get_moves()
        hand_card = []
        for i, n in enumerate(Card.all_card_name):
            hand_card.extend([n] * self.get_hand_card()[i])
        i = np.random.choice(len(valid_moves))
        move = valid_moves[i]
        # player i [手牌] // [出牌]
        print("Player {}".format(self.player_id), ' ', hand_card, end=' // ')
        print(Card.visual_card(move))
        return move, None


if __name__ == "__main__":
    cnt = 0
    game = Game([MixModel(0), RuleBasedModel(1), RuleBasedModel(2)])
    for i_episode in range(1000):
        game.game_reset()
        game.show()
        game.players[0].set_new_game()
        for i in range(100):
            pid, state, cur_moves, cur_move, winner, info = game.step()
            # game.show()
            if winner != -1:
                print('Winner:{}'.format(winner))
                if winner == 0:
                    cnt += 1
                break
        print("Winning Rate = ", cnt, "/", i_episode + 1,
              " = {:.2f}%\n".format(100 * cnt / (i_episode + 1)))