Exemple #1
0
def main():
    # create a player
    P1 = Player('P1', 200)  # start w 200
    P1_bank = P1.bank
    deck = Deck()
    dealer = Player('dealer')
    value = Value()
    # show beginning bank
    # test count
    print(len(deck.show_deck()))
    print(c(deck.show_deck()))
    # win round
    P1.add_bet(20)
    P1_bank = P1.win()
    print(P1_bank)
    # check if a card in deck is discarded
    print('deck before drawing: %s' % (len(deck._deck)))
    print()
    print('you drew a %s' % (deck.deal_card()))
    print()
    print('deck after drawing: %s' % (len(deck._deck)))

    # checking hand
    P1.hand.append(deck.deal_card())
    P1.hand.append(deck.deal_card())
    print('current hand:')
    print(P1.show_hand())
    P1_hand_value = value.hand_value(P1.hand) + value.ace_present(P1.hand)
    print(P1_hand_value)
    while P1_hand_value < 21 and value.hand_value(P1.hand) != 0:
        P1.hand.append(deck.deal_card())
        print('you drew %s' % (P1.hand[-1]))
        print('hand value is now %s' % (P1_hand_value))
    if value.hand_value(P1.hand) == 0:
        print('You busted')
Exemple #2
0
def main():
    # name variables
    deck, value = Deck(), Value()
    shuffled_deck = deck.shuffle_deck()
    spacer = '--------------------------'

    print (spacer)
    print ("BLACKJACK!!!")
    print (spacer)
    bank = eval(input('how much do you want to play with: '))
    print (spacer)
    P1 = Player('P1', bank)
    dealer = Player('dealer')
    print ('You now have %s to bet' %(P1.bank))
    print (spacer)


    answer = ['Y', 'y', 'n', 'N'] # input bank
    keep_playing = True
    a = 'Y'
    # does user want to play again
    while keep_playing == True:
        if a not in answer: # did not select Y/N
            print ('that answer is not an option...')
            a = input('do you want to keep playing? (Y/N) ') # ask once more
            continue
        else:
            if a == 'N' or a == 'n':
                keep_playing = False
                break # cut to game
        # start game
        if P1.bank == 0:
            P1.bank = int(input('you ran out of money, enter more money: '))
        bet = int(input('enter your bet: '))
        print (P1.add_bet(bet))
        print ()
        # pass cards to dealer & player(s)
        P1.hand.append(deck.deal_card())
        dealer.hand.append(deck.deal_card())
        P1.hand.append(deck.deal_card())
        dealer.hand.append(deck.deal_card())
        # show your hand & dealer's last hand
        print ('your current hand:')
        print (spacer)
        print (P1.show_hand())
        print ('value of the hand is: %s' % (value.actual_value(P1.hand)))
        print (spacer)
        print ('dealer\'s hand: %s'% (dealer.hand[-1]))
        print (spacer)
        print ('card count: %s' % (c(deck.history)))
        bj = False
        if value.actual_value(P1.hand) != 21:
            choose = input('Do you want to hit or stand? (H/S): ')
        else:
            bj = True
        # plauer's turn
        while ((choose == 'H') and not bj) or ((choose == 'h') and not bj):
            P1.hand.append(deck.deal_card())
            print (spacer)
            print ('you drew a %s. Hand value: %s' % (P1.hand[-1], value.actual_value(P1.hand)))
            print (spacer)
            print ('Current Hand:')
            print (P1.show_hand())
            if value.actual_value(P1.hand) == 0:
                print ('You busted')
                break
            print ('card count: %s' % (c(deck.history)))
            choose = input('Do you want to hit or stand? (H/S): ')
        # Dealer's turn
        print ('Dealer\'s turn')
        print (spacer)

        print ('dealer\'s hand: ')
        print (dealer.show_hand())
        print ('dealer\'s current value is: %s' % (value.actual_value(dealer.hand) ))
        while value.actual_value(dealer.hand) < 17 and value.actual_value(P1.hand) != 0: # soft 17
            dealer.hand.append(deck.deal_card())
            print ('dealer drew a %s' % (dealer.hand[-1]))
            print (spacer)
            # did dealer break?
            if value.hand_value(dealer.hand) != 0:
                print ('dealer value: %s' % (value.actual_value(dealer.hand)))
            if value.hand_value(dealer.hand) == 0:
                print ('dealer busted')
                break
        # reveal winner and give earnings
        print ('Your hand value: %s || Dealer\'s hand value: %s' % (value.actual_value(P1.hand), value.actual_value(dealer.hand)))
        if value.actual_value(P1.hand) > value.actual_value(dealer.hand):
            P1.win() # add winnings to bank
            if value.hand_value(dealer.hand) == 0:
                print ('Dealer busted')
            print ('You win!')
            print ('you now have %s dollars total' %(P1.bank))
        elif value.hand_value(P1.hand) == value.hand_value(dealer.hand):
            print ('Tie.')
        else:
            P1.lose() # subtract bet from P1 bank
            print ('Dealer wins')
            print ('you now have %s dollars total' %(P1.bank))
        print ('end of the round')
        print ()
        # clear old hands
        dealer.new_hand()
        P1.new_hand()
        a = input('do you want to keep playing? (Y/N) ')
        bj = False
        if len(deck.history) < 26:
            deck._deck = deck.shuffle_deck()
Exemple #3
0
class SetupGame:
    def __init__(self):

        # game logic related
        self.pot = 0
        self.player = Player()
        self.dealer = Dealer()

        # interface related - add interface elements here
        self.root = Tk()
        self.root.title('Casino')
        self.root.iconbitmap(
            'C:/Users/SavSamuShaman/Desktop/blackjack/pkc2.ico')
        # labels
        self.header_label = Label(
            self.root,
            text="You walk to the table and the dealer ask for your name")
        self.message_label = Label(
            self.root, text='Best of luck a the blackjack table ;)')
        self.error_message_label = Label(self.root)
        self.player_money_label = Label(
            self.root, text=f'Your money : {self.player.chips}')
        self.dealer_money_label = Label(
            self.root, text=f'Dealer money : {self.dealer.chips}')
        self.pot_label = Label(self.root, text=f'Pot : 0')
        self.current_score_label = Label(self.root, text=f'Current score : 0')
        # buttons
        self.hit_me_button = Button(self.root,
                                    text='Hit me',
                                    command=self.hit_me)
        self.stay_button = Button(self.root, text='Stay', command=self.stay)
        self.bet_button = Button(self.root, text='Bet', command=self.bet)
        self.start_button = Button(self.root,
                                   text='Tell the dealer your name',
                                   command=self.set_up_environ)
        # input box
        self.entry = Entry(self.root, width=30)

        # element placement
        self.header_label.grid(row=0, column=1)
        self.entry.grid(row=1, column=1, columnspan=3)
        self.start_button.grid(row=2, column=1, padx=15, pady=20)

        self.root.mainloop()

    def set_up_environ(self):

        name_input = self.entry.get()
        if name_input:
            self.player.name = name_input
        self.entry.delete(0, END)

        self.entry.grid_forget()
        self.start_button.grid_forget()

        # reusing existing elements
        self.header_label[
            'text'] = 'The Red Sparrow welcomes you, {name}'.format(
                name=self.player.name)
        self.start_button['text'] = 'Begin'
        self.start_button['command'] = self.new_round

        self.start_button.grid(row=4, column=1)
        self.message_label.grid(row=2, column=1)
        self.player_money_label.grid(row=3, column=2)
        self.dealer_money_label.grid(row=3, column=0)
        self.pot_label.grid(row=3, column=1)
        return

    def bet(self):
        """Clears variables and starts a new round on valid bet"""
        try:
            amount = int(self.entry.get())
            if amount > self.player.chips:
                self.error_message_label['text'] = 'Not enough money'
                self.error_message_label.grid(row=6, column=1)
                return

            self.clear_game()
            self.pot += self.player.bet(amount) + self.dealer.bet(amount)

            self.entry.grid_forget()
            self.bet_button.grid_forget()
            self.error_message_label.grid_forget()
            self.entry.delete(0, END)

            self.current_score_label['text'] = 'Current score : 0'
            self.message_label[
                'text'] = 'Best of luck a the blackjack table ;)'
            self.pot_label['text'] = 'Pot :{pot}'.format(pot=self.pot)
            self.update_money_labels()

            self.current_score_label.grid(row=4, column=1)
            self.stay_button.grid(row=4, column=0)
            self.hit_me_button.grid(row=4, column=2)

        except ValueError:
            self.error_message_label['text'] = 'Invalid bet'
            self.error_message_label.grid(row=6, column=1)

        return

    def hit_me(self):
        # hit me --> deal me a card in blackjack
        card = self.dealer.deal_card()
        self.player.add_to_score(card)
        player_score = self.player.current_score

        if player_score < 21:
            pass
        elif player_score == 21:
            self.player.win(self.pot)
            self.message_label['text'] = f'{self.player.name} has Blackjack !'
            self.conclude_round()
        else:
            self.dealer.win(self.pot)
            self.message_label['text'] = f'{self.player.name} busted out'
            self.conclude_round()

        self.current_score_label['text'] = 'Current score : {score}'.format(
            score=player_score)
        return

    def stay(self):
        player_score = self.player.current_score
        player_points = abs(21 - player_score)
        dealer_points = abs(21 - conclude_game(self.dealer))

        if dealer_points < player_points:
            self.dealer.win(self.pot)
            self.message_label[
                'text'] = f'The dealer was closer to 21. You lose'
        elif dealer_points == player_points:
            self.dealer.win(self.pot / 2)
            self.player.win(self.pot / 2)
            self.message_label['text'] = "It's a tie"
        else:
            self.player.win(self.pot)
            self.message_label['text'] = f"You win ${self.pot}"

        self.current_score_label[
            'text'] = f'Your score : {player_score} \nDealer score {self.dealer.current_score}'

        self.conclude_round()
        return

    def new_round(self):
        self.start_button.grid_forget()

        self.entry.grid(row=5, column=1)
        self.bet_button.grid(row=5, column=2)
        return

    def conclude_round(self):
        self.update_money_labels()
        self.hit_me_button.grid_forget()
        self.stay_button.grid_forget()
        self.new_round()
        return

    def clear_game(self):
        self.dealer.clear_score()
        self.player.clear_score()
        self.pot = 0
        return

    def update_money_labels(self):
        self.dealer_money_label['text'] = f'Dealer money : {self.dealer.chips}'
        self.player_money_label['text'] = f'Player money : {self.player.chips}'
        return