程序聚合 软件案例 打地鼠小游戏

打地鼠小游戏

2026-10-05 12:30:25
行业:生活服务
载体:爬虫/脚本
技术:Python

业务和功能介绍

1. 立项背景和目标
背景:基于 Python + Pygame 开发一个经典打地鼠(Whack-a-Mole)桌面小游戏,用于练习 pygame 基本操作(事件循环、绘制、定时器、文件持久化)。
目标:
在 800×600 窗口内实现打地鼠玩法
30 秒限时,随机生成地鼠,玩家点击得分
最高分持久化到 best.txt
游戏结束后显示结算界面,支持重新开始

2. 软件功能与核心功能模块
模块 说明
初始化模块 加载 pygame、创建 800×600 窗口、加载黑体字体 simhei.ttf、读取历史最高分
地鼠系统 3×3 网格布局,每个地鼠有状态机(升起→显示→缩回),每帧驱动偏移量变化
生成系统 每 30 帧(约 0.5 秒)随机生成一只地鼠(若当前无地鼠),存活帧数随机 50~100 帧
碰撞判定 鼠标点击时遍历所有地鼠,计算点击点与地鼠圆心距离 < 30px 则命中,+10 分并立即消失
计时器 基于 pygame.time.get_ticks() 每秒扣减 1,倒计时至 0 触发游戏结束
最高分持久化 load_best() / save_best() 读写 best.txt,结束时若刷新纪录则写入
结算界面 黑底显示"游戏结束"、得分、最高分,灰色圆角按钮"重新开始",点击重置所有状态
渲染模块 草地背景(绿色),棕色椭圆洞口,圆形地鼠(棕色身体+白色眼睛+红色鼻子),顶部状态栏(得分/最高分/时间)

3. 业务流程与功能路径
程序启动
→ pygame.init / 创建窗口 / 加载字体 / 读取 best.txt
→ 状态 = "play",timer = 30,score = 0
↓
主循环(60 FPS)
├── 处理事件
│ • QUIT → 退出
│ • MOUSEBUTTONDOWN
│ state == "play" → check_hit():命中则 score += 10,地鼠消失
│ state == "over" → 点击"重新开始"按钮 → reset()
├── 计时
│ 每 1000ms → timer -= 1
│ timer ≤ 0 → state = "over";若 score > best 则写 best.txt
├── 生成
│ 每 30 帧 → spawn():若无地鼠则随机位置生成
├── 更新地鼠状态
│ 升起(y偏移 0→50)→ 显示(帧倒计时)→ 缩回(y偏移 50→0)
└── 渲染
绿色背景 + 9 个洞口 + 可见地鼠 + 顶部状态栏
↓
游戏结束界面
黑底 → 显示"游戏结束" / 得分 / 最高分 /

项目实现

1. 整体架构与设计思路
架构
单文件架构,按功能分为 8 个逻辑区:
逻辑区 代码位置 设计
常量与初始化 whack.py:4-44 窗口 800×600,3×3 网格,字体加载,最高分读取
状态定义 whack.py:38-44 单数组 moles 存地鼠状态,全局 score/timer/state
地鼠状态机 whack.py:69-90 三阶段:升起→显示→缩回,由 update() 驱动
生成系统 whack.py:60-67 每 30 帧随机生成,防重复
碰撞判定 whack.py:106-116 欧氏距离 < 30px 命中
持久化 whack.py:25-36 读写 best.txt
渲染 whack.py:92-122, 157-179 洞口、地鼠、状态栏、结算界面
主循环 whack.py:124-182 事件→计时→生成→更新→渲染,60FPS
设计思路
纯命令式、无 OOP:用全局变量 + 函数,适合单文件小游戏,代码线性易读
状态机驱动地鼠动画:每个地鼠用 [y偏移, 可见, 剩余帧, 阶段] 四元组,update() 逐帧推进
帧计数做定时:用帧数而非时间做生成间隔(每 30 帧),用 pygame.time.get_ticks() 做秒级倒计时
数据持久化极简:best.txt 只存一个整数,无 JSON 配置
技术栈
技术 用途
Python 3 语言
Pygame 窗口、事件、渲染、时钟
系统字体 simhei.ttf 中文渲染
文件 I/O 最高分持久化
random 地鼠生成位置与存活时间
无外部依赖(除 pygame),无 UI 框架,无网络。

2. "我"的负责模块和结果
按功能块拆分:
负责模块 代码行数(约) 结果
地鼠状态机(update + spawn) whack.py:38,56-90 约 40 行 3×3 网格地鼠正常升起/显示/缩回,无重叠
碰撞判定(check_hit) whack.py:106-116 约 11 行 命中 +10 分,误点不扣分,判定半径 30px
计时与状态切换 whack.py:141-148 约 8 行 30s 倒计时准确,到时自动转 over 并持久化最高分
持久化(load_best/save_best) whack.py:25-36 约 12 行 最高分跨会话保留,当前 best.txt 值 500
渲染与 UI whack.py:92-122,157-179 约 45 行 洞口、地鼠、状态栏、结算界面、重新开始按钮
主循环 whack.py:124-182 约 59 行 60FPS 稳定运行,事件处理无卡顿
可量化结果:
总代码量:184 行(含空行)
核心逻辑函数:8 个(load_best、save_best、reset、get_pos、spawn、upda

示例图片视频


python开发
24小时内活跃
方向: 爬虫/脚本-爬虫/脚本、桌面端-桌面端其他、
交付率:100.00%
相似推荐
情绪检测
本工具基于 Python 开发,通过人脸识别与情感分析算法,精准识别用户面部情绪状态,实现高效的情绪检测能力。该工具应用场景广泛:在心理咨询领域,可辅助咨询师洞察来访者的真实情绪变化,提升沟通与干预效果;在校园安防方面,可实时监测学生情绪波动,及时发现异常状态并预警,守护校园安全。系统采用轻量化架构,运行高效、部署灵活,便于集成到现有业务平台中,为心理健康关怀与安全防护提供智能化、数据化的有力支撑。
基于神经网络的游戏动画系统
MotionWeaver 是一套面向 Unreal Engine 游戏开发的 AI 驱动角色动作生成系统,旨在解决传统游戏动画制作成本较高、动画资产复用困难、复杂动作衔接不自然,以及角色运动与动画表现难以协调等问题。 项目以神经网络动作生成技术为核心,结合游戏引擎的角色运动系统,实现从动画数据采集、模型训练到动作推理与引擎集成的完整技术流程。 主要功能包括: 动画数据采集与处理: 支持从 Unreal Engine 动画资产中提取骨骼姿态、位置、旋转及时间序列信息,完成骨骼映射、数据清洗、质量审核与训练数据集构建。 AI 动作模型训练: 提供基于深度学习的动作表示学习、姿态预测与生成模型训练功能,支持模型检查点管理、训练指标记录及实验评估。 条件动作生成: 利用角色根运动轨迹、历史动作状态及参考姿态等条件,生成连续骨骼动作,研究不同运动条件下的动画生成效果。 复杂动作约束: 针对跑酷、跨越障碍等复杂场景,支持参考姿态引导及关键帧约束,改善动作准确性与空间匹配效果。 UE 动画集成与验证: 提供模型推理与 Unreal Engine 动画系统的集成和实验验证能力,支持生成动作的预览、重建、测试及效果分析。 模型评测与对比: 通过骨骼位置误差、运动连续性、关键帧约束误差等指标,对不同模型及优化方案进行定量分析。 项目主要面向游戏角色动画生成、AI 动画技术研究和游戏开发工具链建设,为智能角色运动与游戏动画自动化提供技术基础。
基于 n8n 的社区团购订单自动归集与对账系统 - 飞书多维表格
立项背景和目标: 社区团购商家通常同时运营多个小区的团购业务,订单分散在各处, 每天需要人工汇总到表格、再逐个小区生成对账单。三个小区的情况下, 人工处理约需 1.5-2 小时/天,且极易出现漏单、金额对不上。 目标是让这套流程全自动跑:订单自动归集 → 自动生成分小区对账单 → 异常自动告警,把每天 2 小时的人工压到 0。 软件功能、核心功能模块: 1. 定时触发模块:每天固定时间自动启动,无需人工干预 2. 多源数据读取:对接飞书多维表格开放 API,分页拉取三个小区的订单表 3. 数据清洗与合并:统一字段口径,合并去重,处理缺失值 4. 分类汇总:按小区维度聚合,计算应收、已付、差额 5. 异常检测:金额不一致、状态异常、重复订单自动标记 6. 结果写回:汇总结果写回多维表格,供商家和团长直接查看 7. 失败告警:任一步骤失败自动重试 3 次,仍失败则推送群告警 业务流程、功能路径: 每天 20:00 定时触发 → 读取运行参数 → 换取 tenant_access_token → 逐小区分页读取订单 → 展开为明细行 → 批量写入汇总表 → 生成分小区对账单 → 判断是否启用对账推送 → 异常则发群告警
多端AI问答系统(SSE流式输出)
立项背景:随着大语言模型的普及,传统企业与用户对智能对话的需求激增。旨在构建一个前后端完全解耦的 AI 问答系统,支持多端接入,提供流畅的流式对话体验。 核心功能:支持 SSE 全链路流式对话(包含start/content/reasoning/done/error五类事件);多会话管理(新建、切换、重命名、置顶、逻辑删除);Markdown 渲染、思考过程折叠展示、多模型切换、Token 用量统计与 API 调用日志,以及四维 IP 限流。 业务流程:前端发起对话请求 → 后端校验限流 → 组装历史消息并调用大模型 API → SSE 逐字返回前端实时渲染 → 消息落库并记录 Token 与耗时。
基于RAG的多租户AI客服SaaS-wali-ai
立项背景和目标: 小微企业客服人力有限、游戏规则分散、夜间无人值守, 重复咨询淹没客服; 通用大模型不了解业务规则, 会张冠李戴甚至编造规则和价格. wali-ai的目标是让运营者用自己的知识库, 7x24自动回答玩家问题, 答不上来就兜底或转人工, 以及记录,绝不编造. 软件功能与核心模块: 多租户SaaS控制面(注册即获默认租户与工作空间、两级角色权限、按套餐的对话条数/知识库数量/容量/席位/Token额度五维配额); 知识库管理(文件导入, 切片可视化编辑与检索测试); 自研RAG引擎(向量+关键词混合检索、RRF融合、Rerank重排、置信度评估); Agent编排(意图判断、会话上下文、人设提示词、闲聊/固定兜底双模式); 多渠道接入(游戏内Lua桥接、QQ群NapCat、网页悬浮球SDK、开放API); 会话管理与人工接管; 未回答问题沉淀反哺知识库; 运营统计与全量审计. 业务流程: 注册登录->创建游戏服与机器人->建知识库导入文档->自动切分并向量化索引->配置渠道->玩家在游戏内/QQ群/网页提问->统一网关验签、幂等、路由->Agent意图判断->RAG混合检索->大模型生成带来源引用的回答->写回会话、用量与审计->低置信度时兜底或转人工, 管理员在管理端查看会话、反馈、用量与配额.
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服