Пример #1
0
    def test_can_create_standard_52_cards(self):
        cards = Card.create_standard_52_cards()
        self.assertEqual(len(cards), 52)

        self.assertEqual(cards[0], Card(rank="2", suit="Hearts"))

        self.assertEqual(cards[-1], Card(rank="Ace", suit="Diamonds"))
Пример #2
0
 def test_card_can_sort_itself_with_another_one(self):
     queen_of_spades = Card(rank="Queen", suit="Spades")
     king_of_spades = Card(rank="King", suit="Spades")
     evaluation = queen_of_spades < king_of_spades
     self.assertEqual(
         evaluation, True,
         "The sort algorithm is not sorting the lower card first")
Пример #3
0
    def test_figures_out_pair_is_best_rank(self):
        cards = [
            Card(rank="Ace", suit="Diamonds"),
            Card(rank="Ace", suit="Clubs")
        ]

        hand = Hand(cards=cards)

        self.assertEqual(
            hand.best_rank(),
            "Pair"
        )
Пример #4
0
    def test_figures_out_straight_is_best_rank(self):
        cards = [
            Card(rank="6", suit="Hearts"),
            Card(rank="7", suit="Diamonds"),
            Card(rank="8", suit="Spades"),
            Card(rank="9", suit="Clubs"),
            Card(rank="10", suit="Clubs")
        ]

        hand = Hand(cards=cards)

        self.assertEqual(
            hand.best_rank(),
            "Straight"
        )
Пример #5
0
    def test_figures_out_three_of_a_kind_is_best_rank(self):
        cards = [
            Card(rank="King", suit="Hearts"),
            Card(rank="King", suit="Diamonds"),
            Card(rank="King", suit="Clubs"),
            Card(rank="Ace", suit="Diamonds"),
            Card(rank="5", suit="Clubs")
        ]

        hand = Hand(cards = cards)

        self.assertEqual(
            hand.best_rank(),
            "three of a Kind"
        )
Пример #6
0
    def test_receives_and_stores_cards(self):
        ace_of_spades = Card(rank="Ace", suit="Spades")
        six_of_clubs = Card(rank="6", suit="Clubs")

        cards = [
            ace_of_spades,
            six_of_clubs
        ]

        hand = Hand(cards=cards)

        self.assertEqual(
            hand.cards
            [
              six_of_clubs,
              ace_of_spades
            ]
        )
Пример #7
0
 def test_has_suit(self):
     card = Card(rank="2", suit="Clubs")
     self.assertEqual(card.suit, "Clubs")
Пример #8
0
 def test_has_rank(self):
     card = Card(rank="Queen", suit="Hearts")
     self.assertEqual(card.rank, "Queen")
Пример #9
0
 def test_figures_out_if_two_cards_are_equal(self):
     self.assertEqual(Card(rank="2", suit="Hearts"),
                      Card(rank="2", suit="Hearts"))
Пример #10
0
 def test_card_only_allows_for_valid_suit(self):
     with self.assertRaises(ValueError):
         Card(rank="2", suit="Dots")
Пример #11
0
 def test_card_only_allows_for_valid_rank(self):
     with self.assertRaises(ValueError):
         Card(rank="Two", suit="Hearts")
Пример #12
0
 def test_has_technical_representation(self):
     card = Card("5", "Diamonds")
     self.assertEqual(repr(card), "Card('5', 'Diamonds')")
Пример #13
0
 def test_has_string_representation_with_rank_and_suit(self):
     card = Card("5", "Diamonds")
     self.assertEqual(str(card), "5 of Diamonds")
Пример #14
0
from Poker.Card import Card
from Poker.Deck import Deck

deck = Deck()
cards = Card.create_standard_52_cards()
deck.add_cards(cards)

#mala practica: doble punto de métodos.
#deck.cards.extend(cards)
print(cards)
Пример #15
0
class Baccarat:

    commission = 0.05
    cards = Card().decks_of_cards(deck=8, shuffle=True, Joker=False)
    stakeType = ['庄', '闲', '和', '对']
    drawedCards = []
    history_rounds = []
    current_round = 0
    current_xian_cards = []
    current_zhuang_cards = []
    current_suppliment_cards = {}
    current_result = 0

    def __init__(self):
        self.rounds = self.setRounds()

    def setRounds(self):
        return randrange(65, 71)

    def draw_a_card(self):
        card = self.cards[0]
        self.drawedCards.append(card)
        self.cards = self.cards[1:]
        return card

    def startRound(self):
        self.current_zhuang_cards = []
        self.current_xian_cards = []
        self.current_suppliment_cards = {}
        self.current_result = 0
        self.current_round += 1
        return self.current_round

    def draw(self):
        for i in range(4):
            if i % 2 == 0:
                self.current_zhuang_cards.append(self.draw_a_card())
            else:
                self.current_xian_cards.append(self.draw_a_card())
        return (self.current_zhuang_cards, self.current_xian_cards)

    def supplement(self, zhuang_cards=[], xian_cards=[]):
        zhuang = 0
        xian = 0
        if not zhuang_cards:
            zhuang_cards = self.current_zhuang_cards
        if not xian_cards:
            xian_cards = self.current_xian_cards
        for i in zhuang_cards:
            zhuang += self.change_card_to_number(i)
        for i in xian_cards:
            xian += self.change_card_to_number(i)
        if zhuang >= 10:
            zhuang -= 10
        if xian >= 10:
            xian -= 10
        # 天王
        if zhuang > 7 or xian > 7:
            return {}
        # 无天王
        else:
            # 玩家首2值为0,1,2,3,4,5,摸牌
            if xian < 6:
                # 玩家摸牌
                card = self.draw_a_card()
                self.current_xian_cards.append(card)
                xian += self.change_card_to_number(card)
                if xian >= 10:
                    xian -= 10
            # 庄家根据如下情况判断是否摸牌
            zhuangFlag = False
            if zhuang in [0, 1, 2]:
                zhuangFlag = True
            elif zhuang == 3:
                if xian == 8:
                    zhuangFlag = False
                else:
                    zhuangFlag = True
            elif zhuang == 4:
                if xian in [0, 1, 8, 9]:
                    zhuangFlag = False
                else:
                    zhuangFlag = True
            elif zhuang == 5:
                if xian in [0, 1, 2, 3, 8, 9]:
                    zhuangFlag = False
                else:
                    zhuangFlag = True
            elif zhuang == 6:
                if xian in [6, 7]:
                    zhuangFlag = True
            else:
                zhuangFlag = False
            if zhuangFlag:
                card = self.draw_a_card()
                self.current_zhuang_cards.append(card)
                zhuang += self.change_card_to_number(card)
                if zhuang >= 10:
                    zhuang -= 10

    def change_card_to_number(self, card):
        card = card[1:]
        if card == 'A':
            return 1
        elif card in ['10', "J", "Q", "K"]:
            return 0
        else:
            return int(card)

    def round_result(self, zhuang_cards=[], xian_cards=[]):
        zhuang = 0
        xian = 0
        if not zhuang_cards:
            zhuang_cards = self.current_zhuang_cards
        if not xian_cards:
            xian_cards = self.current_xian_cards
        for i in zhuang_cards:
            zhuang += self.change_card_to_number(i)
        for i in xian_cards:
            xian += self.change_card_to_number(i)
        if zhuang >= 10:
            zhuang = zhuang % 10
        if xian >= 10:
            xian = xian % 10
        self.current_zhuang_point = zhuang
        self.current_xian_point = xian
        if zhuang > xian:
            self.current_result = 1
        elif zhuang < xian:
            self.current_result = 2
        elif zhuang == xian:
            self.current_result = 3
        result = self.round_info()
        self.history_rounds.append(result)
        return self.current_result

    def round_info(self):
        return {
            "round_id": self.current_round,
            "zhuang": ' '.join(self.current_zhuang_cards),
            "xian": " ".join(self.current_xian_cards),
            "winner": self.stakeType[self.current_result - 1],
            "zhuang_point": self.current_zhuang_point,
            "xian_point": self.current_xian_point,
        }

    def win_or_not(self, stake=1):
        result = self.round_info()

        if stake == self.current_result:
            result['win'] = True
        else:
            result['win'] = False
        return result