DEV Community

Cover image for My First Project - Black jack project
SHAMEEM ALI
SHAMEEM ALI

Posted on • Edited on

2 2

My First Project - Black jack project

Hint 4: Create a deal_card() function that uses the List below to return a random card.

11 is the Ace.

import random

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

Hint 6: 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):
"""Take a list of cards and return the score calculated from the cards"""

#Hint 7: 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
def compare(user_score, computer_score):
#Bug fix. If you and the computer are both over, you lose.
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():
#Hint 5: Deal the user and computer 2 cards each using deal_card()
user_cards = []
computer_cards = []
is_game_over = False

for _ in range(2):
user_cards.append(deal_card())
computer_cards.append(deal_card())

#Hint 11: 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:
#Hint 9: 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" 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:
  #Hint 10: 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.
  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
Enter fullscreen mode Exit fullscreen mode

#Hint 12: 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" 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))

Hint 14: 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 a game of Blackjack? Type 'y' or 'n': ") == "y":
play_game()

`

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (3)

Collapse
 
solrod profile image
Zuzu

Hi,iI was curious reading your code to see how you solved challenge, I have been making a blackjack game myself on my Codecademy portfolio project.
Nice work

Collapse
 
shameem profile image
SHAMEEM ALI

I use a video content in udemy course 😃

Collapse
 
mark1654 profile image
Mark

Recently I decided to have some fun and search for exciting online casinos. I needed something reliable and without unnecessary restrictions. As a result, I came across a site that completely met my expectations. This resource has excellent reviews of various casinos, where all the pros and cons are indicated. I immediately realized that I had found what I was looking for. If you are also interested in learning about the best casinos without restrictions, I recommend checking out unlimitcasinos.se/. You will definitely find something for yourself!

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post