讲师中心 微信公众号
AI工具推荐 视频效率加速

如何用 Python 构建 Hangman 游戏:分步指南

云瑶酱_6728

云瑶酱_6728

发布时间:2024-10-08 15:48:52

|

1514人浏览过

|

来源于dev.to

转载

如何用 python 构建 hangman 游戏:分步指南

hangman 是一款经典的猜词游戏,非常有趣,对于初学者程序员来说是一个很棒的项目。

在本文中,我们将学习如何用 python 构建一个简单版本的 hangman 游戏。

最后,您将了解如何使用 python 的基本控制结构、函数和列表来创建这个游戏。


什么是刽子手?

hangman 的目标是通过一次建议一个字母来猜测一个秘密单词。

立即学习“Python免费学习笔记(深入)”;

在游戏结束之前,玩家只能做出有限数量的错误猜测。

对于每个错误的猜测,都会绘制“刽子手”图形的一部分,如果在猜出单词之前绘制出完整的图形,则玩家失败。

让我们分解这个并逐步构建游戏。


第 1 步:规划游戏

让我们计划一下游戏及其主要功能:

  • 游戏随机选择一个单词。
  • 玩家一次猜测一个字母。
  • 玩家的错误猜测次数有限。
  • 游戏会显示正确猜出的字母和剩余字母的单词。

游戏将包含以下组件:

  • 选词
  • 玩家输入(猜测)
  • 更新单词的显示
  • 跟踪错误猜测的数量

第2步:导入所需的库

我们将使用随机模块从列表中随机选择一个单词。


import random



第 3 步:定义单词列表

接下来,定义游戏将从中随机选择的单词列表。

您可以添加更多单词,让游戏变得更有趣。

提示词大师-python版
提示词大师-python版

图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍

下载

word_list = ['python', 'java', 'hangman', 'programming', 'computer']



第 4 步:定义游戏函数

功能一:随机选择一个单词

我们需要一个函数来从单词列表中随机选择一个单词。


def get_random_word(word_list):
    return random.choice(word_list)


功能2:显示word的当前状态

当玩家猜测字母时,我们需要显示正确猜到的字母和未猜到的字母的占位符 (_)。


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


功能3:检查玩家是否获胜

此函数检查是否已猜出单词的所有字母。


def is_word_guessed(word, guessed_letters):
    for letter in word:
        if letter not in guessed_letters:
            return false
    return true


功能4:显示刽子手

要在基于文本的游戏中显示刽子手形象,您可以使用 ascii 艺术来表示刽子手的不同阶段。


def display_hangman(wrong_guesses):
    stages = [
        """
           -----
           |   |
           o   |
          /|\  |
          / \  |
               |
        --------
        """,
        """
           -----
           |   |
           o   |
          /|\  |
          /    |
               |
        --------
        """,
        """
           -----
           |   |
           o   |
          /|\  |
               |
               |
        --------
        """,
        """
           -----
           |   |
           o   |
          /|   |
               |
               |
        --------
        """,
        """
           -----
           |   |
           o   |
           |   |
               |
               |
        --------
        """,
        """
           -----
           |   |
           o   |
               |
               |
               |
        --------
        """,
        """
           -----
           |   |
               |
               |
               |
               |
        --------
        """
    ]
    # reverse the list to display the stages in the correct order
    stages.reverse()
    return stages[wrong_guesses]



第 5 步:主游戏循环

现在我们可以组合游戏的主循环了。这个循环将:

  • 记录猜出的字母和错误的猜测。
  • 允许玩家输入猜测。
  • 根据猜测更新游戏状态。
  • 当玩家获胜或失败时结束游戏。

完整代码示例:


import random


# function to get a random word from the list
def get_random_word(word_list):
    return random.choice(word_list)


# function to display the current state of the word
def display_word(word, guessed_letters):
    display = ''
    for letter in word:
        if letter in guessed_letters:
            display += letter + ' '
        else:
            display += '_ '
    return display.strip()


# function to check if the word has been guessed
def is_word_guessed(word, guessed_letters):
    for letter in word:
        if letter not in guessed_letters:
            return false
    return true


# function to display the hangman figure
def display_hangman(wrong_guesses):
    stages = [
        """
           -----
           |   |
           o   |
          /|\  |
          / \  |
               |
        --------
        """,
        """
           -----
           |   |
           o   |
          /|\  |
          /    |
               |
        --------
        """,
        """
           -----
           |   |
           o   |
          /|\  |
               |
               |
        --------
        """,
        """
           -----
           |   |
           o   |
          /|   |
               |
               |
        --------
        """,
        """
           -----
           |   |
           o   |
           |   |
               |
               |
        --------
        """,
        """
           -----
           |   |
           o   |
               |
               |
               |
        --------
        """,
        """
           -----
           |   |
               |
               |
               |
               |
        --------
        """
    ]
    # reverse the list to display the stages in the correct order
    stages.reverse()
    return stages[wrong_guesses]


# main function to play the game
def play_hangman():
    word_list = ['python', 'java', 'hangman', 'programming', 'computer']
    word = get_random_word(word_list)
    guessed_letters = []
    attempts = 6
    wrong_guesses = 0

    print("welcome to hangman!")
    print("guess the word!")

    # main game loop
    while wrong_guesses < attempts:
        print(display_hangman(wrong_guesses))
        print(display_word(word, guessed_letters))
        guess = input("enter a letter: ").lower()

        # check if the guess is valid
        if len(guess) != 1 or not guess.isalpha():
            print("please enter a single letter.")
            continue

        # check if the letter has already been guessed
        if guess in guessed_letters:
            print("you have already guessed that letter.")
            continue

        guessed_letters.append(guess)

        # check if the guess is in the word
        if guess in word:
            print(f"good guess! {guess} is in the word.")
        else:
            wrong_guesses += 1
            print(f"sorry, {guess} is not in the word.")
            print(f"you have {attempts - wrong_guesses} attempts left.")

        # check if the word is fully guessed
        if is_word_guessed(word, guessed_letters):
            print(f"congratulations! you've guessed the word: {word}")
            break
    else:
        print(display_hangman(wrong_guesses))
        print(f"game over! the word was: {word}")


# run the game
if __name__ == "__main__":
    play_hangman()


解释

  • get_random_word():从单词列表中随机选择一个单词。
  • display_word():创建一个表示单词当前状态的字符串,显示正确猜出的字母和未猜出的占位符。
  • is_word_guessed():检查玩家是否猜出了单词中的所有字母。
  • display_hangman(wrong_guesses):该函数将错误猜测的数量作为参数,并返回该阶段相应的 ascii 艺术。
  • play_hangman():控制游戏的主要函数。它处理用户输入,跟踪玩家的猜测,并确定玩家是赢了还是输了。

关键变量:

  • guessed_letters:存储玩家猜出的字母的列表。
  • wrong_guesses:跟踪玩家做出了多少次错误的猜测。 attempts:允许的最大错误猜测次数。
  • stages:此列表包含刽子手人物在不同完成阶段的 ascii 艺术表现形式。每个阶段对应不同数量的错误猜测。

第 6 步:运行游戏

要运行游戏,只需执行 python 脚本,假设您创建了一个文件 main.py:


python main.py


游戏会提示您输入字母,并且随着您的进展,它会显示正确猜出的字母的单词。

如果您尝试次数用完,游戏就会结束,您就输了,如下所示:


           -----
           |   |
           o   |
          /|  |
          /   |
               |
        --------

game over! the word was: programming


如果你猜对了这个词,你就赢了,就像这样:


           -----
           |   |
               |
               |
               |
               |
        --------

j a _ a
Enter a letter: v
Good guess! v is in the word.
Congratulations! You've guessed the word: java




结论

这个简单的 hangman 游戏演示了 python 中控制结构、函数、列表和基本输入/输出的使用。

构建此项目时,您可以添加更多功能,例如:

  • 添加单词类别。
  • 给予提示。
  • 添加评分系统。

这是一个很棒的项目,可以在您学习更多高级 python 概念时进行扩展。

相关文章

在线游戏
在线游戏

海量精品小游戏合集,无需安装即点即玩,休闲益智、动作闯关应有尽有,秒开即玩,轻松解压,快乐停不下来

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1558

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2284

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

5804

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

4929

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

6634

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

8974

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

4559

2025.07.29

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

4707

2025.08.07

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

120

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn