用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏

简介: 本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。

一、游戏规则与开发目标
猜数字游戏是经典的逻辑互动游戏,规则简单易懂:系统随机生成1-100之间的整数,玩家通过输入猜测的数字,系统会根据猜测结果给出"太大"或"太小"的提示,直到猜中正确数字。本教程将带领大家从零开始,用Python实现这个经典游戏,最终目标包含:
探秘代理IP并发连接数限制的那点事 (18).png

完整的游戏流程控制
友好的人机交互界面
输入验证与错误处理
猜测次数统计功能
重新开始游戏选项
二、开发环境准备
2.1 基础工具清单
Python 3.x 解释器(建议3.6+版本)
代码编辑器(VS Code/PyCharm/Sublime Text任选)
终端(Windows系统可使用CMD/PowerShell,Mac/Linux使用Terminal)

2.2 环境验证代码
新建game_test.py文件,输入以下代码:

print("欢迎来到Python游戏开发世界!")
input("按下回车键继续...")

在终端执行python game_test.py,若看到欢迎语并能通过回车键退出,则表示环境配置成功。

三、核心功能实现
3.1 生成随机数
Python标准库random提供了生成随机数的功能:

import random

secret_number = random.randint(1, 100)
print("(调试用)当前答案:", secret_number) # 开发时用于测试
randint(a, b)函数会生成[a, b]区间内的闭区间整数。

3.2 获取用户输入
使用input()函数接收用户输入,并进行类型转换:

guess = int(input("请输入你猜的数字(1-100):"))

需要处理非数字输入的情况,后续会完善错误处理机制。

3.3 核心比较逻辑
通过if-elif-else结构实现判断:

if guess > secret_number:
print("太大了!")
elif guess < secret_number:
print("太小了!")
else:
print("恭喜你,猜中了!")

四、游戏流程控制
4.1 添加循环结构
使用while循环实现持续猜测:

attempts = 0
max_attempts = 10

while attempts < max_attempts:
guess = int(input("..."))

# 比较逻辑
attempts += 1

4.2 输入验证增强
添加异常处理防止程序崩溃:

try:
guess = int(input("请输入数字:"))
if guess < 1 or guess > 100:
print("请输入1-100之间的数字!")
continue
except ValueError:
print("请输入有效数字!")
continue

4.3 完整游戏循环
整合后的核心游戏循环:

import random

secret_number = random.randint(1, 100)
attempts = 0
max_attempts = 10

print("欢迎来到猜数字游戏!")
print(f"数字范围1-100,你共有{max_attempts}次机会")

while attempts < max_attempts:
try:
guess = int(input("\n请输入你猜的数字:"))
if guess < 1 or guess > 100:
print("数字超出范围!")
continue

    attempts += 1
    remaining = max_attempts - attempts

    if guess > secret_number:
        print(f"太大了!剩余次数:{remaining}")
    elif guess < secret_number:
        print(f"太小了!剩余次数:{remaining}")
    else:
        print(f"恭喜!你用了{attempts}次猜中数字{secret_number}!")
        break

    if remaining == 0:
        print(f"\n次数用尽!正确答案是:{secret_number}")

except ValueError:
    print("请输入有效数字!")

五、用户体验优化
5.1 添加颜色输出
使用ANSI转义码实现彩色提示:

RED = "\033[31m"
GREEN = "\033[32m"
RESET = "\033[0m"

print(f"{RED}太大了!{RESET}剩余次数:{remaining}")

5.2 难度选择功能
通过函数封装实现难度切换:

def set_difficulty():
print("请选择难度:")
print("1. 简单(1-100,15次)")
print("2. 普通(1-50,10次)")
print("3. 困难(1-20,5次)")

while True:
    choice = input("请输入选项(1-3):")
    if choice == '1':
        return (1, 100, 15)
    elif choice == '2':
        return (1, 50, 10)
    elif choice == '3':
        return (1, 20, 5)
    print("无效输入,请重新选择!")

使用示例

min_num, max_num, max_attempts = set_difficulty()
secret_number = random.randint(min_num, max_num)

5.3 游戏历史记录
使用文件存储游戏记录:

import json
from pathlib import Path

def load_history():
history_file = Path("game_history.json")
if history_file.exists():
return json.loads(history_file.read_text())
return {"best_score": 999, "total_games": 0}

def save_history(best_score, total_games):
history = {
"best_score": min(best_score, load_history()["best_score"]),
"total_games": total_games + 1
}
Path("game_history.json").write_text(json.dumps(history))

在游戏结束后调用

save_history(attempts, history["total_games"])

六、完整游戏代码
import random
import json
from pathlib import Path

配置颜色常量

RED = "\033[31m"
GREEN = "\033[32m"
YELLOW = "\033[33m"
RESET = "\033[0m"

def set_difficulty():
print("""
{YELLOW}请选择难度等级:{RESET}

1. 简单模式(1-100,15次机会)
2. 普通模式(1-50,10次机会)
3. 困难模式(1-20,5次机会)
""".format(YELLOW=YELLOW, RESET=RESET))

while True:
    choice = input("请输入选项(1-3):").strip()
    if choice == '1':
        return (1, 100, 15)
    elif choice == '2':
        return (1, 50, 10)
    elif choice == '3':
        return (1, 20, 5)
    print(f"{RED}无效输入,请重新选择!{RESET}")

def load_history():
history_file = Path("game_history.json")
if history_file.exists():
return json.loads(history_file.read_text())
return {"best_score": 999, "total_games": 0}

def save_history(attempts, total_games):
history = load_history()
new_record = {
"best_score": min(attempts, history["best_score"]),
"total_games": total_games + 1
}
Path("game_history.json").write_text(json.dumps(new_record))

def main():
history = load_history()
print(f"""
{GREEN}欢迎来到终极猜数字游戏!{RESET}
{YELLOW}历史最佳记录:{history['best_score']}次 | 总游戏次数:{history['total_games']}{RESET}
""")

min_num, max_num, max_attempts = set_difficulty()
secret_number = random.randint(min_num, max_num)
attempts = 0
remaining = max_attempts

print(f"\n{YELLOW}数字已生成({min_num}-{max_num}),开始挑战吧!{RESET}")

while attempts < max_attempts:
    try:
        guess = int(input(f"\n{YELLOW}剩余次数:{remaining} | 请输入数字:{RESET}"))
        if guess < min_num or guess > max_num:
            print(f"{RED}数字超出范围!请输入{min_num}-{max_num}之间的数{RESET}")
            continue

        attempts += 1
        remaining = max_attempts - attempts

        if guess > secret_number:
            print(f"{RED}太大了!{RESET}剩余次数:{remaining}")
        elif guess < secret_number:
            print(f"{RED}太小了!{RESET}剩余次数:{remaining}")
        else:
            print(f"""
            {GREEN}
            ★★★ 恭 喜 猜 中 ★★★
            数字:{secret_number}
            用时:{attempts}次
            ★★★ 新 纪 录 ★★★
            {RESET}
            """)
            save_history(attempts, history["total_games"])
            break

        if remaining == 0:
            print(f"""
            {RED}
            ✘ 次数用尽 ✘
            正确答案:{secret_number}
            当前最佳:{history['best_score']}次
            ✘ 挑 战 失 败 ✘
            {RESET}
            """)

    except ValueError:
        print(f"{RED}请输入有效数字!{RESET}")

play_again = input("\n是否再战一局?(y/n):").lower().strip()
if play_again == 'y':
    main()

if name == "main":
main()

七、扩展功能建议
图形界面:使用Tkinter或PyQt将游戏转换为窗口程序
网络对战:通过socket编程实现双人联机对战
成就系统:添加"十连中"等特殊成就奖励
数据可视化:用matplotlib绘制游戏成绩趋势图
AI对手:实现简单的数字猜测算法作为电脑对手
通过本教程的学习,你已经掌握了Python游戏开发的核心流程。可以从修改现有代码开始,尝试添加新功能或优化用户体验,逐步打造属于自己的特色游戏版本。

目录
相关文章
|
2月前
|
存储 监控 算法
淘宝买家秀 API开发实录Python(2025)
本文讲述了作者在电商开发领域,尤其是对接淘宝买家秀 API 接口过程中所经历的挑战与收获。从申请接入、签名验证、频率限制到数据处理和实时监控,作者分享了多个实战经验与代码示例,帮助开发者更高效地获取和处理买家秀数据,提升开发效率。
|
8天前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
98 7
|
17天前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
2月前
|
算法 程序员 API
电商程序猿开发实录:淘宝商品python(2)
本文分享了开发者在对接淘宝商品详情API过程中的真实经历,涵盖权限申请、签名验证、限流控制、数据解析及消息订阅等关键环节,提供了实用的Python代码示例,帮助开发者高效调用API,提升系统稳定性与数据处理能力。
|
3月前
|
XML Linux 区块链
Python提取Word表格数据教程(含.doc/.docx)
本文介绍了使用LibreOffice和python-docx库处理DOC文档表格的方法。首先需安装LibreOffice进行DOC到DOCX的格式转换,然后通过python-docx读取和修改表格数据。文中提供了详细的代码示例,包括格式转换函数、表格读取函数以及修改保存功能。该方法适用于Windows和Linux系统,解决了老旧DOC格式文档的处理难题,为需要处理历史文档的用户提供了实用解决方案。
177 0
|
2月前
|
数据采集 索引 Python
Python Slice函数使用教程 - 详解与示例 | Python切片操作指南
Python中的`slice()`函数用于创建切片对象,以便对序列(如列表、字符串、元组)进行高效切片操作。它支持指定起始索引、结束索引和步长,提升代码可读性和灵活性。
|
Python
python小游戏——贪吃蛇游戏4.0版本の背景音乐和音效功能实现
python小游戏——贪吃蛇游戏4.0版本の背景音乐和音效功能实现
406 0
|
Python
python小游戏——贪吃蛇游戏3.0版本の历史最高得分记录功能实现
python小游戏——贪吃蛇游戏3.0版本の历史最高得分记录功能实现
444 0
|
Python
python小游戏——贪吃蛇游戏2.0版本の得分功能实现
python小游戏——贪吃蛇游戏2.0版本の得分功能实现
363 0

推荐镜像

更多