软件工程第二次作业
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/2026-01SoftwareEngineeringandSoftwareEngineeringPractice |
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/2026-01SoftwareEngineeringandSoftwareEngineeringPractice/homework/16718 |
| 这个作业的目标 | 使用 Python 和 AIGC 完成“一箭又一箭”小游戏 |
| 学号 | 102402105 |
| GitHub 仓库 | https://github.com/lch102402105/LCH102402105/commits?author=lch102402105 |
项目展示
开始界面

关卡1

关卡2

关卡3

成功后去往下一关界面

失败 按R返回

项目介绍
本项目使用 Python+Pygame 实现 “一箭又一箭” 点击解谜小游戏。棋盘网格内放置上、下、左、右方向箭头。玩家鼠标点击箭头,程序检测箭头前进方向:前方无箭头阻挡,箭头飞出棋盘消失;存在阻挡,箭头晃动提示,扣除一次失误机会。
包含 3 个可通关关卡;最多 3 次失误机会。支持 R 键重开,空格进入下一关。界面包含开始页、游戏页、通关、失败页面。
实现思路
- 数据结构:Arrow 类保存箭头所在行列、方向、是否激活、晃动标记;关卡使用二维数组表示网格
- 路径检测逻辑:根据箭头方向逐格向前进方向遍历网格,如果遍历途中遇到处于激活状态的箭头,判定存在阻挡;一直走到棋盘边界都没有箭头,则无阻挡,可以消除
- 游戏状态管理:4 种状态(开始、游戏中、通关、失败),切换不同界面绘制。
- 碰撞反馈:箭头被阻挡时启动正弦函数实现晃动动画
关键代码展示:
判断是否有箭头与是否可行

判断输赢

AIGC使用过程
| 子任务 | 借助何种AIGC技术 | AI实现或提供了什么 | 效果如何 | 人工修改 |
|---|---|---|---|---|
| 游戏项目整体框架搭建与初始代码生成,实现多界面、基础游戏交互功能 | 大语言模型代码生成技术、需求拆解AIGC技术 | 根据游戏需求自动拆解项目结构,拆分出四个功能代码文件,生成游戏基础框架、界面绘制、箭头碰撞、关卡基础逻辑代码 | 快速搭建完整项目架构,节省大量基础代码编写时间,核心功能逻辑完整,但存在界面布局错乱问题 | 人工根据界面显示问题,微调ui.py中坐标偏移参数,居中棋盘网格,修正文字、爱心重叠的显示bug |
| 排查并修复代码变量未定义、模块导入报错问题 | 大语言模型代码纠错、代码调试AIGC技术 | 精准定位报错原因,指出缺少跨文件模块导入语句,提供标准导入代码,并解释Python模块引用规则 | 快速解决变量未定义报错,但直接导入后出现模块循环导入的新问题 | 人工结合AI思路,修改导入逻辑,将全局导入改为函数内部延迟导入,消除循环依赖问题 |
| 修复游戏关卡切换bug,完善通关、失败逻辑,解决界面中文乱码问题 | 大语言模型代码逻辑优化、bug修复AIGC技术 | 定位关卡无法跳转的核心原因,补全关卡索引自增、终点边界判断逻辑,给出中文乱码的解决方案 | 修复核心跳转bug,实现正常通关下一关、全部通关提示功能,但仍存在失误次数重置异常、中文显示异常问题 | 人工完善失误次数自动重置逻辑,替换系统兼容中文字体,优化细节,保证游戏所有功能、界面正常运行 |
图片展示:
第一次

第二次

第三次

测试结果
| 编号 | 测试内容 | 预期结果 | 实际结果 | 是否通过 |
|---|---|---|---|---|
| T01 | 点击前方无阻挡的箭头 | 箭头飞出棋盘并消失 | 箭头消失,剩余箭头计数减少 | 通过 |
| T02 | 点击前方有阻挡的箭头 | 箭头不消失,失误次数减 1 | 爱心晃动,失误 + 1,箭头保留 | 通过 |
| T03 | 点击位于边缘且朝向棋盘外的箭头 | 箭头正常消失,不发生越界错误 | 正常消除,程序不崩溃 | 通过 |
| T04 | 消除本关全部箭头 | 显示通关并进入下一关 | 弹出通关界面,空格进入下一关 | 通过 |
| T05 | 失误次数耗尽 | 显示失败并允许重新开始 | Game Over 界面,R 键重置关卡 | 通过 |
| T06 | 游戏进行中重新开始 | 箭头布局和失误次数恢复 | R 键重置,棋盘、失误全部重置 | 通过 |
PSP表格
| 任务 | 预估耗时(小时) | 实际耗时(小时) | 差异(小时) |
|---|---|---|---|
| 需求分析与游戏设计 | 0.5 | 1 | +0.5 |
| Python 与图形库学习 | 2 | 2 | -0 |
| 游戏界面实现 | 3 | 3.5 | +0.5 |
| 路径与碰撞逻辑实现 | 2 | 2.5 | +0.5 |
| 关卡设计 | 1 | 1 | -0 |
| AIGC 辅助开发 | 1 | 1 | -0 |
| 测试与修改 | 2 | 2 | -0 |
| README 与博客撰写 | 1.5 | 2 | +0.5 |
| 合计 | 13 | 15 | +2 |
心得体会
本次小游戏开发借助 AIGC 快速搭建了代码框架,节省基础代码编写时间,但 AI 生成代码存在 bug,例如循环导入、图形间距不合理、边界越界等,需要人工调试修改。通过本次实践,理解了游戏状态管理、二维网格路径检测的思路,也学会甄别 AI 代码,不能直接拿来使用,必须自己读懂、测试、修改
浙公网安备 33010602011771号