카테고리 없음

GUESS THE NUMBER

hoho0311 2025. 1. 24. 23:17

 

이번엔 숫자 맞추기 게임을 재작 해보았다.

생각보다 많이 쉬웠다.

 

그리고 무려 지피티는 사용하지 않았다!

 

너무 쉬운 탓도 있겠지만 그래도 나 혼자만의 힘으로 만들었다.

바로 코드 설명 들어가기 전에 

대략 어떤 게임인지 간단하게 설명하겠다.

 

사실 설명할 것도 없다.

1부터 100까지의 랜덤 한 숫자를 구한 다음

사용자가 숫자를 입력하면서 업다운을 하는 것이다.

 

코드 설명 들어가겠다.

from colorama import Fore, Style, Back
import art, random

print(Fore.CYAN + art.logo)
print(Style.BRIGHT + """Welcome to the Number Guessing Game!
I'm thinking of a number between 1 and 100\n\n""")

random_number = random.randint(1, 100)
life = 0
repeat = True

 

처음 보는 라이브러리가 있다.

바로 colorama이다.

 

때는 3학년 2학기때 Node.js로 웹을 만들 때

콘솔로그를 통해 디버깅을 했다.

하지만 콘솔창의 가독성이 너무 떨어져서

눈이 뽑히는 줄 알았다.

그러다 보니 콘솔창의 가독성에 집착하게 되었고

어지간하면 콘솔에 색을 입히거나 굵기를 다르게 하여

콘솔창의 가독성을 높였다.

 

사용법은 워낙 간단하니 다루지 않겠다.

 

처음 print문은 게임의 시작을 알린다.

그다음엔 전역변수로 필요한 값들을 입력해 준다.

 

ramdom_number = 사용자가 맞춰야 하는 숫자

life = 난이도에 따라 다르므로 0으로 선언

repeat = 숫자를 맞출 때까지 반복하므로 True

def game_over(life):
    """
    Check life is 0. If life is 0 game over...
    :param life:
    """
    global repeat
    if life == 0:
        print("Game Over...")
        repeat = False
        
def compare_user_input(guess):
    """
    Compare random number with user
    :param guess: user_input
    :return: compare result
    """
    global  life, repeat
    if random_number == guess:
        print(f"You got it! The answer was {random_number}\n")
        repeat = False
    elif random_number > guess:
        print("Too low\n")
        life -= 1
        game_over(life)
    else:
        print("Too high\n")
        life -= 1
        game_over(life)

 

게임에 필요한 함수들이다.

( 함수 이름, 변수 이름 짓는 게 제일 힘들다... )

 

game_over 함수는 life 가 0이 되면 repeatFalse로 만들어

게임을 중단한다.

 

compare_user_imput은 사용자가 입력한 값을 랜덤 한 숫자와 비교하여

정답이면 게임을 끝내고

오답이면 업, 다운을 알려준 뒤 life를 하나 줄인다.

 

while True:
    difficulty = input("Choose a difficulty. Type 'easy' or 'hard' : ").lower()
    if difficulty == 'easy' :
        life = 10
        break
    elif difficulty == 'hard' :
        life = 5
        break
    else:
        print("Invalid input. Type correct difficulty\n")

while repeat:
    print(f"You have << {life} >> attempts remaining to guess the number.")
    guess = int(input("Make a guess : "))

    compare_user_input(guess)

첫 번째 반복문은 난이도를 선택하는 반복문이다.

유효하지 않은 값을 입력했을 때 다시 입력하라고 반복한다.

 

마지막은 사용자의 입력을 정답을 맞히거나 목숨이 다할 때까지 반복한다.

 

 

 

마지막으로 실행 화면 올리고 글 마치겠다.

이쁘게 꾸민듯 ^ㅁ^