Python
단어 맞추기 게임
hyungminjeon
2024. 5. 29. 19:10
[문제]
단어를 주어진 기회 안에 맞추는 게임을 만들어보세요
- 컴퓨터가 랜덤으로 영어단어를 선택합니다.
- 영어단어의 자리수를 알려줍니다.
- ex ) PICTURE = 7자리
- 사용자는 A 부터 Z 까지의 알파벳 중에서 하나를 선택합니다.
- 맞출 경우 해당 알파벳이 들어간 자리를 전부 보여줍니다.
- 틀릴 경우 목숨이 하나 줄어듭니다.
- 사용자가 9번 틀리면 게임오버됩니다.
- 게임오버 되기 전에 영어단어의 모든 자리를 알아내면 플레이어의 승리입니다.
[시도]
1. 랜덤으로 영어단어를 선택하기 위해 random 모듈을 import한 후 choice함수를 통해 랜덤한 영어단어를 선택하였다.
2. 맞출 경우 해당 알파벳이 들어간 자리를 전부 보여주기 위해 computer answer list(comp_answer)와는 별개로 user answer list(user_answer)를 정의하였고 '_' 캐릭터를 영어단어의 개수와 동일하게 삽입하였다. 틀릴 경우 목숨이 줄어드는 것을 체크하기위해서는 for loop 안에 correct 변수를 추가하였다. 또한, for loop안에서는 정답글자와 유저가 입력한 character가 일치하는지의 여부를 체크하여 일치하는 경우 user_answer리스트에 글자를 추가하여 주었다.
[해결]
import random
def word_guess_game():
word_list = ["airplane", "apple", "arm", "bakery", "banana","kettle", "knife", "leg"]
selected_word = random.choice(word_list)
print(f'단어의 자리수는 {len(selected_word)}입니다.')
comp_answer = list(selected_word)
user_answer = ['_'] * len(selected_word)
chance = 9
while chance != 0 and '_' in user_answer:
user_choice = input('A부터 Z까지 알파벳 단어를 하나 선택해주세요: ').lower()
if user_choice in user_answer:
print("이미 선택한 알파벳입니다. 다른 알파벳을 선택해주세요.")
else:
for i in range(len(comp_answer)):
correct = 0
if comp_answer[i] == user_choice:
user_answer[i] = user_choice
correct += 1
if correct == 0:
chance -= 1
print(user_answer)
if '_' not in user_answer:
print("축하합니다.")
return
print(f"Game Over. 선택된 단어는 {selected_word} 였습니다.")
word_guess_game()
[정리 및 새롭게 알게된 점]
while문과 for loop을 이용하여 리스트를 수정함으로써 리스트 데이터형을 더 잘 이해할 수 있었고 변수선언을 어떻게 할 지에 대한 고민도 해볼 수 있었던 시간이였다.