forked from arsh939/Python-Projects
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathblackjack.py
96 lines (81 loc) · 4.41 KB
/
blackjack.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
############### Our Blackjack House Rules #####################
## The deck is unlimited in size.
## There are no jokers.
## The Jack/Queen/King all count as 10.
## The the Ace can count as 11 or 1.
## Use the following list as the deck of cards:
## cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
## The cards in the list have equal probability of being drawn.
## Cards are not removed from the deck as they are drawn.
## The computer is the dealer.
# Go to this website and try out the Blackjack game:
# https://games.washingtonpost.com/games/blackjack/
import random
def deal_card():
cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
card =random.choice(cards)
return card
def play_game():
# Deal the user and computer 2 cards each using deal_card() and append().
user_cards = []
computer_cards = []
is_game_over=False
for _ in range(2):
user_cards.append(deal_card())
computer_cards.append(deal_card())
# print(user_cards)
# print(computer_cards)
# Create a function called calculate_score() that takes a List of cards as input
#and returns the score.
#Look up the sum() function to help you do this.
def calculate_score(cards):
# Inside calculate_score() check for a blackjack (a hand with only 2 cards: ace + 10) and return 0 instead of the actual score. 0 will represent a blackjack in our game.
if sum(cards)==21 and len(cards)==2:
return 0
#Hint 8: Inside calculate_score() check for an 11 (ace). If the score is already over 21, remove the 11 and replace it with a 1. You might need to look up append() and remove().
if 11 in cards and sum(cards)>21:
cards.remove(11)
cards.append(1)
return sum(cards)
# Create a function called compare() and pass in the user_score and computer_score. If the computer and user both have the same score, then it's a draw. If the computer has a blackjack (0), then the user loses. If the user has a blackjack (0), then the user wins. If the user_score is over 21, then the user loses. If the computer_score is over 21, then the computer loses. If none of the above, then the player with the highest score wins.
def compare(user_score,computer_score):
if user_score==computer_score:
return 'Draw'
elif computer_score==0:
return 'Dealer Wins'
elif user_score==0:
return 'User Wins'
elif computer_score >21:
return 'User Wins'
elif user_score >21:
return 'Dealer Wins'
elif user_score>computer_score:
return 'User Wins'
else:
return 'Dealer Wins'
# The score will need to be rechecked with every new card drawn and the checks in Hint 9 need to be repeated until the game ends.
while not is_game_over:
# Call calculate_score(). If the computer or the user has a blackjack (0) or if the user's score is over 21, then the game ends.
user_score=calculate_score(user_cards)
computer_score=calculate_score(computer_cards)
print(f"User cards : {user_cards} User's 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
# If the game has not ended, ask the user if they want to draw another card. If yes, then use the deal_card() function to add another card to the user_cards List. If no, then the game has ended.
elif is_game_over==False:
answer=input("Do you want to Draw another card : y or n ")
if answer=='y':
user_cards.append(deal_card())
else:
is_game_over=True
# Once the user is done, it's time to let the computer play. The computer should keep drawing cards as long as it has a score less than 17.
while computer_score!=0 and computer_score<17:
computer_cards.append(deal_card())
computer_score = calculate_score(computer_cards)
print(f"User's final hand :{user_cards} User's score : {user_score}")
print(f"Computer's final hand :{computer_cards} Computer's score {computer_score}")
print(compare(user_score,computer_score))
# Ask the user if they want to restart the game. If they answer yes, clear the console and start a new game of blackjack and show the logo from art.py.
while(input("Do you want to play the game: y or n ")=='y'):
play_game()