软件工程课程第二次个人作业
| 软件工程 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering |
|---|---|
| 作业要求 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/16717 |
| 作业目标 | 使用 Python 和 AIGC 完成“一箭又一箭”小游戏 |
| 学号 | 102401606 |
| GitHub 仓库 | https://github.com/halttt/arrow-game |
一、项目展示
本次游戏开发完成了完整的游戏流程,包含开始界面、游戏对局界面、通关界面和失败界面,游戏整体运行流畅,交互反馈清晰。



二、项目介绍
本次开发的是一箭又一箭休闲解谜小游戏,属于网格箭头闯关类游戏。游戏内置上下左右四个方向的箭头,玩家需要按照正确顺序点击箭头。
核心游戏规则:
- 点击箭头后,系统检测箭头前进路径,路径无任何箭头阻挡时,箭头飞出棋盘并消除;
- 路径存在其他箭头阻挡时,箭头无法消除,触发晃动碰撞反馈,同时扣除一次失误次数;
- 每一关有固定失误次数,次数耗尽则本关游戏失败,可点击按钮重新开始;
- 清空当前关卡所有箭头即可通关,并自动进入下一关;
- 游戏共设计 3 个可手动通关的关卡,难度逐级递增。
游戏整体包含完整界面体系:开始游戏界面、游戏操作界面、通关胜利界面、游戏失败界面,布局清晰、操作简单,适配基础小游戏开发规范。
三、实现思路
1. 数据存储设计
所有关卡采用二维网格数组存储,通过行列坐标定位每一个箭头,记录箭头所在位置与朝向,空白网格不做数据存储,结构简洁清晰。
2. 核心路径检测原理(重点)
路径检测是本游戏的核心逻辑,实现方式如下:
- 获取当前点击箭头的方向、行列坐标;
- 根据箭头朝向,沿着同一行 / 列持续向边界遍历;
- 遍历过程中如果检测到其他箭头,判定为路径阻挡,触发碰撞反馈、扣除失误次数;
- 若一直遍历到棋盘边界都无任何箭头,判定为可消除,直接移除当前箭头。
3. 界面与交互实现
基于 Pygame 实现全部图形界面,手动绘制网格、箭头图形,不使用任何第三方素材,避免版权问题。实时渲染关卡数、剩余箭头数、剩余失误次数,鼠标悬浮箭头有高亮效果,碰撞时有红色晃动动画反馈。
4. 游戏状态管理
全程维护游戏状态:开始界面、游玩界面、通关界面、失败界面。支持关卡自动切换、失误次数统计、关卡重置功能,完整闭环游戏游玩流程。
四、AIGC 使用过程
| 子任务 | 借助何种 AIGC 技术 | AI 实现或提供了什么 | 效果如何 | 人工修改 |
|---|---|---|---|---|
| 路径检测 | DeepSeek | 生成上下左右四个方向路径检测完整代码 | 初始代码向上检测存在数组越界问题,边界判断不严谨 | 手动修改边界判断条件,限制坐标合法范围,修复越界 Bug,测试后四个方向检测全部正常 |
| 关卡设计 | DeepSeek | 自动生成 3 套不同尺寸的关卡数组 | 部分关卡存在箭头互锁死循环,无法通关 | 手动微调每一关箭头位置,逐关试玩验证,保证三关均存在合理通关顺序 |
| 碰撞动画 | GitHub Copilot | 编写箭头阻挡时的晃动动画代码 | 原始动画晃动速度过快,视觉反馈不明显 | 调整动画计时器参数、震动幅度,降低动画速度,碰撞提示清晰直观 |
五、测试结果
| 编号 | 测试内容 | 预期结果 | 实际结果 | 是否通过 |
|---|---|---|---|---|
| T01 | 点击前方无阻挡的箭头 | 箭头飞出棋盘并消失 | 箭头正常消除,无异常 | 通过 |
| T02 | 点击前方有阻挡的箭头 | 箭头不消失,失误次数减 1 | 箭头晃动提示,失误次数正常扣除 | 通过 |
| T03 | 点击边缘朝向棋盘外的箭头 | 箭头正常消失,无越界报错 | 边界判定正常,箭头顺利消除 | 通过 |
| T04 | 消除当前关卡全部箭头 | 显示通关,自动进入下一关 | 弹出通关界面,自动跳转下一关 | 通过 |
| T05 | 失误次数全部耗尽 | 显示失败,支持重新开始 | 弹出游戏失败界面,可重置关卡 | 通过 |
| T06 | 游戏中点重新开始按钮 | 箭头布局、失误次数恢复初始状态 | 关卡数据完全重置,恢复初始状态 | 通过 |
六、PSP 表格
| 任务 | 预估耗时(小时) | 实际耗时(小时) | 差异(小时) |
|---|---|---|---|
| 需求分析与游戏设计 | 1 | 1.5 | +0.5 |
| Python 与图形库学习 | 2 | 2 | 0 |
| 游戏界面实现 | 2 | 2.5 | +0.5 |
| 路径与碰撞逻辑实现 | 3 | 4 | +1 |
| 关卡设计 | 2 | 2.5 | +0.5 |
| AIGC 辅助开发 | 1 | 1 | 0 |
| 测试与修改 | 2 | 3 | +1 |
| README 与博客撰写 | 2 | 2 | 0 |
| 合计 | 15 | 18 | +3 |
七、心得体会
本次软件工程作业,我借助 AIGC 工具完成了一箭又一箭小游戏的完整开发,深刻体会到了 AI 辅助开发的便捷性与局限性。
AI 可以快速帮我搭建游戏基础框架、编写核心的路径检测代码、生成关卡数据和动画逻辑,极大减少了重复性的基础编码工作,大幅提升了开发效率。但 AI 生成的代码并不完美,存在数组越界、关卡死锁、动画效果不协调等各类 Bug,无法直接运行使用。
在不断调试、修改、测试的过程中,我深入理解了网格游戏的坐标逻辑、路径遍历算法和游戏状态管理机制,学会了排查代码错误、优化交互体验。同时也明白了,AIGC 只是辅助开发的工具,作为开发者,必须读懂代码、验证功能、修复缺陷,对项目的最终质量负责,不能完全依赖 AI。
本次作业不仅锻炼了我的 Python 编程能力,也让我熟悉了现代化 AI 辅助软件开发的完整流程,收获颇丰。
浙公网安备 33010602011771号