(파이썬)2021. 1. 28. 행맨 게임 만들기 실습

# 행맨 게임 만들기 실습
# 제작 일자: 2021. 1. 28.
# 제작자: 김한울
# 만드는 데 걸린 시간: 약 3시간

# 섹션 4까지 수강하고 나서 자력으로 행맨 게임을 만들어보았다.
# 나중에 마지막까지 수강한 뒤 소스를 비교해보자. 재밌겠지?

print("Hello, what's your name?")
username = input(">>>>> ")
print()

while username == "":
    print("Please type your name!")
    username = input(">>>>> ")
    print()

print("Hello, {}! Let's play hangman game!".format(username))
print("The whole answer always use the lower cases.") # 대소문자 체크는 귀찮으니까 넘어가자.
print()

answer = "aple" # 여러 단어 리스트 내에서 문자열을 무작위로 추출하는 기능에 대해서는 나중에 생각해보자.
chance = 1
chanceLimit = 10 # 10번 안에 맞추지 않으면 게임오버라는 설정으로.
answerHint = [] # 힌트를 표시하기 위해 리스트를 생성한다.

for var in range(0, len(answer)): # 정답 길이만큼 밑줄 생성.
    answerHint.append("_")

while chance <= chanceLimit:
    print("Hint: ", end="") # 힌트 표시.
    for var in range(0, len(answerHint)):
        print(answerHint[var], end=" ")

    print()
    print()

    userInput = input("{:02d}/{} try: ".format(chance, chanceLimit))
    print()

    if len(userInput) != 1 or userInput.isalpha() == False: # 반드시 알파벳 한 글자만 입력받도록 하자.
        print("Please type the single alphabet!")
        print()
    elif userInput in list(answer) and "".join(answerHint) != answer: # 알파벳을 하나 찾은 경우 판정. 중복된 글자를 처리할 수 없다.
        answerHint[answer.index(userInput)] = userInput # "".join(answerHint) 대신 str(answerHint)로는 형 변환이 이루어지지 않았다.
        print("You got one!")
        print()
        chance += 1
    elif userInput not in list(answer): # 틀렸을 경우 판정.
        print("Not in the answer!")
        print()
        chance += 1
    else:
        print("Error occured. Please tell the GM this situation. Thank you!")
        exitBlocker = input("Press enter to exit.")

    if "".join(answerHint) == answer: # 모든 정답을 찾은 경우 반복문 해제!
        break

if "".join(answerHint) == answer: # 정답!
    print("You won, {}! The answer is {}.".format(username, answer))
    print()
    exitBlocker = input("Press enter to exit.")
else: # 게임 오버!
    print("You lost, {}. GAME OVER!".format(username))
    print()
    exitBlocker = input("Press enter to exit.")

댓글을 작성해보세요.

  • 김한울
    김한울

    이슈1: "apple"처럼 알파벳이 중복되어있는 경우 처리를 하지 못한다.

    이슈2: 여러 가지 단어 목록 가운데 하나를 무작위로 선택하는 출제 기능이 빠져있다.

    이슈3: 터미널이 자꾸 닫혀서 꼼수를 썼는데 더 좋은 방법이 있을 것 같다.

    나머지 수업을 쭉 수강해보자.


    PARK JUNYEONG
    PARK JUNYEONG
    answerHint[answer.index(userInput)] = userInput
    

    이 부분이 문제입니다.

    이 부분을 해결하시면 중복 입력이 가능합니다.

    제 생각에는 코드를 변경하는게 더 빠를 듯 합니다.

채널톡 아이콘