데이터 분석가

파이썬(Python) Up-Down(숫자추측) 게임 프로젝트 본문

파이썬(python) 프로젝트 모음

파이썬(Python) Up-Down(숫자추측) 게임 프로젝트

PlintAn 2023. 3. 23. 10:00

안녕하세요
 

 

겜블이다 !!!

제가 직접 그린 그림입니다 ㅎㅎ 어때요 잘 그렸나요
 
카이지
 
이번 시간에는 친구들과 가장 쉽게 할 수 있는 Up-Down(업다운) 숫자 추측 게임인데요
 
상대방이 마음 속에 정한 숫자를 맞추는 게임이죠 ~
 
 

logo = """
██╗   ██╗██████╗     ██████╗  ██████╗ ██╗    ██╗███╗   ██╗     ██████╗  █████╗ ███╗   ███╗███████╗    ██╗
██║   ██║██╔══██╗    ██╔══██╗██╔═══██╗██║    ██║████╗  ██║    ██╔════╝ ██╔══██╗████╗ ████║██╔════╝    ██║
██║   ██║██████╔╝    ██║  ██║██║   ██║██║ █╗ ██║██╔██╗ ██║    ██║  ███╗███████║██╔████╔██║█████╗      ██║
██║   ██║██╔═══╝     ██║  ██║██║   ██║██║███╗██║██║╚██╗██║    ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝      ╚═╝
╚██████╔╝██║         ██████╔╝╚██████╔╝╚███╔███╔╝██║ ╚████║    ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗    ██╗
 ╚═════╝ ╚═╝         ╚═════╝  ╚═════╝  ╚══╝╚══╝ ╚═╝  ╚═══╝     ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝    ╚═╝
                                                                                                         
"""

 
저는 from art import logo 를 이용해서 해당 로고를 불러올 것이기 때문에 먼저 입력을 해두었습니다.
 
참고로 해당 ASCII 문자를 자동으로 출력해주는 편리한 사이트가 있는데요 아래 사이트를 확인해주세요
 

나는 너무 친절해 !

 
http://patorjk.com/software/taag/#p=display&h=0&f=ANSI%20Shadow&t=Up%20Down%20Game%20!

Text to ASCII Art Generator (TAAG)

patorjk.com

from random import randint
from art import logo #art라는 파일에서 logo를 가져온다

EASY_LEVEL_TURNS = 10 #'쉬움'모드는 기회 10번
HARD_LEVEL_TURNS = 5 #'어려움' 모드는 기회 5번

def check_answer(guess, answer, turns): #추측, 답, 기회
  """checks answer against guess. Returns the number of turns remaining."""
  if guess > answer: #추측 > 답 일 경우
    print("Too high") #너무 높다
    return turns -1 #기회 1번 마이너스
  elif guess < answer: #추측 < 답 일 경우
    print("Too Low") #너무 낮다
    return turns -1 #기회 1번 마이너스
  else:
    print(f"You Got It, answer was {answer}.") #정답일 경우 정답을 보여준다.

저는 이 게임의 난이도를 '쉬움', '어려움' 두 가지로 정했습니다
 
그리고 def check_answer(guess, answer, turns): 을 이용해 추측(guess), answer(정답), turns(기회)를 입력합니다
 
def 문 안의 if문을 통해 추측한 숫자가 아닐 경우 난이도 선택에 따라 주어진 turns(기회)를 -1 합니다.
 

def set_difficulty(): #'쉬움' or '어려움' 선택

  level = input("Chiose a difficulty. Type 'easy' or 'hard': ")

  if level == "easy": #easy 선택할 경우 EASY_LEVEL_TURNS을 반환
    return EASY_LEVEL_TURNS
  else: #나머지 경우는 HARD 이므로
    return HARD_LEVEL_TURNS #HARD_LEVE_TURNS 5회 반환

 
 
level 난이도를 input 함수로 입력받아  '쉬움', '어려움' 중 하나를 선택해 
 
각각의 해당 값을 리턴으로 받습니다. 
 

 

def game():
  print(logo)

  print("Welcome to the Up-Down Game! ")
  print("I'm thinking of a number between 1 and 100.")

  answer = randint(1,100) #우리가 맞출 정답은 1,100 사이 랜덤하게 나온다
  print(f"the corrct answer is {answer}") #정답은 {}이다

  turns = set_difficulty() #'쉬움' '어려움'에 대한 5 or 10 기회

  guess = 123123 #임의 변수로 어차피 초기화되므로 아무 숫자 가능

  while guess != answer: #추측에 대한 기회 몇번 남았는지?
    print(f"You have {turns} attempts remaining to guess the number.")

    guess = int(input("Make a guess : ")) #추측할 숫자는?

    turns = check_answer(guess, answer, turns)
    if turns == 0: #기회가 0번 남았다면
      print("You've run out of guessess, You LOSE") #패배
      return
    elif guess != answer: #기회가 0이 남기 전에 맞춘다면
      print("Guess again") #승리


game() #게임을 시작합니다

난이도 설정을 통해 turns(기회)를 얻는 사전 작업을 끝냈으니
 
answer을 랜덤으로 추출하고 , guess를 입력받는 input 함수를 만듭니다 !
 
그리고 while 함수를 이용해 guess와 answer을 이용해 turns(기회)를 줄여나갑니다
 
만약 turns(기회)를 줄여나가는 도중에 answer = guess 값이 도출된다면 
 
  print(f"You Got It, answer was {answer}.") #정답일 경우 정답을 보여준다.
 
def 문 안에 있는 해당 출력으로 게임을 종료합니다 !
 
 
한번 만들어봅시다 !
 
감사합니다!
 

 
 
 

Comments