딜러가 자신을 포함한 참가자 전원에게 카드 두 장을 나누어주는데, 딜러의 카드 한 장은 상대에게 보이지 않는다. 카드의 합이 딜러보다 먼저 21이 되거나 딜러보다 21에 가깝게 되면 이기고, 카드를 더 받았는데 21을 초과하면 버스트(Bust)된다.
레츠기릿
플레이어와 컴퓨터 둘 다 2개의 랜덤 카드를 가지고 시작
플레이어나 유저가 블랙잭이 되면 이를 감지해야 한다.
컴퓨터가 블랙잭이면 플레이어 패배 (플레이어도 블랙잭이더라도 패배). 플레이어가 블랙잭이면 플레이어 승리 (컴퓨터가 블랙잭이 아니어야한다.)
플레이어와 컴퓨터의 카드 값 계산
에이스를 뽑으면 11로 계산한다. 하지만 11로 계산 시 총합이 21을 초과하는 경우 에이스를 1로 계산한다
컴퓨터의 첫번째 카드 한장을 플레이어에게 공개
플레이어의 점수가 21을 초과하거나, 플레이어 또는 컴퓨터가 블랙잭 달성 시 즉시 게임 종료
플레이어에게 카드를 한장 더 뽑을지 묻기
플레이어가 카드를 더 이상 뽑지 않는다고 할 경우 컴퓨터가 플레이한다. 컴퓨터는 점수가 16이 넘을 때까지 계속해서 카드를 뽑는다
플레이어와 컴퓨터의 점수를 비교하여 결과를 판별한다.
결과 출력
재시작 여부 묻기
이렇게 해줄거시다
import random
cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
user_cards = []
computer_cards = []
isGameOver = False
def deal_card():
rcard = random.choice(cards)
return rcard
for _ in range(2) :
user_cards.append(deal_card())
computer_cards.append(deal_card())
def calculate_score(cards):
total = sum(cards)
if total == 21:
return 0
elif total > 21 :
for card in cards:
if card == 11:
card = 1
total = sum(cards)
if total > 21 :
return total
return total
elif total < 21:
return total
def stopGame():
if user_score == 0:
print(f"You got a blackjack, YOU WIN!")
return True
elif computer_score == 0:
print(f"Computer got a blackjack, YOU LOSE...")
return True
elif user_score > 21:
print("you got over 21, LOSE")
return True
elif computer_score > 21 :
print("computer got over 21, YOU WIN")
return True
return False
def compare(user, com):
print(f"user cards: {user_cards}, computer's cards : {computer_cards}")
print(f"user score : {calculate_score(user_cards)}, com score : {calculate_score(computer_cards)}")
if user > com:
print("WIN")
else :
print("LOSE")
return True
from art import logo
print(f"{logo}")
print("WELCOME TO THE BLACKJACK GAME!\n\n")
while not isGameOver :
print(f"your cards: {user_cards}, computer's first card : [{computer_cards[0]}]")
user_score = calculate_score(user_cards)
computer_score = calculate_score(computer_cards)
print(f"user score : {calculate_score(user_cards)}")
if stopGame():
break;
doDraw = str(input("wanna draw a card from a deck? Type 'y' or 'n' : "))
if doDraw == 'y' :
user_cards.append(deal_card())
elif doDraw == 'n' :
while computer_score < 17 :
print("computer is drawing a card...")
computer_cards.append(deal_card())
computer_score = calculate_score(computer_cards)
isGameOver = compare(user_score, computer_score)
간단하긔