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"))
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")
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" )
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" )
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" )
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 ] )
def test_has_suit(self): card = Card(rank="2", suit="Clubs") self.assertEqual(card.suit, "Clubs")
def test_has_rank(self): card = Card(rank="Queen", suit="Hearts") self.assertEqual(card.rank, "Queen")
def test_figures_out_if_two_cards_are_equal(self): self.assertEqual(Card(rank="2", suit="Hearts"), Card(rank="2", suit="Hearts"))
def test_card_only_allows_for_valid_suit(self): with self.assertRaises(ValueError): Card(rank="2", suit="Dots")
def test_card_only_allows_for_valid_rank(self): with self.assertRaises(ValueError): Card(rank="Two", suit="Hearts")
def test_has_technical_representation(self): card = Card("5", "Diamonds") self.assertEqual(repr(card), "Card('5', 'Diamonds')")
def test_has_string_representation_with_rank_and_suit(self): card = Card("5", "Diamonds") self.assertEqual(str(card), "5 of Diamonds")
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)
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