Untitled

 avatar
unknown
python
3 years ago
2.4 kB
5
Indexable
import random
from blackjack_logo import logo

def deal_card():
    cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
    return random.choice(cards)

def calculate_score(cards):

    if sum(cards) == 21 and len(cards) == 2:
        return 0

    if 11 in cards and sum(cards) > 21:
        cards.remove(11)
        cards.append(1)

    return sum(cards)

def compare(user_score, computer_score):

    if user_score > 21 and computer_score > 21:
        return "You went over, you lose!"

    if user_score == computer_score:
        return "It's a draw!"
    elif computer_score == 0:
        print("You lose! You oponent has Blackjack.")
    elif user_score == 0:
        print("You win with a Blackjack!")
    elif user_score > 21:
        print("You lose, you went over!")
    elif computer_score > 21:
        print("You win! Your oponent went over.")
    elif user_score > computer_score:
        print("You win!")
    else:
        print("You lose :(")



def play_game():

    print(logo)

    user_cards = []
    computer_cards = []
    is_game_over = False


    for _ in range(2):
        user_cards.append(deal_card())
        computer_cards.append(deal_card())


    while not is_game_over:

        user_score = calculate_score(user_cards)
        computer_score = calculate_score(computer_cards)

        print(f"    Your cards: {user_cards}, your score is: {user_score}")
        print(f"    Computer's first card is {computer_cards[0]}")

        if user_score == 0 or computer_score == 0 or user_score > 21:
            is_game_over = True
        else:
            user_should_deal = input("Type 'y' to get another card, type 'n' to pass: ")
            if user_should_deal == 'y':
                user_cards.append(deal_card())
            else:
                is_game_over = True

    user_score = calculate_score(user_cards)
    computer_score = calculate_score(computer_cards)

    while computer_score != 0 and computer_score < 17:
        computer_cards.append(deal_card())
        computer_score = calculate_score(computer_cards)

    print(f"    Your final hand: {user_cards}, your final score: {user_score}\t")
    print(f"    Computer's final hand: {computer_cards}, computer's final score: {computer_score}\t")

    print(compare(user_score, computer_score))

while input("Do you want to play a game of Blackjack? Type 'y' or 'n': ") == 'y':
    play_game()

Editor is loading...