From f13af89d4b89c3ff8e55bf861fc26e4c30f10581 Mon Sep 17 00:00:00 2001
From: MatthewMilez <matthew.miles@ufl.edu>
Date: Thu, 3 Oct 2024 16:02:46 -0400
Subject: [PATCH] adding blackjack game

---
 Blackjack/blackjack.py | 76 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)
 create mode 100644 Blackjack/blackjack.py

diff --git a/Blackjack/blackjack.py b/Blackjack/blackjack.py
new file mode 100644
index 00000000..f3c06c78
--- /dev/null
+++ b/Blackjack/blackjack.py
@@ -0,0 +1,76 @@
+import random
+
+cards = {
+    'Ace': 11, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10,
+    'Jack': 10, 'Queen': 10, 'King': 10
+}
+
+def create_deck():
+    return list(cards.keys()) * 4
+
+def deal_card(deck):
+    return deck.pop(random.randint(0, len(deck) - 1))
+
+def calculate_hand(hand):
+    total = sum(cards[card] for card in hand)
+    aces = hand.count('Ace')
+    while total > 21 and aces:
+        total -= 10
+        aces -= 1
+    return total
+
+def play_blackjack():
+    ##init deck and hands -> dealer and player
+    deck = create_deck()
+    player_hand = []
+    dealer_hand = []
+    player_hand.append(deal_card(deck))
+    player_hand.append(deal_card(deck))
+    dealer_hand.append(deal_card(deck))
+    dealer_hand.append(deal_card(deck))
+
+    while True:
+        print(f"\nYour hand: {player_hand}, Total: {calculate_hand(player_hand)}")
+        print(f"Dealer's hand: [{dealer_hand[0]}, Hidden]")
+
+        #immediate win
+        if calculate_hand(player_hand) == 21:
+            print("Blackjack! You win!")
+            return
+
+        ##hit or stand
+        choice = input("Do you want to (H)it or (S)tand? ").lower()
+        if choice == 'h':
+            player_hand.append(deal_card(deck))
+            if calculate_hand(player_hand) > 21:
+                print(f"\nYour hand: {player_hand}, Total: {calculate_hand(player_hand)}")
+                print("Bust! You lose.")
+                return
+        elif choice == 's':
+            break
+
+    while calculate_hand(dealer_hand) < 17:
+        dealer_hand.append(deal_card(deck))
+
+    print(f"\nYour hand: {player_hand}, Total: {calculate_hand(player_hand)}")
+    print(f"Dealer's hand: {dealer_hand}, Total: {calculate_hand(dealer_hand)}")
+
+    player_total = calculate_hand(player_hand)
+    dealer_total = calculate_hand(dealer_hand)
+
+    #game state conditions
+    if dealer_total > 21:
+        print("Dealer busts! You win!")
+    elif player_total > dealer_total:
+        print("You win")
+    elif player_total < dealer_total:
+        print("Dealer wins")
+    else:
+        print("It's a tie")
+
+#Main game loop
+while True:
+    play_blackjack()
+    play_again = input("Do you want to play again? (Y/N) ").lower()
+    if play_again != 'y':
+        break