diff --git a/freegames/Blackjack.py b/freegames/Blackjack.py new file mode 100644 index 00000000..97cf79fa --- /dev/null +++ b/freegames/Blackjack.py @@ -0,0 +1,85 @@ +# Blackjack is a classic casino game of luck and strategy + +# Face cards each count as 10, Aces count as 1 or 11, all others count at face value. An Ace with any 10, Jack, Queen, or King is a “Blackjack.” +# If you have a Blackjack, the dealer pays you one-and-a-half times your bet — unless the dealer also has a Blackjack, in which case it's a “push” and neither wins. + +### In this code, learn to make this fun game and try not to get addicted. + + +import random + + +def deal_card(): + """Returns a random card from the deck.""" + cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10] + card = random.choice(cards) + return card + + +def calculate_score(cards): + """Take a list of cards and return the score calculated from the 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 "Draw 🙃" + elif computer_score == 0: + return "Lose, opponent has Blackjack 😱" + elif user_score == 0: + return "Win with a Blackjack 😎" + elif user_score > 21: + return "You went over. You lose 😭" + elif computer_score > 21: + return "Opponent went over. You win 😁" + elif user_score > computer_score: + return "You win 😃" + else: + return "You lose 😤" + +def play_game(): + + + 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}, current score: {user_score}") + print(f" Computer's first card: {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 + + 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}, final score: {user_score}") + print(f" Computer's final hand: {computer_cards}, final score: {computer_score}") + print(compare(user_score, computer_score)) + +while input("Do you want to play a game of Blackjack? Type 'y' or 'n': ") == "y": + play_game()