본문 바로가기
First step/AI 기초반

[TIL]21.06.25 숫자야구게임 만들기

by Joshua21 2021. 6. 25.

오늘부터 스스로 작은 프로젝트 주제를 선정해서 코딩해보라고 하셨고 나는 숫자야구를만들기로 하였다.

1~9까지의 중복되지 않는 3자리 숫자를 임의로 선정하고 유저가 숫자를 입력해서 자리와 숫자가 맞으면 스트라이크 자리가 다르지만 숫자는 맞으면 볼을 출력하고 총 9번의 시도기회를 주고 게임이 끝나면 어느정도의 시간이 걸렸는지 출력하게 했다. 사용자가 1~9이외의 숫자를 입력하면 다시입력하도록 하고 세가지 숫자를 중복해서 입력해도 다시입력하도록 했다. 문자열을 입력 받았을때 다시입력하게끔 유도하는 방법을 구글링해서 찾았다.

 

import random
import time

while True:
    question1 = random.randint(1,9)
    question2 = random.randint(1,9)
    question3 = random.randint(1,9)
    if question1==question2:
        question2 = random.randint(1,9)
    elif question2==question3:
        question3 = random.randint(1,9)
    elif question1==question3:
        question3 = random.randint(1,9)
    else:
        break
hitter=[question1,question2,question3]


print('야구 게임을 시작합니다 앤터를 입력해 주세요 : ')
input()
start=time.time()
#중간확인 중복없이 숫자가 선정됬는지
print(hitter[0],hitter[1],hitter[2])


trycnt=0
for i in range(9):
    
    try:        
        print('1~9의 숫자를 중복없이 3개 입력하세요')
        userin1=int(input("첫번째 숫자 입력"))
        userin2=int(input("두번째 숫자 입력"))
        userin3=int(input("세번째 숫자 입력"))
        #숫자 3개가 다른값이며 1~9의 숫자인지확인
        if 0< userin1 <10 and 0< userin2 <10 and 0< userin3 <10 and userin1 !=userin2 and userin1 !=userin3 and userin3 !=userin2 :
            pitcher = [userin1,userin2,userin3]
        else:
            print('중복되지 않는 한개의숫자만 입력해주세요')
            continue
        
        trycnt+=1
        print(trycnt,'번째 시도')
        strikecnt=0
        ballcnt=0
        if pitcher == hitter:
            print("Strikeout!!! 승리 하셨습니다.")
            break
        for i in range(3):
            if pitcher[i] == hitter[i]:
                strikecnt+=1                        
            elif pitcher[i] != hitter[i] and pitcher[i] in hitter:
                ballcnt+=1    

        print(strikecnt,'Strike',ballcnt,'Ball','입니다.')

    #숫자가 아닌 문자열을 입력했을때 다시 입력하게 함
    except ValueError:
        print("숫자가 아닙니다. 다시입력해 주세요")
        
        
end=time.time()
ending=end-start
ending= format(ending,".2f")
print('playtime:',ending,'sec')