본문 바로가기
python/파이썬으로게임만들기

파이썬게임만들기-제7장숫자맞추기게임-2.숫자맞추기게임!!

by 유봉삼 2023. 5. 2.
728x90
반응형

파이썬으로 게임만들기

제7장 2번 숫자맞추기게임

책에 있는 예제 살짝 변경함

파이썬마스터하기 어렵넹 ㅠㅠ


07장 숫자 맞히기 게임 만들기
07-1 조건 루프란?
07-2 숫자 맞히기 게임 프로그래밍하기


 

게임준비하기

 

#라이브러리 불러오기
import random

#변수 정의하기
userinput = ""
userguess = 0

#무작위 숫자 생성하기 1~100
randnum = random.randrange(1,101)

#게임실행하기
print("봉삼이는 1~100까지 숫자범위에서 하나를 정하였습니다. ")
print("이 숫자는 무엇일까~요?ㅋㅋㅋ")

#사용자가 맞출때까지 반복하기
while randnum != userguess:
    userinput = input("예상 숫자 :").strip()
    #입력값이 숫자인지 확인
    if not userinput.isnumeric():
    	#if userinput.isnumeric() = false: 와 같음
        print("숫자를 입력해주세요!!!")
    else:
    #입력한 값이 숫자면 진행
    	 #입력한값을 숫자로 변환
        userguess = int(userinput)
#정답확인하기
    if userguess > randnum:
        print("DOWN!!")
    elif userguess < randnum:
        print("UP!!") 
    else :
        print("정답 !!")

 

>>결과

봉삼이는 1~100까지 숫자범위에서 하나를 정하였습니다. 
이 숫자는 무엇일까~요?ㅋㅋㅋ
예상 숫자 :5
UP!!
예상 숫자 :50
UP!!
예상 숫자 :60
UP!!
예상 숫자 :90
DOWN!!
예상 숫자 :70
DOWN!!
예상 숫자 :66
DOWN!!
예상 숫자 :64
DOWN!!
예상 숫자 :62
정답 !!

 

위 코드 업그레이드하기

사용자에게 시도 횟수를 알려주고 숫자 범위의 하드코딩을 방지하는 등의 추가 기능이 포함

#코드 업그레이드하기 
'''
1. 사용자가 정답을 맞출때까지 몇번 시도했는지 알리기
2. 하드코딩 피하기(숫자범위)
'''
import random
#변수 정의하기
userinput = ""
userguess = 0
minrnum = 1
maxrnum = 100
guessnum = 0

#무작위 숫자 생성하기
randnum = random.randrange(minrnum,maxrnum+1) # randrange 는 최대 수 의 -1 만큼의 범위를 가져옴
                                              # 원하는 max값을 범위로 지정할려면 +1을 해줘야함

#게임실행하기
print("봉삼이는",minrnum,"에서",maxrnum,"사이의 숫자 하나를 정하였습니다. ")
print("이 숫자는 무엇일까~요?ㅋㅋㅋ")

#사용자가 맞출때까지 반복하기
while randnum != userguess:
    userinput = input("예상 숫자 :").strip()
    #입력값이 숫자인지 확인
    if not userinput.isnumeric():
    #if userinput.isnumeric() = false: 와 같음
        print("숫자를 입력해주세요!!!")
    else:
    #입력한 값이 숫자면 진행 , 입력횟수출력
        guessnum = guessnum+1   # +1만큼 증가하는 변수
        userguess = int(userinput)  #입력한값을 숫자로 변환
        print(guessnum,"회 입력하셨습니다.")

#정답확인하기 userguess의 범위체크
    if userguess < minrnum or  userguess > maxrnum:
        print(userguess,"는",minrnum , "~",maxrnum, "사이의 범위가 아닙니다")
    elif userguess > randnum:
        print("DOWN!!")
    elif userguess < randnum:
        print("UP!!") 
    else :
        print()
        print("정답 !! 시도횟수:",guessnum)
        
#끝날때출력하는말
print()
print("게임끝!!또만나요~ 안뇽!")

 

>>>>>결과

봉삼이는 1 에서 100 사이의 숫자 하나를 정하였습니다. 
이 숫자는 무엇일까~요?ㅋㅋㅋ

예상 숫자 :50
1 회 입력하셨습니다.
DOWN!!
예상 숫자 :110
2 회 입력하셨습니다.
110 는 1 ~ 100 사이의 범위가 아닙니다
예상 숫자 :30
3 회 입력하셨습니다.
DOWN!!
예상 숫자 :20
4 회 입력하셨습니다.
DOWN!!
예상 숫자 :10
5 회 입력하셨습니다.
UP!!
예상 숫자 :15
6 회 입력하셨습니다.
UP!!
예상 숫자 :16
7 회 입력하셨습니다.
UP!!
예상 숫자 :18
8 회 입력하셨습니다.
UP!!
예상 숫자 :17
9 회 입력하셨습니다.
UP!!
예상 숫자 :19
10 회 입력하셨습니다.

정답 !! 시도횟수: 10

게임끝!!또만나요~ 안뇽!
문제

userinput값이랑 봉삼이가 생각한 randum값과의 차이 크기별로 "크다/작다,너무크다/너무작다" 라는 힌트를 주기

일단 위 문제는 값을 비교하는 구간에서 if조건을 사용해야 할 것 같음

그리고 봉삼네는 10을 기준으로 크다 작다를 비교해보았다

#문제
'''
1. 정답에 가까우면 크다/작다 멀면 너무크다 /너무작다
'''
import random

#변수 정의하기
userinput = ""
userguess = 0
minrnum = 1
maxrnum = 100
guessnum = 0

#무작위 숫자 생성하기
randnum = random.randrange(minrnum,maxrnum+1) # randrange 는 최대 수 의 -1 만큼의 범위를 가져옴
                                              # 원하는 max값을 범위로 지정할려면 +1을 해줘야함

#게임실행하기
print("봉삼이는",minrnum,"에서",maxrnum,"사이의 숫자 하나를 정하였습니다. ")
print("이 숫자는 무엇일까~요?ㅋㅋㅋ")
print()
#사용자가 맞출때까지 반복하기
while randnum != userguess:
    userinput = input("예상 숫자 :").strip()
    #입력값이 숫자인지 확인
    if not userinput.isnumeric():
    #if userinput.isnumeric() = false: 와 같음
        print("숫자를 입력해주세요!!!")
    else:
    #입력한 값이 숫자면 진행 , 입력횟수출력
        guessnum = guessnum+1   # +1만큼 증가하는 변수
        userguess = int(userinput)  #입력한값을 숫자로 변환
        print(guessnum,"회 입력하셨습니다.")

#정답확인하기
    if userguess < minrnum or  userguess > maxrnum:
        print(userguess,"는",minrnum , "~",maxrnum, "사이의 범위가 아닙니다")
        
##############################문제의 답##############################################

   elif userguess > randnum:
            if userguess - randnum >= 10:
                print(" VERY DOWN!! DOWN!! plz")
            elif userguess - randnum < 10:
                 print("DOWN~~")
    elif userguess < randnum:
        if randnum - userguess >= 10 :
            print("VERY UP!! UP!!") 
        elif randnum - userguess < 10:
            print("UP!!") 
            
##############################문제의 답##############################################

	else :
        print()
        print("정답 !! 시도횟수:",guessnum)
        
    
#끝날때출력하는말
print()
print("게임끝!!또만나요~ 안뇽!")

 

>>>>>결과

봉삼이는 1 에서 100 사이의 숫자 하나를 정하였습니다. 
이 숫자는 무엇일까~요?ㅋㅋㅋ

예상 숫자 :50
1 회 입력하셨습니다.
VERY UP!! UP!!
예상 숫자 :80
2 회 입력하셨습니다.
 VERY DOWN!! DOWN!! plz
예상 숫자 :65
3 회 입력하셨습니다.
UP!!
예상 숫자 :68
4 회 입력하셨습니다.
UP!!
예상 숫자 :70
5 회 입력하셨습니다.
DOWN~~
예상 숫자 :69
6 회 입력하셨습니다.

정답 !! 시도횟수: 6

게임끝!!또만나요~ 안뇽!

 

숫자맞추기게임 끝 ~

728x90
반응형