캠프

[기초 과제] Up Down 게임 만들기

kinggoddino 2024. 7. 2.

Up Down 게임 만들기

 

▶ 내용

  • 컴퓨터는 1부터 100 사이 랜덤한 숫자를 생성함
  • 플레이어는 숫자를 입력하고, 입력한 숫자와 컴퓨터의 숫자를 비교하여 '업' 또는 '다운' 힌트를 제공함
  • 플레이어가 컴퓨터의 숫자를 정확히 맞히면 시도한 횟수를 알려줌
  • 플레이어가 숫자를 맞힐 때까지 위 과정을 반복함

▶ 내 코드

import random # 랜덤 숫자 생성을 위한 random 모듈 import

def computer(): # computer 함수 선언
    random_number = random.randint(1, 101) # 1부터 100까지 랜덤 숫자 생성
    return random_number # 생성한 숫자 반환

def user(): # user 함수 선언
    user_number = int(input("1부터 100까지 중에 입력하세요 : ")) # 입력 받기
    return user_number # 입력받은 값 반환

def up_down_game(): # up_down_game 함수 선언
    random_num = computer() # computer 함수의 반환값을 random_num 변수에 저장          
    count = 0 # count 변수의 초기값을 0으로 설정
    while True: # 무한루프 실행
        user_num = user() # user 함수의 반환값을 user_num 변수에 저장
        count += 1 # 루프 실행마다 count 값에 1 더하기
        if user_num > 100 or user_num < 1: # 1~100 외의 숫자를 입력했을 경우
            print("잘못입력했음.") # 출력 "잘못입력했음"
        elif user_num > random_num: # 정답보다 큰 값 입력했을 경우
            print("Down") # 출력 "Down"
        elif user_num < random_num: # 정답보다 작은 값 입력했을 경우
            print("Up") # 출력 "Up"
        else: # 정답인경우(user_num == random_num)
            print(f"정답. {count}번 만에 맞췄습니다.") # 루프반복횟수 출력
            break # 무한루프 끝내기

up_down_game() # 업다운 게임 실행

 

실행 결과!

성공! ㅎㅎ

 

사실 여기까지는 기본 과제고 추가 도전과제도 있었다. 근데 난 아직 기본 과제를 수행하는 데에도 버거운 수준이어서 도전과제까진 못했다.. 너무 아쉽다..

 

튜터님이 마감시간이 촉박할 때는 일단 보여줄 수 있을 만큼이라도 작성하고 어떤 부분을 보완해야하는지 말하는 게 중요하다고 하셨으니까.! 일단은 작동하는 기본 코드라도 구현한 것에 의의를 갖자ㅜ


+

▶ 추가 도전과제

  • 플레이어가 입력한 숫자가 범위를 벗어날 경우, 적절한 안내 메시지를 출력하여 유효한 범위 내의 숫자를 입력하도록 유도한다
  • 플레이어가 게임을 반복하고 싶을 경우, 게임 재시작 여부를 묻고 그에 따라 게임을 초기화하거나 종료하는 기능을 추가한다
  • 게임이 종료될 때 플레이어의 최고 시도 횟수를 기록하고, 다음 게임에서 이를 표시하는 기능을 구현한다
import random # random 모듈 불러오기

best = 1e9 # 변수 best = 초기값 1e9 (10억, 무한개념)

while True: # 게임시작 무한루프 실행
    answer = random.randint(1, 100) # answer 변수 = 1~99 중 랜덤값 (게임시작시 리셋)
    count = 0 # count 변수 = 초기값 0 (게임시작시 리셋)

    if best != 1e9: # best가 초기값이 아닌경우에만(=이전기록이 있는 경우에만)
        print('이전 최고기록 :', best, '번 입니다.') # 이전 최고기록 출력

    while True: # 무한루프 실행
        user_pick = int(input('1부터 100 사이 숫자를 입력하세요: ')) # 입력받은 문자를 숫자로 변환해서 변수에 저장
        if user_pick < 1 or user_pick > 100: # 입력값이 1~99 범위를 벗어난 값일 경우에는
            print('1부터 100 사이의 숫자를 입력하세요.') # 유효한 숫자를 입력하도록 유도
            continue # continue : 다시 while 루프 처음으로 돌아감
                     # 유효한 값일 경우 if문 실행없이 지나침
        count = count + 1 # count 변수에 1 더해줌 (도전횟수 세기)
        if user_pick < answer: # 답보다 작은 수를 입력했을 경우
            print('UP') # 'UP' 출력
        elif user_pick > answer: # 답보다 큰 수를 입력했을 경우
            print('DOWN') # 'DOWN' 출력
        else: # 답과 같은 수를 입력했을 경우
            print('정답입니다.') # '정답' 출력
            print(count, '번 만에 맞추셨습니다.') # 시도 횟수 출력(문자열, 문자열 이어서 출력)
            best = min(best, count) # best = 기존 best기록과 현재 count 중 작은수
            break # break로 while문 빠져나감

    while True: # 무한루프 실행
        retry = input('다시하시겠습니까? (Y/N)') # 다시할건지 입력받기
        retry = retry.lower() # 대문자 입력해도 소문자로 변환해서 받기
        if retry in ['y', 'yes'] or retry in ['n', 'no']: # 유효한 대답을 입력했다면
            break # if 문 빠져나가고
        else: # 제대로 입력 안했다면
            print('Y 또는 N을 입력하세요.') # 유효한 대답 입력하도록 유도
    if retry in ['y', 'yes']: # 만약 yes 대답했다면
        continue # continue : 제일 처음 while 루프로 돌아감
    elif retry in ['n', 'no']: # 만약 no 대답했다면
        break # break : 무한루프 종료
    
print('게임을 종료합니다. 최고기록: ', best) # 게임종료 메시지 출력, 최고기록 출력

 

실행결과!

 


 

'캠프' 카테고리의 다른 글

[기초 과제] Class로 회원/게시물 관리  (0) 2024.07.08
협업을 잘하려면  (0) 2024.07.05
개발역량 기르는법  (0) 2024.07.05
[기초 과제] 가위바위보 게임  (1) 2024.07.03
시작!  (0) 2024.07.01