예제 #1
0
    def test_deal(self):
        dealer = Dealer(number_of_decks=4)
        player = Player(base_bet=10, starting_amount=0)

        deck_copy = dealer.shoe.cards.copy()
        dealer.deal(dealer.hand, 2)
        dealer.deal(player.hands[0], 2)
        self.assertEqual(len(dealer.shoe.cards), 4 * 52 - 4)
        self.assertEqual(dealer.hand.cards, deck_copy[0:2])
        self.assertEqual(player.hands[0].cards, deck_copy[2:4])
예제 #2
0
class Blackjack:
    def __init__(self):
        self.dealer = Dealer()
        self.player = Player(500)
        self.deck = Deck()
        self.table = Table()

    def get_hand_value(self, player):
        running_total = 0
        for card in player.get_hand():
            number = card.get_number()
            if number == 'A' and running_total + 11 > 21:
                number = 1
            running_total += Card.values_dict[number]
        return running_total

    def decide_winner(self):
        print('Player hand count:', self.get_hand_value(self.player))
        print('Dealer hand count:', self.get_hand_value(self.dealer))
        if (self.get_hand_value(self.player) > 21
                and self.get_hand_value(self.dealer) > 21 or
            (self.get_hand_value(self.dealer) <= 21 and
             (self.get_hand_value(self.dealer) > self.get_hand_value(
                 self.player) or self.get_hand_value(self.player) > 21))):
            self.dealer.collect(self.player)
            print('Dealer wins!')
        elif self.get_hand_value(self.player) == self.get_hand_value(
                self.dealer):
            self.player.set_amount_cash(self.player.get_amount_cash() +
                                        self.player.get_pot())
            self.player.set_pot = 0
            print('Player and Dealer tied!')
        else:
            self.dealer.pay_out(self.player)
            print('Player wins!')
        print('Player amount cash:', self.player.get_amount_cash())

    def turn(self):
        self.player.bet(25)

        self.deck.shuffle()
        for i in range(2):
            self.dealer.deal(self.player, self.deck)
            self.dealer.deal(self.dealer, self.deck)

        while self.get_hand_value(self.dealer) < 17:
            self.dealer.deal(self.dealer, self.deck)

        player_input = ''
        while self.get_hand_value(self.player) < 21:
            player_input = input('Running total: ' +
                                 str(self.get_hand_value(self.player)) +
                                 '\nHit or stand? ')
            if player_input == 'stand':
                break
            self.dealer.deal(self.player, self.deck)

        self.decide_winner()
예제 #3
0
파일: Main.py 프로젝트: JamJomJim/Blackjack
def main():
    start = time.time()
    model = Model(starting_amount=0, rounds_to_be_played=10000, min_bet=10)
    rules = Rules(
        blackjack_payout=1.5,
        dealer_hit_soft_17=False,
        surrender=True,
        insurance=True,
        number_of_decks=4,
        penetration=0.75,
    )

    dealer = Dealer(number_of_decks=rules.number_of_decks)
    player = Player(starting_amount=model.starting_amount,
                    base_bet=model.min_bet)

    current_round = 0
    while current_round < model.rounds_to_be_played:
        player.place_bet(
            amount=player.determine_bet(dealer.shoe.get_true_count()),
            hand=player.hands[0],
            model=model,
        )

        dealer.deal(hand=player.hands[0], number_cards=2)
        dealer.deal(hand=dealer.hand, number_cards=2)

        handle_game_logic(model, rules, dealer, player)

        player.clear_hand()
        dealer.clear_hand()

        check_needs_new_shoe(rules, dealer)

        current_round += 1

    print_stats(player, model, time_played=round(time.time() - start, 4))
예제 #4
0
    @property
    def play_status(self):
        return self._play_status

    @play_status.setter
    def play_status(self, new_play_status):
        self._play_status = new_play_status

if __name__ == '__main__':

    HL = CountingPlayer('Hi-Lo')
    HO = CountingPlayer('KO')

    dealer = Dealer()
    dealer.deal()

    # dealer.hand.append(['CLV', 'K'])
    # dealer.hand.append(['DMD', '4'])
    # dealer.hand_num = 2
    #
    # HL.hand.append(['SPD', 'K'])
    # HL.hand.append(['DMD', '2'])
    # HL.hand_num =2
    # HL.hand_sum = 12
    #
    # HO.hand.append(['CLV', '2'])
    # HO.hand.append(['SPD', '10'])
    # HO.hand_num=2
    # HO.hand_sum=12
예제 #5
0
from random import randint, random
from math import floor
from Card import Card
from Deck import Deck
from Shuffler import Shuffler
from Dealer import Dealer
from Player import Player
import sys

decks = [Deck(), Deck(), Deck()]
players = [Player(100)]
Cdeck = Shuffler(decks)

dave = Dealer(players, Cdeck)

dave.deal()

#print(Cdeck)
예제 #6
0
class Game(object):

    def __init__(self):
        return

    def generate_deck(self):
        self.deck = Deck()

    def initiate_players(self, intHumans=2, intAI=0):
        self.players = [Player(str(x)) for x in range(intHumans)]

    def initiate_dealer(self):
        self.dealer = Dealer()
        self.dealer.shuffle(self.deck)

    def initiate_table(self):
        self.table = Table2()

    def add_player(self, player):
        '''Accepts the player object'''
        self.players.append(player)

    def deal_cards(self, numberOfCards=0):
        for x in range(len(self.players)):
            self.dealer.deal(self.deck, self.players[x], numberOfCards)
    def debug(self):
        self.dealer.deal(self.deck, self.players[1], 12)
        self.dealer.deal(self.deck, self.players[0], 12)
        print(self.players[1].hand[1])
        self.players[1].look_at_hand()
        print('    Create table object')
        t = Table2()


        for x in range(0, len(self.players[1].hand)):
            print('    ' + `x` + " of " + `len(self.players[1].hand)`)
            print(`self.players[1].hand[x].value` + " of " + self.players[1].hand[x].suit +
                    " owned by " + `self.players[1].hand[x].owner`)
        print('    Groups printout')
        print(t.groups)
        print('    Group printout')
        print(t.groups[0])
        print('\n\n\n    Add New Group')
        t.new_group()
        print('    Groups printout')
        print(t.groups)
        print('    Group printout')
        print(t.groups[1])
        print('\n\n\n    Add card from hand to group[0]')
        t.add_card_to_group(self.players[1].give_card(1), 0)
        print('    Groups printout')
        print(t.groups)
        print('    Group printout')
        print(t.groups[1])
        print('\n\n\n    Add Three cards to group[1]')
        t.add_card_to_group(self.players[1].give_card(3), 1)
        t.add_card_to_group(self.players[1].give_card(2), 1)
        t.add_card_to_group(self.players[1].give_card(0), 1)
        print('    Groups printout')
        print(t.groups)
        print('    Group printout')
        print(t.groups[1])
예제 #7
0
# Create players
user = User(name, 100)
dealer = Dealer()
i = 0

while user.bank > 0:
    i += 1
    raw_input()
    print "\n\n=== Game %d ===" % i

    # Place bets
    bet = int(raw_input("%s (£%d), place your bet: " % (user.name, user.bank)))
    user.place_bet(bet)

    # Deal cards and check for blackjacks
    dealer.deal(user)
    if dealer.has_blackjack():
        dealer.print_hand()
        print "Dealer wins with a blackjack."
        continue

    if user.has_blackjack():
        user.print_hand()
        print "Blackjack!"
        user.payout(int(bet * 2.5))
        continue

    stand = False
    busted = False

    # Action round