AIGC标识 软件工程第二次作业

2026 秋软件工程个人作业(第二次)

项目内容 内容
这个作业属于哪个课程 2026软件工程
这个作业要求在哪里 第二次个人作业
这个作业的目标 使用 Python 和 AIGC 完成“一箭又一箭”小游戏
学号 102401421
GitHub 仓库 Arrow_after_Arrow

一、项目展示

开始界面

start-screen

游戏界面

game-screen

全部通关界面

complete-screen

失败界面

failed-screen

游戏演示视频

game-demo-full

二、项目介绍

“一箭又一箭”是一个点击式箭头解谜游戏。棋盘中的箭头分别朝上、下、左、右。点击箭头时,程序会检查它前进方向直到棋盘边界的所有格子:如果没有其他箭头,箭头就沿当前方向飞出并消失;如果存在阻挡,箭头会变红、向前轻撞后退回,同时扣除一次失误机会。每关有 3 次失误机会,清除全部箭头后进入下一关,机会耗尽则可以重新挑战。

项目包含 3 个固定关卡、开始与结果界面、剩余箭头和失误次数显示、重新开始功能,以及飞出和碰撞动画。所有图形均由程序绘制,没有使用原商业游戏素材。

三、实现思路

每支箭头使用编号、行、列和方向表示,行列索引从0开始。关卡保存棋盘尺寸、初始箭头集合和允许失误次数,重新开始时恢复初始数据。

路径检测不需要遍历整个二维数组。程序遍历当前仍存在的箭头,只保留与被点击箭头处于同一行或同一列、并且严格位于其前进方向上的箭头。如果没有这样的箭头,路径畅通;如果有,则距离最近的一支是首次碰到的阻挡物。规则层不依赖 Pygame,因此可以单独进行自动化测试。

路径检测关键代码:

dr, dc = arrow.direction.delta
row_gap = other.row - arrow.row
col_gap = other.col - arrow.col
same_ray = (
    (dr == 0 and row_gap == 0 and col_gap * dc > 0)
    or (dc == 0 and col_gap == 0 and row_gap * dr > 0)
)

dr 表示沿箭头方向前进一格时的行号变化,dc 表示列号变化:上、下、左、右分别对应 (-1, 0)(1, 0)(0, -1)(0, 1)。代码先判断另一支箭头是否同行或同列,再通过差值与方向增量的乘积是否大于 0,判断它是否位于前方。

三个关卡使用固定数据,难度通过增加阻挡依赖逐步提升。

四、AIGC 使用过程

使用工具为ChatGPT / Codex。我负责提出需求、选择风格、试玩和反馈,代码与测试修改由Codex完成。

子任务 AIGC 工具 提出的要求 AI 实现或提供了什么 实际效果 审核与修改
需求与结构设计 ChatGPT / Codex 使用 Python 完成基础玩法,米白简约风,并保留过程和计时 拆分规则、关卡、主题、界面和测试模块 覆盖了基础评分项,样式可独立替换 决定先完成基础版,暂不加入计时、道具和随机关卡
路径检测与关卡 ChatGPT / Codex 实现四方向判断和至少 3 个可通关关卡 生成规则模块、固定关卡和求解器 三关均找到完整解 补充边界与重开测试,后续简化求解器
界面与动画调试 ChatGPT / Codex 制作米白简约界面、飞出和碰撞反馈 绘制三类界面与两类动画,并生成实际截图 首次运行出现字体异常,首次有效截图还发现底部重叠 改为直接加载中文字体文件,缩小棋盘最大尺寸;复核截图后正常
连续点击节奏 ChatGPT / Codex 本人试玩发现动画期间不能点下一支,要求改善节奏 将全局动画锁改成并行动画列表 第一支仍在飞行时可以立即点击下一支 防止碰撞期间重复扣错;阻挡解除后可立即重试
结果页导航修复 ChatGPT / Codex 本人提供截图并反馈“返回首页”无法点击 分析点击处理和逐帧状态切换 发现按钮实际已响应,但旧通关状态在下一帧重新打开结果页 限制结果跳转只能从游戏页面触发,并测试通关、全部通关和失败三种情况

五、测试结果

编号 测试内容 预期结果 实际结果 是否通过
T01 点击前方无阻挡的箭头 箭头飞出棋盘并消失 返回 removed,箭头从状态中删除 通过
T02 点击前方有阻挡的箭头 箭头不消失,失误次数减 1 返回 blocked,保留箭头并从 3 次减为 2 次 通过
T03 点击边缘且朝棋盘外的箭头 正常消失,不越界 四个方向的边缘用例均正常删除 通过
T04 消除本关全部箭头 显示通关并进入下一关 状态变为 won,界面动画结束后显示结果页 通过
T05 失误次数耗尽 显示失败并允许重新开始 连续 3 次受阻后状态变为 lost 通过
T06 游戏中重新开始 布局和失误次数恢复 初始箭头和 3 次机会均恢复 通过

六、PSP 表格

任务 预估耗时(小时) 实际耗时(小时) 差异(小时)
需求分析与游戏设计 0.6 0.7 +0.1
Python 与图形库学习 0.9 0.6 -0.3
游戏界面实现 1.7 2.1 +0.4
路径与碰撞逻辑实现 1.4 1.6 +0.2
关卡设计 0.9 1.2 +0.3
AIGC 辅助开发 0.8 1.1 +0.3
测试与修改 1.3 1.8 +0.5
README 与博客撰写 1.6 2.0 +0.4
合计 9.2 11.1 +1.9

七、心得体会

通过这次作业,我认识到,利用AIGC可以加快从提出需求到实现可运行程序的过程,但我们仍需亲自测试和优化。例如,程序中的箭头按钮需要等待动画结束才能再次点击,影响了连续操作。我将问题反馈给Codex,通过调整点击响应与动画处理逻辑,解决了这一问题。因此,使用AIGC时不能过度依赖,只有实际运行程序、发现问题并不断改进,才能使程序符合使用需求。

posted @ 2026-09-15 23:50  SiJiu0801  阅读(6)  评论(0)    收藏  举报