Python Hangman 游戏

1. 简介

Hangman(或者称为猜词游戏)是一种经典的文字猜测游戏。玩家需要猜测一个被选中的单词,通过猜测字母来逐步揭示单词的字母。

在本教程中,我们将使用 Python 编程语言来创建一个简单的 Hangman 游戏。我们将介绍游戏规则、实现过程以及一些 Python 的基础知识。

2. 游戏规则

  • 程序会随机选择一个单词作为隐藏单词。
  • 玩家会猜测一个字母,如果该字母存在于隐藏单词中,那么这个字母将会被显示在正确的位置上。
  • 如果玩家猜错了字母,游戏将会显示一部分“Hangman”的图形。
  • 游戏将会继续,直到玩家猜测出隐藏单词或者达到了猜错字母的最大次数。

3. 实现过程

3.1 导入必要的模块

首先,我们需要导入一些 Python 的模块来实现游戏的功能。我们将使用 random 模块来选择一个随机单词。

import random

3.2 生成随机单词

我们需要定义一个函数来从给定的单词列表中选择一个随机单词。这个函数将会在游戏开始时被调用。

def get_random_word():
    word_list = ["apple", "banana", "orange", "watermelon"]
    random_word = random.choice(word_list)
    return random_word

3.3 初始化游戏状态

我们需要初始化一些游戏状态变量,例如隐藏单词、猜测次数、已猜测字母等。

def init_game():
    word = get_random_word()
    guessed_letters = []
    attempts = 0
    max_attempts = 5
    return word, guessed_letters, attempts, max_attempts

3.4 显示隐藏单词状态

我们需要定义一个函数来显示隐藏单词的状态。这个函数将会在每次玩家猜测字母时被调用。

def display_word(word, guessed_letters):
    displayed_word = ""
    for letter in word:
        if letter in guessed_letters:
            displayed_word += letter + " "
        else:
            displayed_word += "_ "
    return displayed_word.strip()

3.5 游戏主循环

我们需要定义一个主循环来处理用户的输入和游戏的状态更新。

def main():
    word, guessed_letters, attempts, max_attempts = init_game()
    
    while True:
        print(display_word(word, guessed_letters))
        
        if display_word(word, guessed_letters) == word:
            print("Congratulations! You've guessed the word.")
            break
            
        if attempts == max_attempts:
            print("Game Over. You couldn't guess the word.")
            break
            
        guess = input("Enter a letter: ")
        
        if guess in word:
            guessed_letters.append(guess)
        else:
            attempts += 1

3.6 运行游戏

最后,我们需要在程序的入口处调用 main 函数来运行游戏。

if __name__ == "__main__":
    main()

4. 完整代码

下面是完整的 Hangman 游戏的代码:

import random

def get_random_word():
    word_list = ["apple", "banana", "orange", "watermelon"]
    random_word = random.choice(word_list)
    return random_word

def init_game():
    word = get_random_word()
    guessed_letters = []
    attempts = 0
    max_attempts = 5
    return word, guessed_letters, attempts, max_attempts

def display_word(word, guessed_letters):
    displayed_word = ""
    for letter in word:
        if letter in guessed_letters:
            displayed_word += letter + " "
        else:
            displayed_word += "_ "
    return displayed_word.strip()

def main():
    word, guessed_letters, attempts, max_attempts = init_game()
    
    while True:
        print(display_word(word, guessed_letters))
        
        if display_word(word, guessed_letters) == word:
            print("Congratulations! You've guessed the word.")
            break
            
        if attempts ==