(파이썬)2021. 1. 28. 행맨 게임 만들기 실습
2021.01.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.")
이 부분이 문제입니다.
이 부분을 해결하시면 중복 입력이 가능합니다.
제 생각에는 코드를 변경하는게 더 빠를 듯 합니다.