행맨은 전통적으로 펜과 종이를 사용하여 플레이하는 단어 추측 게임입니다. 단어는 비밀리에 선택되며, 그것에 대해 알려진 유일한 것은 그 단어의 글자 수입니다. 플레이어는 문자를 추측하고 그것이 단어에 있으면 그 위치가 드러납니다. 잘못된 추측은 플레이어에게 불리하게 적용됩니다. 당신이 이기는 단어를 추측하면, 너무 많이 틀린 추측을 하면 게임이 끝납니다.
맞습니다. 이제 우리 모두 게임에 무엇이 수반되는지 알았습니다. Python에서 플레이할 때 이것이 어떻게 보일지 살펴보겠습니다.
Word: --- Wrong guesses: Guess a letter > a Word: -a- Wrong guesses: Guess a letter > g Word: -a- Wrong guesses: g Guess a letter > t Word: -at Wrong guesses: g Guess a letter > c Word: cat Well done! You guessed the word with 1 wrong guesses.
이 게임을 만들기 위해 새로운 Python 프로그램을 시작해 보겠습니다. 추측할 단어와 올바른 추측과 잘못된 추측을 추적하는 방법이 필요합니다.
word = "something" guessed_letters = [] incorrect_letters = []
대괄호는 무엇인가요? 그것은 Python이 새로운 목록을 말하는 것입니다. 리스트는 둘 이상의 값을 저장할 수 있는 변수입니다. 이 경우 우리는 목록에 문자를 저장하려고 하지만 Python에서는 거기에 무엇이든 넣을 수 있습니다.
우리 게임은 기본적으로 플레이어에게 지금까지 추측한 단어 부분을 보여주고 또 다른 추측을 요청하는 루프가 될 것입니다. 이를 구현하기 위해 while 루프를 사용할 수 있습니다. 그러나 루프를 끝내기 위한 조건은 무엇이어야 합니까? 우리가 게임을 끝내고 싶은 이유는 두 가지입니다:
guessed_letters 목록의 글자 수가 단어의 글자 수와 같을 때 첫 번째 조건이 충족됩니다. 따라서 루프가 실행되지 않는 동안에도 루프를 실행해야 합니다. Python에서는 len(guessed_letters) != len(word)로 작성할 수 있습니다. len() 함수는 목록이나 문자열의 길이를 알려줍니다.
올바르지 않은_문자 목록의 문자 수가 허용된 최대 추측 수보다 많을 때 두 번째 조건이 충족됩니다. 따라서 루프가 실행되지 않는 동안에도 루프를 실행해야 합니다. Python에서는 len(incorract_letters)
모두 종합하면 while 루프는 다음과 같이 시작됩니다.
# Game loop. MAX_WRONG_GUESSES = 5 while len(guessed_letters) != len(word) and len(incorrect_letters)루프 내에서 다음 네 가지 작업을 수행해야 합니다.
- 플레이어에게 단어를 보여줍니다.
- 잘못된 추측 목록을 표시합니다.
- 플레이어로부터 추측을 해보세요.
- 추측이 맞는지 틀리는지 기록하세요.
순서대로 다루겠습니다.
단어를 표시
플레이어에게 단어를 보여줘야 하지만, 하지만 플레이어가 정확하게 추측한 글자만 공개되어야 합니다. 나머지 문자는 대시 문자로 대체되어야 합니다. 이 작업을 수행하는 함수를 작성해 보겠습니다. 표시할 단어와 올바르게 추측된 문자 목록이라는 두 개의 인수가 필요합니다.
def show_word(word, letters): print("Word: ", end="") for letter in word: if letter in letters: print(letter, end="") else: print("-", end="") print()for 루프를 사용하여 단어의 각 문자를 반복합니다. 그런 다음 in 연산자를 사용하여 해당 문자가 문자 목록에 있는지 확인합니다. 그렇다면 인쇄해 보겠습니다. 그렇지 않은 경우 대신 대시를 인쇄합니다. 개행 문자가 인쇄되는 것을 막기 위해 인쇄 호출에서 end="" 인수를 사용합니다.
잘못된 추측 표시
잘못된 추측을 표시하는 또 다른 함수를 작성해 보겠습니다. 이것은 마지막 것보다 훨씬 간단합니다. 단일 인수, 잘못된 추측 목록을 취하고 다시 for 루프를 사용하여 각 항목을 인쇄합니다.
def show_wrong_guesses(guesses): print("Wrong guesses: ", end="") for letter in guesses: print(letter, end="") print()플레이어의 추측 얻기
다음 함수는 플레이어로부터 추측을 얻는 것입니다. 플레이어가 실제로 무엇인가를 입력하는지 확인하기 위해 while 루프를 사용할 것입니다. 우리는 그들이 입력할 때까지 계속해서 추측을 요구할 것입니다. 마지막으로 추측은 한 글자여야 하므로 입력한 첫 번째 문자만 반환합니다.
def get_letter(): letter = "" while letter == "": letter = input("Guess a letter > ") return letter[0]추측을 기록하기
플레이어로부터 편지를 받으면 두 목록 중 어느 목록을 추가할지 결정할 수 있습니다. 문자가 단어 안에 있으면 올바른 추측입니다. Append() 메소드를 사용하여 추측된_문자 목록에 추가할 수 있습니다. 해당 단어에 포함되어 있지 않으면 잘못된 문자 목록에 추가해야 합니다. 하지만 우리는 그 글자가 이전에 이미 추측되었는지도 확인해야 합니다. in 연산자를 사용하여 목록 중 하나인지 확인하여 이를 수행합니다. (이 방법으로 각 추측은 한 번만 기록됩니다.)
if letter in word and letter not in guessed_letters: guessed_letters.append(letter) elif letter not in incorrect_letters: incorrect_letters.append(letter)게임 마무리
마지막으로 게임 루프가 종료되면 플레이어에게 적절한 메시지를 표시해야 합니다. 단어를 추측했는지 여부에 따라 메시지는 성공 또는 실패 중 하나가 됩니다. 그들이 단어를 정확하게 추측했는지 어떻게 알 수 있나요? 추측된_문자 목록의 문자 수는 단어의 길이와 같습니다.
# End of game message. if len(guessed_letters) == len(word): show_word(word, guessed_letters) print(f"Well done! You guessed the word with {len(incorrect_letters)} wrong guesses.") else: print(f"Too many wrong guesses! The word was '{word}'")그렇습니다! 우리는 행맨(Hangman)이라는 완전한 게임을 갖고 있습니다. 게임을 더 어렵게 또는 더 쉽게 만들려면 허용되는 잘못된 추측 횟수를 변경하세요.
전체 프로그램 목록
def show_word(word, letters): print("Word: ", end="") for letter in word: if letter in letters: print(letter, end="") else: print("-", end="") print() def show_wrong_guesses(guesses): print("Wrong guesses: ", end="") for letter in guesses: print(letter, end="") print() def get_letter(): letter = "" while letter == "": letter = input("Guess a letter > ") return letter[0] word = "something" guessed_letters = [] incorrect_letters = [] # Game loop. MAX_WRONG_GUESSES = 5 while len(guessed_letters) != len(word) and len(incorrect_letters)
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3