mirror of
https://github.com/metafy-social/python-scripts.git
synced 2025-02-20 07:12:05 +00:00
added script for blackjack game
This commit is contained in:
parent
5d4309d62f
commit
24a52a1693
13
scripts/Blackjack/README.md
Normal file
13
scripts/Blackjack/README.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
RULES OF THE GAME:
|
||||||
|
|
||||||
|
1. The goal of the game is to add up your cards to the largest number without going over 21.
|
||||||
|
|
||||||
|
2. If the cards in your hand add up to more than 21, then it's called a bust. It means that you lose immediately.
|
||||||
|
|
||||||
|
3. All the cards from 2 to 10 count as their face value.
|
||||||
|
|
||||||
|
4. Jack, Queen and King each count as 10.
|
||||||
|
|
||||||
|
5. Ace is a special card. The Ace can either count as a one towards your total, or it can count as an 11.
|
||||||
|
|
||||||
|
6. Depending on whether, if you've gone over 21 or whether if you're under 21, you can decide which value you want your Ace to represent.
|
11
scripts/Blackjack/art.py
Normal file
11
scripts/Blackjack/art.py
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
logo = """
|
||||||
|
.------. _ _ _ _ _
|
||||||
|
|A_ _ |. | | | | | | (_) | |
|
||||||
|
|( \/ ).-----. | |__ | | __ _ ___| | ___ __ _ ___| | __
|
||||||
|
| \ /|K /\ | | '_ \| |/ _` |/ __| |/ / |/ _` |/ __| |/ /
|
||||||
|
| \/ | / \ | | |_) | | (_| | (__| <| | (_| | (__| <
|
||||||
|
`-----| \ / | |_.__/|_|\__,_|\___|_|\_\ |\__,_|\___|_|\_\\
|
||||||
|
| \/ K| _/ |
|
||||||
|
`------' |__/
|
||||||
|
"""
|
86
scripts/Blackjack/main.py
Normal file
86
scripts/Blackjack/main.py
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
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()
|
Loading…
Reference in New Issue
Block a user