mirror of
https://github.com/metafy-social/python-scripts.git
synced 2024-11-27 14:01:12 +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