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 |