Beispiel #1
0
 def __init__(self, np_random):
     ''' Initialize a Kuhn Poker dealer class
     '''
     self.np_random = np_random
     self.deck = [Card('H', 'J'), Card('H', 'Q'), Card('H', 'K')]
     self.shuffle()
     self.pot = 0
Beispiel #2
0
 def test_take_out_cards(self):
     cards = init_54_deck()
     remove_cards = [Card('S', 'A'), Card('BJ', '')]
     res = take_out_cards(cards, remove_cards)
     flag = False
     for card in res:
         if card.get_index() == 'SA' or card.get_index == 'BJ':
             flag = True
     self.assertFalse(flag)
     self.assertEqual(len(cards), len(init_54_deck()) - 2)
    def test_judge_game(self):
        np_random = np.random.RandomState()
        players = [Player(0, np_random), Player(1, np_random)]
        players[0].in_chips = 10
        players[1].in_chips = 10

        # Test hand is equal
        players[0].hand = Card('S', 'J')
        players[1].hand = Card('H', 'J')
        public_card = Card('S', 'Q')
        payoffs = Judger.judge_game(players, public_card)
        self.assertEqual(payoffs[0], 0)
        self.assertEqual(payoffs[1], 0)

        # Test one player get a pair
        players[0].hand = Card('S', 'J')
        players[1].hand = Card('S', 'Q')
        public_card = Card('H', 'J')
        payoffs = Judger.judge_game(players, public_card)
        self.assertEqual(payoffs[0], 10.0)
        self.assertEqual(payoffs[1], -10.0)

        # Other cases
        # Test one player get a pair
        players[0].hand = Card('S', 'J')
        players[1].hand = Card('S', 'Q')
        public_card = Card('H', 'K')
        payoffs = Judger.judge_game(players, public_card)
        self.assertEqual(payoffs[0], -10.0)
        self.assertEqual(payoffs[1], 10.0)
Beispiel #4
0
def init_54_deck():
    ''' Initialize a standard deck of 52 cards, BJ and RJ

    Returns:
        (list): Alist of Card object
    '''
    suit_list = ['S', 'H', 'D', 'C']
    rank_list = ['A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K']
    res = [Card(suit, rank) for suit in suit_list for rank in rank_list]
    res.append(Card('BJ', ''))
    res.append(Card('RJ', ''))
    return res
Beispiel #5
0
def init_54_deck():
    """Initialize a standard deck of 52 cards, BJ and RJ

    Returns:
        (list): Alist of Card object
    """
    suit_list = ["S", "H", "D", "C"]
    rank_list = [
        "A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K"
    ]
    res = [Card(suit, rank) for suit in suit_list for rank in rank_list]
    res.append(Card("BJ", ""))
    res.append(Card("RJ", ""))
    return res
Beispiel #6
0
def init_euchre_deck():
    ''' Initialize a standard deck of 52 cards
    Returns:
        (list): A list of Card object
    '''
    suit_list = ['S', 'H', 'D', 'C']
    rank_list = ['A', '9', 'T', 'J', 'Q', 'K']
    res = [Card(suit, rank) for suit in suit_list for rank in rank_list]
    return res
Beispiel #7
0
 def _reduce_meld_kinds_by_rank_id(self, card: Card):
     rank_id = utils.get_rank_id(card)
     meld_kinds = self.meld_kinds_by_rank_id[rank_id]
     if len(meld_kinds) > 1:
         suits = ['S', 'H', 'D', 'C']
         self.meld_kinds_by_rank_id[rank_id] = [[
             Card(suit, card.rank) for suit in suits if suit != card.suit
         ]]
     else:
         self.meld_kinds_by_rank_id[rank_id] = []
Beispiel #8
0
    def init_simple_doudizhu_deck():
        ''' Initialize a deck of 24 cards for simple Doudizhu

        Returns:
            (list): A list of Card object
        '''
        suit_list = ['S', 'H', 'D', 'C']
        rank_list = ['8', '9', 'T', 'J', 'Q', 'K', 'A']
        res = [Card(suit, rank) for suit in suit_list for rank in rank_list]
        return res
Beispiel #9
0
def from_card_id(card_id: int) -> Card:
    ''' Make card from its card_id

    Args:
        card_id: int in range(0, 52)
     '''
    assert 0 <= card_id < 52
    rank_id = card_id % 13
    suit_id = card_id // 13
    rank = Card.valid_rank[rank_id]
    suit = Card.valid_suit[suit_id]
    return Card(rank=rank, suit=suit)
Beispiel #10
0
def card_from_card_id(card_id: int) -> Card:
    ''' Make card from its card_id

    Args:
        card_id: int in range(0, 52)
     '''
    if not (0 <= card_id < 52):
        raise GinRummyProgramError(
            "card_id is {}: should be 0 <= card_id < 52.".format(card_id))
    rank_id = card_id % 13
    suit_id = card_id // 13
    rank = Card.valid_rank[rank_id]
    suit = Card.valid_suit[suit_id]
    return Card(rank=rank, suit=suit)
Beispiel #11
0
 def _increase_meld_kinds_by_rank_id(self, card: Card):
     rank_id = utils.get_rank_id(card)
     meld_kinds = self.meld_kinds_by_rank_id[rank_id]
     if len(meld_kinds) == 0:
         card_rank = card.rank
         meld_kind = [card for card in self.hand if card.rank == card_rank]
         if len(meld_kind) >= 3:
             self.meld_kinds_by_rank_id[rank_id].append(meld_kind)
     else:  # must have all cards of given rank
         suits = ['S', 'H', 'D', 'C']
         max_kind_meld = [Card(suit, card.rank) for suit in suits]
         self.meld_kinds_by_rank_id[rank_id] = [max_kind_meld]
         for meld_card in max_kind_meld:
             self.meld_kinds_by_rank_id[rank_id].append(
                 [card for card in max_kind_meld if card != meld_card])
Beispiel #12
0
 def __init__(self):
     ''' Initialize a leducholdem dealer class
     '''
     self.deck = [
         Card('S', 'J'),
         Card('H', 'J'),
         Card('S', 'Q'),
         Card('H', 'Q'),
         Card('S', 'K'),
         Card('H', 'K')
     ]
     self.shuffle()
     self.pot = 0
Beispiel #13
0
 def test_is_in_cards(self):
     deck54 = init_54_deck()
     deck_standard = init_standard_deck()
     self.assertTrue(is_in_cards(deck54, deck_standard))
     self.assertTrue(is_in_cards(deck54, [Card('BJ', ''), Card('RJ', '')]))
     self.assertFalse(is_in_cards(deck54, [Card('BJ', ''), Card('BJ', '')]))
Beispiel #14
0
def from_text(text: str) -> Card:
    assert len(text) == 2
    return Card(rank=text[0], suit=text[1])
Beispiel #15
0
 def test_is_single(self):
     self.assertTrue(is_single([Card('S', 'A')]))
     self.assertFalse(is_single([Card('S', 'A'), Card('BJ', '')]))
Beispiel #16
0
 def test_is_pair(self):
     self.assertTrue(is_pair([Card('S', 'A'), Card('D', 'A')]))
     self.assertFalse(
         is_pair([Card('BJ', ''),
                  Card('S', 'A'),
                  Card('D', 'A')]))
Beispiel #17
0
 def test_is_in_cards(self):
     deck54 = init_54_deck()
     deck_standard = init_standard_deck()
     deck54_plus_BJ = init_54_deck()
     deck54_plus_BJ.append(Card('BJ', ''))
     self.assertTrue(is_in_cards(deck54, deck_standard))
     self.assertTrue(is_in_cards(deck54, [Card('BJ', ''), Card('RJ', '')]))
     self.assertFalse(is_in_cards(deck54, [Card('BJ', ''), Card('BJ', '')]))
     self.assertFalse(is_in_cards(deck54, [Card('BJ', ''), Card('BJ', ''), Card('D', '3')]))
     self.assertTrue(is_in_cards(deck54_plus_BJ, [Card('BJ', ''), Card('BJ', ''), Card('D', '3')]))
Beispiel #18
0
def card_from_text(text: str) -> Card:
    if len(text) != 2:
        raise GinRummyProgramError("len(text) is {}: should be 2.".format(
            len(text)))
    return Card(rank=text[0], suit=text[1])