mirror of
https://github.com/metafy-social/python-scripts.git
synced 2024-11-27 22:11:10 +00:00
87 lines
2.4 KiB
Python
87 lines
2.4 KiB
Python
import random
|
|
from art import logo
|
|
|
|
|
|
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():
|
|
|
|
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}, 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()
|