コード例 #1
0
    def test_calculate_hand_results(self):
        player = Player({'game_settings': PlayerTest.game_settings})

        hands = [
            build_hand('blackjack'),
            build_hand('hard'),
            build_hand('bust')
        ]

        player.hands = hands
        dealer_hand = build_hand('hard_pair')

        bankroll_start = player.bankroll

        player.calculate_hand_results(dealer_hand)

        self.assertEqual(player.hands[0].bet * PlayerTest.game_settings.blackjack_payout,
                         player.hands[0].winnings)
        self.assertEqual(PlayerTest.game_settings.min_bet, player.hands[1].winnings)
        self.assertEqual(0, player.hands[2].winnings)
        self.assertEqual(bankroll_start +
                         player.hands[0].bet * 2 +
                         player.hands[1].bet +
                         player.hands[1].bet * PlayerTest.game_settings.blackjack_payout,
                         player.bankroll)
コード例 #2
0
    def test_reset_hands(self):
        player = Player({'game_settings': PlayerTest.game_settings})
        self.assertEqual(0, len(player.hands))

        player.new_hand()
        player.reset_hands()
        self.assertEqual(0, len(player.hands))
コード例 #3
0
    def test_action_basic_strategy_low_bankroll_split_soft(self):
        player = Player({'bankroll': 0, 'game_settings': PlayerTest.game_settings})

        hand = build_hand('soft_pair')
        hand.bet = 1

        self.assertEqual(PlayerAction.HIT, player.action(hand, Card('5', 5, 'clubs')))
コード例 #4
0
    def test_budget_below_zero(self):
        budget = 500
        debt = 1000

        player = Player(_, budget)
        with self.assertRaises(RuntimeError):
            player.budget -= debt
コード例 #5
0
def test_player_standing():
    p = Player('Fooman')
    p.hand_list.append(Hand())

    p.stand(p.hand_list[0])

    assert_true(p.hand_list[0].final_hand)
コード例 #6
0
def create_stuff(): 
    o = Player('Barman')
    o.balance = 200
    o.hand_list.append(Hand())
    o.hand_list[o.current_hand].put_card(Card(2,'heart'))

    p = Player('Fooman')
    p.balance = 150
    p.hand_list.append(Hand())
    p.hand_list[p.current_hand].put_card(Card(1,'spade'))

#   Stats not yet implemented.
#   q = Game()

    r = Rules()

    return o, p, r
コード例 #7
0
    def test_budget(self):
        budget = 500
        prize = 100

        player = Player(_, budget)
        player.budget += prize

        self.assertEqual(player.budget, budget + prize)
コード例 #8
0
def main_game():
    players = [Player('Bob', 500), AiPlayer('Sam', 500)]
    dealer = AiPlayer('Dealer', 5000)
    game = Game(players, dealer)

    print('\nWelcome!\n')
    game.game_loop()
    print('\nThanks for playing!')
コード例 #9
0
ファイル: play.py プロジェクト: birobali/PythonLearning
    def __init__(self):
        self.deck = Deck()
        self.player = Player()
        self.dealer = Dealer()
        self.player.chips.take_bet()

        self.initialize_player()
        self.initialize_dealer()
        Play.show_some(self.player, self.dealer)
コード例 #10
0
    def test_make_bet(self, _print_mock, get_answer_mock):
        budget = 100
        bet = 20
        get_answer_mock.return_value = bet
        player = Player(_, budget)

        player.make_bet()

        get_answer_mock.assert_called()
        self.assertEqual(player.current_bet, bet)
コード例 #11
0
def test_player_init():
    p = Player('Fooman')

    # Players should init with 0 balance and an empty hand list.
    print p.balance

    assert_equal(p.balance, 0)
    assert_equal(p.hand_list, [])
    assert_equal(p.name, 'Fooman')
    assert_equal(p.current_hand, 0)
コード例 #12
0
    def test_hand_manipulation_methods(self):
        p = Player("Ivan")
        self.assertEqual(p.hand, None)

        hand = Hand()
        p.give_cards(hand)
        self.assertEqual(p.hand, hand)

        p.game_over()
        self.assertEqual(p.hand, None)
コード例 #13
0
    def test_new_hand(self):
        bankroll = 100
        player = Player({'bankroll': bankroll, 'game_settings': PlayerTest.game_settings})

        hand = player.new_hand(bet=PlayerTest.game_settings.min_bet)

        self.assertEqual(bankroll - PlayerTest.game_settings.min_bet, player.bankroll)
        self.assertEqual(1, len(player.hands))
        self.assertEqual(1, hand.number)
        self.assertEqual(PlayerTest.game_settings.min_bet, hand.bet)
コード例 #14
0
    def test_balance_operations_and_check(self):
        p = Player("Ivan", 500)

        p.give_money(42)
        self.assertEqual(p.balance, 542)

        p.make_stake(442)
        self.assertEqual(p.balance, 100)

        self.assertTrue(p.has_enough_money(100))
        self.assertFalse(p.has_enough_money(101))
コード例 #15
0
def test_player_betting():
    p = Player('Fooman')
    h = Hand()

    p.hand_list.append(h)

    p.bet(10)

    # balance should now be -10 and bet of the hand 10.

    assert_true(p.balance == -10 and h.bet == 10)
コード例 #16
0
    def test_deal_card(self):
        dealt_card = Card(1, SUIT_SPADES)
        card_in_deck = Card(13, SUIT_SPADES)

        with patch.object(Game, 'shuffle_deck', autospec=True):
            game = Game([dealt_card, card_in_deck])
        player = Player()

        game.deal(player)

        self.assertEqual([card_in_deck], game.card_pool)
        self.assertEqual([dealt_card], player.hand.cards)
コード例 #17
0
ファイル: test_player.py プロジェクト: ecstaticpeon/blackjack
    def test_add_card(self):
        player = Player()
        ace_of_spades = Card(1, SUIT_SPADES)
        two_of_spades = Card(2, SUIT_SPADES)

        player.add_card(ace_of_spades)
        self.assertEqual(
            [ace_of_spades],
            player.hand.cards,
        )

        player.add_card(two_of_spades)
        self.assertEqual(
            [ace_of_spades, two_of_spades],
            player.hand.cards,
        )
コード例 #18
0
    def test_game_loop_out_of_budget(self, _print_mock,
                                     single_game_mock):
        budget = 500
        player = Player('Bob', budget)
        players = [player]
        dealer = AiPlayer('Dealer', 5000)

        def single_game(self):
            for player in self.players:
                player.budget = 0
        single_game_mock.side_effect = single_game

        game = Game(players, dealer)
        game.game_loop()

        self.assertFalse(game.players)
コード例 #19
0
    def test_make_move(self, _print_mock, get_answer_mock):
        player = Player(_, _)

        hit = 'hit'
        stand = 'stand'

        get_answer_numbers = [0, 1]

        def get_answer_select(value_list):
            return value_list[get_answer_numbers.pop(0)]

        get_answer_mock.side_effect = get_answer_select

        moves = [player.make_move() for _ in range(2)]

        self.assertEqual(moves, [hit, stand])
コード例 #20
0
    def test___init___(self):
        player_settings = {
            'bankroll': 10000,
            'bet_limit': 1000,
            'dealer': True,
            'game_settings': PlayerTest.game_settings,
            'number': 10,
            'unknown': False
        }

        player = Player(player_settings.copy())

        self.assertEqual(player_settings['bankroll'], player.bankroll)
        self.assertEqual(player_settings['bet_limit'], player.bet_limit)
        self.assertEqual(player_settings['dealer'], player.dealer)
        self.assertEqual(player_settings['number'], player.number)
        self.assertEqual(player_settings['unknown'], player.extra_settings['unknown'])
コード例 #21
0
    def test_expose_cards(self):
        exposed = False
        first_values = [1, 2]
        second_values = [3, 4]
        hidden_cards = [
            Card(_, first_values, _, exposed),
            Card(_, second_values, _, exposed)
        ]
        exposed_cards = hidden_cards.copy()
        exposed_cards = [card.expose() for card in exposed_cards]

        player = Player(_, _)
        player.cards.extend(hidden_cards)

        player.expose_cards()

        self.assertEqual(player.cards, exposed_cards)
コード例 #22
0
def test_player_hitting():
    p = Player('Fooman')
    h = Hand()
    pack = Pack()
    #    length = len(pack)

    init_pack(pack)
    p.hand_list.append(h)

    p.hit(pack)

    assert_true(len(p.hand_list[0]) == 1 and len(pack) == 51)

    hit_20_cards(p, pack)

    # Should bust from hitting 20 cards.
    assert_true(busted(p.hand_list[0], Rules()))
コード例 #23
0
    def test_undetermined_cards(self):
        exposed = True
        values = [_]
        cards = [Card(_, values, _, exposed), Card(_, values, _, exposed)]
        undetermined_values = [1, 2]
        undetermined_cards = [
            Card(_, undetermined_values, _, exposed),
            Card(_, undetermined_values, _, exposed)
        ]

        player = Player(_, _)
        player.cards.extend(cards + undetermined_cards)

        for card in undetermined_cards:
            self.assertTrue(
                all(card == undetermined_card
                    for undetermined_card in player.undetermined_cards))
コード例 #24
0
    def test_game_loop_no_continue(self, _print_mock,
                                   get_answer_mock,
                                   single_game_mock):
        budget = 500
        player = Player('Bob', budget)
        players = [player]
        dealer = AiPlayer('Dealer', 5000)

        def single_game(self):
            for player in self.players:
                player.budget = 0
        single_game_mock.side_effect = single_game
        get_answer_mock.return_value = 'n'

        game = Game(players, dealer)
        game.game_loop()

        self.assertFalse(game.players)
コード例 #25
0
    def test_player_loses(self, _print_mock,
                         ai_player_make_move_mock, player_make_move_mock,
                         player_make_bet_mock, deal_start_cards_mock):

        player_cards = [
            Card('One', [1], '♣', exposed=True),
            Card('One', [1], '♦', exposed=True),
        ]
        dealer_cards = [
            Card('Ten', [10], '♣', exposed=True),
            Card('Ten', [10], '♦', exposed=False),
        ]

        def deal(self):
            for player in self.players:
                player.cards.extend(player_cards)
            self.dealer.cards.extend(dealer_cards)

        deal_start_cards_mock.side_effect = deal

        budget = 500
        player = Player('Bob', budget)
        players = [player]
        dealer = AiPlayer('Dealer', 5000)

        bet = 100

        def make_bet(self):
            self.current_bet = bet
        player_make_bet_mock.side_effect = make_bet

        stand = 'stand'
        player_make_move_mock.return_value = stand
        ai_player_make_move_mock.return_value = stand

        game = Game(players, dealer)
        game.single_game()

        self.assertEqual(player.budget, budget - bet)
コード例 #26
0
 def __load_players_from_file(self, player_file):
     """
     Load the players from file `player_file`
     """
     try:
         with open(player_file) as f:
             for line in f:
                 [nume, prenume, varsta, tara,
                  jetoane] = line.replace('\n', '').split('\t')
                 tmp = Player(nume, prenume, int(varsta), tara,
                              int(jetoane))
                 self.players.append(tmp)
     except FileNotFoundError as err:
         log_and_print("FATAL ERROR - File %s not found" % player_file,
                       log_f=logging.error)
         log_and_print(err, log_f=logging.error)
         exit(1)
     except TypeError as err:
         log.error("FATAL ERROR - File %s is not properly formatted" %
                   player_file)
         log.error(err)
         exit(1)
コード例 #27
0
    def test_determine_points(self, _print_mock, get_answer_mock):
        exposed = True
        first_values = [1, 2]
        second_values = [3, 4]
        cards = [
            Card(_, first_values, _, exposed),
            Card(_, second_values, _, exposed)
        ]

        def get_answer_select(value_list):
            return value_list[0]

        get_answer_mock.side_effect = get_answer_select

        player = Player(_, _)
        player.cards.extend(cards)

        player.determine_points()

        self.assertEqual(
            get_answer_mock.mock_calls,
            [call(first_values), call(second_values)])
コード例 #28
0
    def test_new_hand_low_bankroll(self):
        bankroll = PlayerTest.game_settings.min_bet - 1

        player = Player({'bankroll': bankroll, 'game_settings': PlayerTest.game_settings})
        self.assertIsNone(player.new_hand(bet=PlayerTest.game_settings.min_bet))
コード例 #29
0
Remember to you are free to use any resources you want and as always:
HAVE FUN!
'''

from blackjack.deck import Deck
from blackjack.card import Card  #dont know if needed (deck.py is importhing card and comenting in isn't causing an error)
from blackjack.player import Player
from blackjack.thegame import TheGame

#====================================================
#▒█▀█▀█░▐█░▐█░▐█▀▀     ░▐█▀▀▀──░▄█▀▄─▒▐██▄▒▄██▌░▐█▀▀
#░░▒█░░░▐████░▐█▀▀     ░▐█░▀█▌░▐█▄▄▐█░▒█░▒█░▒█░░▐█▀▀
#░▒▄█▄░░▐█░▐█░▐█▄▄     ░▐██▄█▌░▐█─░▐█▒▐█░░░░▒█▌░▐█▄▄
#====================================================
game = TheGame()
player1 = Player('Player1')  #player 1 is human
player2 = Player('Computer')  #player 2 is a computer

#Before we start, we need to create deck
mydeck = Deck()
mydeck.shuffle()

#THis will be repeated until player decide to stop playing
while True:
    if player1.balance <= 0:
        print('Player have not money anymore. Game is finished!')
        break
    #in case it is not first round we have to discard all cards from hand
    player1.discard_hand()
    player2.discard_hand()
コード例 #30
0
import os

from blackjack.deck import Deck
from blackjack.dealer import Dealer
from blackjack.player import Player
from blackjack.util import hand_total

dealer = Dealer()
player = Player()

while True:
    print('*** Starting a new game...')
    playing = True
    player.hand = []
    dealer.hand = []
    dealer.show_hand = False

    deck = Deck()
    deck.shuffle()

    player.place_bet()

    player.get_card(deck.deal())
    dealer.get_card(deck.deal())
    player.get_card(deck.deal())
    dealer.get_card(deck.deal())

    print(dealer)
    print(player)

    while playing: