软件工程第二次个人作业:一箭又一箭(ArrowGame)

博客头部信息

项目 内容
这个作业属于哪个课程 软件工程
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/16717
这个作业的目标 使用 Python + Pygame 结合 AIGC 完成箭头解谜小游戏开发,掌握界面开发、游戏逻辑设计、路径检测算法、版本控制、软件测试与文档撰写,体验 AI 辅助软件开发完整流程
学号 102401307
GitHub 仓库 https://github.com/chentiantian-bot/arrow-game

一、项目展示

本项目为基于 Python + Pygame 开发的《一箭又一箭》箭头解谜小游戏。整体包含三大界面:开始界面、游戏主界面、结算界面(通关/失败),具备完整的交互动画、音效反馈、关卡机制、提示功能与美化效果,完全满足本次软件工程个人作业全部基础要求与加分拓展要求。

imageimageimageimage

二、项目介绍

2.1 游戏规则

游戏基于 8×8 棋盘网格,棋盘内随机分布上、下、左、右四个方向的箭头。玩家通过鼠标点击箭头进行操作:

1. 点击箭头后,程序沿着箭头指向逐格检测路径;

2. 若路径无任何箭头阻挡,当前箭头飞出棋盘、淡出消失,判定消除成功;

3. 若路径存在其他箭头阻挡,箭头无法消除、触发抖动动画,玩家扣除一次失误次数;

4. 每关默认拥有 3 次失误机会,失误次数耗尽则本关失败;

5. 清除当前关卡所有箭头即可通关,自动进入下一关卡;

6. 支持重置关卡、音效开关、智能提示等拓展功能。

2.2 界面功能说明

界面名称 功能描述
开始界面 展示游戏标题、玩法简介、开始按钮,附带动态小熊背景,按钮支持悬浮变色
游戏主界面 展示8×8棋盘、关卡编号、剩余失误次数,提供 Restart 重置、Hint 提示、Sound 音效开关三大功能按钮
结算界面 全部箭头消除后展示通关提示;失误耗尽展示 GameOver 失败提示,支持重新游玩

2.3 拓展加分功能

拓展功能 功能说明
动态小熊背景 底层背景图片自动左右往复移动,不遮挡游戏交互,美化界面
按钮 Hover 效果 所有功能按钮鼠标悬浮变色,提升交互体验
双动画反馈 成功消除箭头淡出透明动画、失败阻挡箭头抖动动画
Hint 提示功能 一键高亮当前所有可直接消除的箭头,辅助解谜
音效系统 成功消除音效、失败碰撞音效,支持一键开关

三、实现思路

3.1 数据结构设计

使用字典存储单个箭头信息,包含坐标与方向;使用列表批量存储多关卡箭头布局;使用常量统一管理四个方向偏移量,保证路径遍历统一规范。

3.2 核心路径检测算法

根据箭头方向持续迭代坐标,逐步向棋盘边界遍历。若中途检测到其他箭头判定阻挡,点击无效;若顺利走出棋盘无障碍物,判定可消除。本算法为游戏核心逻辑,保证所有箭头判定精准无误。

3.3 游戏状态管理

全程维护开始状态、游戏游玩状态两大状态机,实时管理关卡数、失误次数、动画状态、音效状态,实现界面切换、通关判定、失败判定逻辑闭环。

3.4 图层绘制逻辑

图层由下至上分层绘制:动态背景 → 棋盘网格 → 箭头元素 → UI文字与功能按钮,层级清晰,不会出现遮挡 bug。

四、AIGC 使用过程

子任务 借助何种AIGC技术 AI实现或提供了什么 效果如何 人工修改
路径检测逻辑 Kimi AI 生成四方向路径遍历、阻挡判断基础代码 基础逻辑可用,但向上检测存在坐标越界崩溃 重构循环判断顺序,先判断边界再检测箭头,彻底修复越界bug
多关卡布局设计 DeepSeek AI 自动生成3组关卡箭头布局数据 部分关卡无解、无法正常通关 人工调整箭头位置,逐关试玩验证,保证每一关都有合法通关路径
动画与界面美化 CodeGeeX AI 生成抖动动画、淡出动画、按钮交互代码 动画速度过快、按钮样式简陋、无背景 调整动画帧率、增加圆角按钮、新增动态小熊背景、完善hover效果

五、测试结果

编号 测试内容 预期结果 实际结果 是否通过
T01 点击无阻挡箭头 箭头成功消除 箭头淡出消失、播放成功音效 通过
T02 点击有阻挡箭头 无法消除、扣除失误 箭头抖动、失误-1、失败音效播放 通过
T03 点击边界朝外箭头 正常消除、无报错 运行稳定、无越界崩溃 通过
T04 清空所有箭头 通关并进入下一关 自动跳转下一关、通关提示正常 通过
T05 失误次数耗尽 游戏失败、可重置 弹出失败提示,Restart功能正常 通过
T06 中途重置关卡 关卡数据恢复初始 箭头、失误次数全部重置成功 通过

六、PSP 表格

任务 预估耗时(h) 实际耗时(h) 差异(h)
需求分析与游戏设计 2 2.5 +0.5
Python 与 Pygame 学习 2 1.5 -0.5
游戏界面基础实现 3 3 0
路径检测核心逻辑开发 3 4 +1
关卡设计与调试 2 1.5 -0.5
AIGC 辅助开发与改代码 2 2 0
功能测试与 Bug 修改 2 2.5 +0.5
文档与博客撰写 2 2 0
合计 18 19 +1

七、心得体会

本次软件工程个人作业,我完整借助 AIGC 完成了《一箭又一箭》小游戏的开发、调试、测试与文档编写。AI 能够快速生成基础框架、核心算法、界面代码,极大提升了开发效率,但 AI 生成的代码普遍存在逻辑漏洞、边界错误、体验不佳、关卡不合理等问题。通过本次开发,我深刻意识到 AI 只是辅助工具,真正的软件开发需要开发者读懂代码、手动调试、验证逻辑、优化体验、修复缺陷。

同时我规范使用 GitHub 进行分阶段迭代开发,每完成一个功能就提交一次 commit,实现了软件开发的阶段性可控、可追溯。本次作业让我完整体验了小型软件从需求、设计、编码、测试到文档的全流程,对软件工程的开发规范有了更加直观、深刻的理解。

八、游戏阶段性迭代调整过程(阶段一~阶段十一)

本小游戏并非一次性写完,而是分 11 个开发阶段逐步迭代、不断调整、优化、修 Bug、加功能,完全对应 GitHub 的多次提交记录,以下是完整迭代过程:

阶段一:基础窗口搭建与棋盘绘制

最初仅完成 Pygame 窗口初始化、窗口标题、基础画布渲染,搭建游戏运行环境。绘制 8×8 网格棋盘,确定整体界面尺寸与布局,为后续箭头渲染打下基础。对应首次提交:完成基础界面框架。
e9674c19-ca0a-4cd2-a0b4-112e31ff320e
f77f7e57-2af3-4c4a-afe5-f6298dce3d39

阶段二:箭头数据结构与方向定义

定义上下左右四个方向常量、坐标偏移量,设计箭头字典数据结构,实现箭头在棋盘对应坐标的静态显示。此时箭头仅能展示,暂不支持点击交互。
4316f2cd-adb8-430b-96d4-0c9d776888b8
f34f7583-62a2-4afb-a8d0-0ba59acc681e

阶段三:实现四方向基础路径检测

编写核心路径遍历逻辑,实现向右、向左、向下、向上四个方向的路径判断,初步实现箭头阻挡检测功能。但此阶段存在向上检测坐标越界漏洞,偶尔导致程序闪退。
afc7a438-8b1f-427f-b757-ea8206e26d44

阶段四:修复边界越界 Bug

针对阶段三出现的数组越界问题,重构循环执行顺序,优先判断坐标是否超出棋盘边界,再进行箭头碰撞检测,彻底解决程序崩溃问题,逻辑稳定性大幅提升。

阶段五:加入点击交互与失误机制

增加鼠标点击监听,区分有效点击与无效点击。加入失误次数统计逻辑,点击阻挡箭头自动扣除失误次数,界面实时展示剩余失误次数,游戏初步具备完整游玩逻辑。
62eb0e35-2f61-4680-8a87-89f5bae88c16

阶段六:增加动画视觉反馈

为成功消除添加淡出动画,为错误阻挡添加箭头抖动动画。解决 AI 初始动画速度过快问题,调整帧率与动画时长,让操作反馈更加自然流畅。

阶段七:设计多关卡与通关逻辑

搭建多关卡数组数据,设计 3 组可游玩关卡,实现清空全部箭头自动进入下一关的逻辑。修复 AI 生成的无解关卡,人工微调箭头位置,保证每一关都可以正常通关。
4d221552-5122-4ae5-ac65-64238ac6a532

阶段八:开发功能按钮与重置机制

新增 Restart 重置按钮,实现随时重置当前关卡布局、恢复初始失误次数。同时布局 Hint 提示按钮、Sound 音效按钮,完善游戏操作体系。
a9e060a3-6778-4e53-8282-3d6552e515c4
1f85ca70-2ceb-4e93-83d8-f1ad1aeb3199

04aeb3a5-d726-47b5-9ff8-cdfc23c042a9

阶段九:拓展提示功能与音效系统

实现 Hint 一键提示功能,自动识别当前可消除箭头。导入成功、失败双音效,增加音效开关逻辑,丰富游戏反馈层次。
619a0fa6-d1a6-469e-94f9-89ac72adcaea
c6637c4a-5764-415e-b6a2-263868370c7b

阶段十:界面美化与交互优化

添加动态小熊移动背景,替换单调纯色背景。为所有按钮增加鼠标悬浮变色效果、圆角样式,优化文字排版、界面配色,整体美观度大幅提升,完成加分项全部功能。

阶段十一:整体测试、调优与文档完善

对全部功能进行系统性测试,修复细微交互瑕疵、统一代码格式、优化运行帧率。完善 README 文档、游戏说明、提交记录整理,完成软件工程作业全部规范要求,项目最终定型。
6b480ce0-8fb6-44a9-a25f-a3f11c42a157
10b8729605b1e380a67ddab0995fb1ed

通过以上十一阶段的迭代开发,项目从空白窗口 → 基础功能 → 核心算法 → 动画音效 → 美化拓展 → 稳定成品,层层递进,完全符合软件工程增量迭代开发思想。