그동안 배운 것들 응용해서 게임 만들기
메시지 찾기 게임
대략 짜본 Flow chart..
서방 생일이 얼마 남지 않아 만들어본 생일축하”코드”ㅋㅋ
더럽고 치사해도 생일축하 메시지 보려면 승리해야 한다..ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
예외처리
숫자맞추기 게임 코드
블랙잭 디버깅
유저 리스트 값을 계산하지 않는 문제가 있었음
수정
드디어 Win..
테스트한다고 돌려보는데 왜 내가 열받지????????ㅠㅠㅋㅋㅋ
이제 메시지만 쓰면 끗..!
Final Code
import random
import ascii
def rcp_game():
#가위, 바위, 보 게임
game_images = [ascii.scissors, ascii.rock, ascii.paper]
while True:
while True:
try:
user_choice = int(input("가위는 0, 바위는 1, 보는 2를 누르세용~ : "))
if user_choice >= 3 or user_choice < 0:
print("누르라는 것만 누르세욧!")
continue
else:
break
except ValueError:
print("누르라는 것만 누르세욧!")
continue
print(game_images[user_choice])
computer_choice = random.randint(0, 2)
print("DAHNA : 나도 가위,바위,보!")
print(game_images[computer_choice])
if user_choice == 0 and computer_choice == 2:
print("축하합니다! 첫번째 관문 통과🥳")
break
elif computer_choice == 0 and user_choice == 2:
print("지셨네용🤪 이길 때까지~")
elif computer_choice > user_choice:
print("저런, 지셨네용🥺 다시~")
elif user_choice > computer_choice:
print("축하합니다! 첫번째 관문 통과🥳")
break
elif computer_choice == user_choice:
print("어머 비겼내 함 더?🤭")
def guess_num():
#숫자 맞추기 게임
game_over = False
while not game_over:
correct_number = random.randint(1, 100)
attempts = 10
print("제가 1부터 100까지 어떤 숫자를 생각하고 있는지 10번 안으로 맞춰 보세용~ 🤔")
for attempt in range(attempts):
try:
guess = int(input(f" {attempts - attempt}번의 기회가 있습니다. 숫자를 입력하세용 : "))
if guess < correct_number:
print("더 높은 숫자예요 😏")
elif guess > correct_number:
print("더 낮은 숫자예요 😜")
else:
print(f"오 😮 {attempt + 1}번만에 숫자를 맞추셨군요. 두번째 관문도 통과 🥳")
game_over = True
break
except ValueError: # 숫자가 아닌 다른 것을 입력했을 때의 예외 처리
print("1부터 100까지의 숫자만 입력하셔야 해용!🥺")
# 10번의 기회를 모두 사용한 후
if not game_over:
print(f"10번의 기회가 끝났어요 😭 정답은 {correct_number}였습니다. 다시 고고~")
#블랙잭
def deal_card():
cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
card = random.choice(cards)
return card
def calculate_score(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 == computer_score:
return "비겼당🤗 비겼는데 처음으로 돌아가는 건 좀 너무하죠? 그래도 어쩔 수 엄서요 🥺 "
elif computer_score == 0:
return "제가 블랙잭입니다! 지셨네유ㅠ"
elif user_score == 0:
return "블랙잭이군요! 축하합니당 뿌뿌 🥳"
elif user_score > 21:
return "버스트네요~ You lose! 다시 처음으로 흙흙"
elif computer_score > 21:
return "제가 버스트네요ㅠ 이기셨습니다 축하해용 🥹 🥳"
elif user_score > computer_score:
return "저보다 21에 근접하셨네요 추카추카츄 🥳"
else:
return "제가 21에 더 근접했어요 아쉽지만 첨으루 빠빠~👋"
def play_game():
print(ascii.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" 당신의 카드 : {user_cards}, 현재 점수는: {user_score}")
print(f" 힌트로 내 첫번째 카드 보여줄게욥 👀 : {computer_cards[0]}")
if user_score == 0 or computer_score == 0 or user_score > 21:
is_game_over = True
else:
while True:
user_should_deal = input("카드를 더 뽑으실 거면 'y', 아니면 'n'를 입력해주세용 ").lower()
if user_should_deal == "y":
user_cards.append(deal_card())
user_score = calculate_score(user_cards)
break
elif user_should_deal == "n":
is_game_over = True
break
else:
print("y나 n만 써요!")
while computer_score != 0 and computer_score < 17:
if len(computer_cards) < len(user_cards):
computer_cards.append(deal_card())
computer_score = calculate_score(computer_cards)
else:
break
print(f" 당신의 마지막 덱: {user_cards}, 카드 총 합은: {user_score}")
print(f" 내 마지막 덱: {computer_cards}, 카드 총 합은: {computer_score}")
result = compare(user_score, computer_score)
print(result)
return result
answer_1 = input("당신의 생일축하메시지는 어딘가 숨겨져 있습니다. 찾아보시겠어용?🤪 Yes or No : ").lower()
if answer_1 == "no":
print("흥. 그럼 이만 빠잉 😠")
elif answer_1 == "yes":
print(ascii.treasure)
print("환영합니다 🤗\n어떻게든 축하받기 위해 번거롭지만 세가지 게임을 통과해야 합니다.")
while True:
print("첫번째 게임! 가위✌️ 바위✊ 보🖐️")
rcp_game()
print("두번째 게임으로 넘어갑니다.")
guess_num()
print("다음은 최고 난이도인 블랙잭 게임에서 승리하셔야 합니다. \n룰을 모르신다고요? 구글링하고 오세요!ㅋㅋ \n마지막 관문이자 최고 난이도인 만큼 실패시 처음으로 돌아가게 됩니다. \n굿럭🍀")
input("준비되셨으면 엔터키를 누르세요 😎")
result = play_game()
if result in ["비겼당🤗 비겼는데 처음으로 돌아가는 건 좀 너무하죠? 그래도 어쩔 수 엄서요 🥺 ","제가 블랙잭입니다! 지셨네유ㅠ","버스트네요~ You lose! 다시 처음으로 흙흙","제가 21에 더 근접했어요 아쉽지만 첨으루 빠빠~👋"]:
continue
else:
break
input("축하합니다!🥳😍 모든 관문을 통과하고 드디어 메시지를 확인할 수 있어요!ㅋㅋ 엔터키를 눌러주세요~")
print(ascii.birthday)
else:
print("Yes나 No로만 대답하세욧!")