📜  Python中的刽子手游戏(1)

📅  最后修改于: 2023-12-03 15:19:28.233000             🧑  作者: Mango

Python中的刽子手游戏

刽子手游戏是一种猜单词游戏,玩家需要猜测一个被隐藏的单词,每次猜一个字母,如果该字母出现在单词中,那么对应的位置就会被显示出来,否则玩家的“错误次数”会增加,当错误次数达到上限时,玩家失败。这个游戏的特别之处在于,它会在控制台上以图形的形式显示出正在构建的“刽子手”,这使得游戏变得更加有趣。

游戏规则
  • 游戏开始后,程序会随机从预先定义的单词列表中选取一个单词让玩家猜测。
  • 玩家需要在控制台上猜测单词的字母。如果该字母出现在单词中,那么对应的位置就会被显示出来,否则玩家错误次数会加一。
  • 游戏设定了一个错误次数的上限,如果玩家猜错的次数超过上限,游戏就结束,玩家失败。
  • 如果玩家在达到错误次数上限之前成功猜出了单词,那么他(她)就赢得了游戏。
游戏代码
import random

# 单词列表
words_list = ["apple", "banana", "cherry", "date", "elderberry", "fig", "grape", "honeydew", "kiwi", "lemon"]

# 生成刽子手game_over图案
game_over = [
    "  ___   ___ ",
    " / _ \ / _ \\",
   ("| | | | (_) |"),
    " \___/ \___/ "
]
# 生成刽子手空图案
empty = [
    "  ___ ",
    " |   |",
    " |   ",
    " |    ",
    " |    ",
    " |    ",
    " |    ",
    " |    ",
    " |    ",
    " |    ",
    " |    "
]
# 生成刽子手图案
hangman = [
    [
        "  ___ ",
        " |   |",
        " |   o",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |"
    ],
    [
        "  ___ ",
        " |   |",
        " |   o",
        " |   |",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |"
    ],
    [
        "  ___ ",
        " |   |",
        " |   o",
        " |  /|",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |"
    ],
    [
        "  ___ ",
        " |   |",
        " |   o",
        " |  /|\\",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |"
    ],
    [
        "  ___ ",
        " |   |",
        " |   o",
        " |  /|\\",
        " |  / ",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |"
    ],
    [
        "  ___ ",
        " |   |",
        " |   o",
        " |  /|\\",
        " |  / \\",
        " |",
        " |",
        " |",
        " |",
        " |",
        " |"
    ]
]

def get_secret_word():
    """
    随机选择一个单词
    """
    return random.choice(words_list)

def get_user_guess():
    """
    获取并返回用户输入的字母
    """
    while True:
        guess = input("请猜一个字母: ")
        if guess.isalpha() and len(guess) == 1:
            break
        else:
            print("无效输入,请重新输入")
    return guess.lower()

def play(word):
    """
    游戏主逻辑
    """
    secret_word = list(word)
    guessed_word = ["_"] * len(secret_word)
    guessed_letters = set()
    wrong_guesses = 0
    
    while True:
        print("\n\n")
        print("".join(empty))
        print("\n\n")
        if wrong_guesses > 0:
            print("\n".join(hangman[wrong_guesses-1]))
        print("\n\n")
        print(" ".join(guessed_word))
        print("\n\n")
        print(f"已经猜过的字母: {', '.join(guessed_letters)}")
        guess = get_user_guess()
        if guess in guessed_letters:
            print(f"{guess}已经猜过了,请重新猜测!")
            continue
        guessed_letters.add(guess)
        if guess in secret_word:
            for i in range(len(secret_word)):
                if secret_word[i] == guess:
                    guessed_word[i] = guess
            if "".join(guessed_word) == "".join(secret_word):
                print(" ".join(guessed_word))
                print("恭喜你,你赢了!")
                break
            else:
                continue
        else:
            print(f"{guess}不在单词中,请重新猜测!")
            wrong_guesses += 1
        if wrong_guesses == len(hangman):
            print("\n".join(game_over))
            print(f"单词是: {''.join(secret_word)}")
            print("很遗憾,你失败了!")
            break

def main():
    word = get_secret_word()
    play(word)

if __name__ == "__main__":
    main()
代码解析
  • 代码中首先定义了一个单词列表,随机从这个列表中选择一个单词,由玩家来猜测这个单词。
  • 刽子手的图案被定义为一个列表,其中包含了表示“空”位置的underscore字符。当玩家猜测错误的情况下,将会逐步显示出刽子手的不同部分。当刽子手的图案完全显示出来时,表示难题失败,游戏结束。
  • 游戏主逻辑包含所有有关玩家猜测单词、显示图形等的代码。在每个回合开始时,先打印当前游戏状态和已猜测字母集合。随后等待玩家输入猜测,检查玩家输入是否有效,如果有效则进行判断,记录正确猜测,将正确猜测的位置替换成猜测的字母,判断是否还需要继续猜测,是否已经猜完了。如果已经猜完,则表示游戏胜利,结束游戏。否则,如果存在错误猜测,则继续猜测。如果错误次数已经达到了最大限制,则表示游戏失败,结束游戏。
结束语

本文介绍了如何使用Python实现刽子手游戏。这个游戏可以帮助程序员提高他们的Python编程能力,特别是对于有兴趣在终端界面上进行开发的程序员。在代码实现过程中,需要用到列表、字符串、循环、条件语句等多种Python知识点。新手程序员可以先理解这些知识点,再进行编程练习。