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])
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()
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))
@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
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)
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])
# 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