반응형

안녕하세요?

오늘은 간단한 게임(?)을 만들어 보려고 한다.

숫자야구란..

 

상대방이 숫자를 적으면

자신이 숫자를 불러가면서 그 숫자를 맞추는 게임이다.

만약 상대방이 적은 숫자가 2 5 3이라면

자신이 1 2 3을 부르면 자리가 맞으면 스트라이크! 자리는 다른데 있는 숫자면 볼! 이라고 말해주는 게임으로

위의 경우 1볼 1스트라이크가 된다.

 

완성된 코드를 보자.

import random
#1
a = random.randrange(0, 10)
while True:
    b= random.randrange(0, 10)
    if(a!=b):
        break
while True:
    c = random.randrange(0, 10)
    if(a!=c and b!=c):

        break


count = 0

#2
while True:


    num1 = int(input("첫번째 숫자:"))

    num2 = int(input("두번째 숫자:"))

    while num1 == num2:

        print("중복된 숫자. 다시입력")

        num2 = int(input("두번째 숫자:"))

    num3 = int(input("세번째 숫자:"))

    while num3 == num1 or num3 == num2:

        print("중복된 숫자. 다시입력")

        num3 = int(input("세번째 숫자:"))
        
    strike = 0
    ball = 0
    count += 1
    if a==num1:
        strike += 1
    if b==num2:
        strike += 1
    if c==num3:
        strike += 1
    if a == num2 or a==num3:
        ball += 1
    if b == num1 or b==num3:
        ball += 1
    if c == num2 or c==num1:
        ball += 1
    print(count,"번째 도전")
    print("Strike:",strike,"Ball:",ball)
    if strike == 3:
        break
print(count,"회 만에 성공하셨습니다!")

아주 간단히 if문과 while문을 사용하여 만들었다. #1과 #2로 크게 두 부분으로 나누어서 보자면

우리가 맞출 숫자는 컴퓨터가 랜덤으로 정한 숫자이므로 random모듈을 import했다. 그리고 같은 숫자가 중복되지 않는다는 조건하에 게임을 진행할 것이므로 while 과 if문을 적절히 섞어 두번째숫자는 첫번째숫자와 달라야 정해지고 세번째 숫자는 첫째와 둘째 숫자와 달라야만 다음으로 넘어가게 된다.

 

#2를 보면 중복된 숫자를 입력하지 않도록 하기위해 while문을 이용해준 모습이다.

중반쯤 if문을 통해 볼(Ball)과 스트라이크(Strike)를 정하고 만약 숫자와 자리까지 다 맞춘 3스트라이크인 경우 while문을 벗어나

 

몇 회만에 맞췄는지 출력을 하며 실행이 끝난다.

 

이번 코드는 while과 if문을 이해하는데 도움이 될 수 있겠다.

 

직접 짜보고 개선해본 다음 즐겨보도록 하자.

반응형
Dvlp.Jun