软件工程第二次作业
一箭又一箭小游戏开发实践
博客开头信息
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering |
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/16717 |
| 这个作业的目标 | 使用 Python 和 AIGC 完成“一箭又一箭”小游戏,实现游戏设计、程序开发、测试以及项目文档整理 |
| 学号 | 102401435 |
| GitHub 仓库 | https://github.com/1530017982/ArrowGame |
项目介绍
项目名称: 一箭又一箭小游戏
开发语言: Python
开发框架: Pygame
开发工具: Visual Studio Code
项目类型: 2D 益智小游戏
项目地址
GitHub:
https://github.com/1530017982/ArrowGame
一、项目简介
本项目使用 Python 和 Pygame 开发,实现了一款类似“一箭又一箭”的点击式解谜小游戏。
玩家需要观察棋盘中箭头的方向,判断箭头前方是否存在阻挡,并选择正确的箭头进行消除。
游戏包含:
- 多个关卡
- 箭头移动检测
- 碰撞判断
- 错误反馈
- 失败界面
- 重新开始
- 撤销操作
通过完成关卡,提高玩家的观察能力和逻辑判断能力。
二、游戏展示
1. 开始界面


游戏启动后进入开始界面。
主要功能:
- 初始化游戏窗口
- 加载资源
- 初始化游戏数据
- 等待玩家开始
2. 游戏界面


游戏界面显示:
- 当前关卡
- 剩余箭头数量
- 剩余错误次数
- 重新开始按钮
- 撤销按钮
玩家点击箭头进行操作。
3. 胜利界面


当所有箭头成功消除后:
- 当前关卡完成
- 自动进入下一关
- 重新生成新的箭头布局
4. 失败界面


当错误次数耗尽:
- 游戏结束
- 显示失败界面
- 玩家可以重新开始
三、开发环境
软件环境
| 软件 | 版本 |
|---|---|
| Python | 3.10+ |
| Pygame | 2.x |
| Visual Studio Code | 最新版 |
安装依赖
pip install pygame
运行:
python main.py
四、游戏设计
1. 游戏流程
开始界面
↓
进入游戏
↓
点击箭头
↓
判断是否阻挡
↓
成功 → 消除箭头
失败 → 错误次数减少
↓
全部完成
↓
进入下一关
五、程序实现
1. 游戏对象设计
每个箭头包含:
- 坐标位置
- 移动方向
- 存活状态
- 动画状态
例如:
arrow = {
"x":100,
"y":200,
"direction":"right"
}
2. 箭头碰撞检测
点击箭头后,程序会根据箭头方向检测前方区域。
向右箭头
检测右侧是否存在箭头。
向左箭头
检测左侧是否存在箭头。
向上箭头
检测上方是否存在箭头。
向下箭头
检测下方是否存在箭头。
如果检测到阻挡:
- 箭头无法消除
- 播放碰撞反馈
- 错误次数减少
如果没有阻挡:
- 箭头消失
- 剩余数量减少
六、撤销功能实现
为了提高游戏体验,增加了撤销功能。
实现思路
每次玩家操作前保存当前状态:
保存内容:
- 箭头列表
- 错误次数
- 游戏状态
示例:
history.append(state)
点击撤销按钮:
undo()
恢复上一状态。
七、游戏状态管理
游戏主要包含以下状态:
start
game
success
fail
分别对应:
| 状态 | 功能 |
|---|---|
| start | 开始界面 |
| game | 游戏界面 |
| success | 胜利界面 |
| fail | 失败界面 |
通过状态切换实现不同页面显示。
八、AIGC辅助开发过程
1. 游戏框架设计
使用 ChatGPT 辅助:
- 分析项目结构
- 设计游戏流程
- 生成基础代码框架
2. 功能开发
AI帮助完成:
- 箭头对象设计
- 碰撞检测逻辑
- 游戏状态管理
- 撤销功能设计
3. Bug调试
开发过程中遇到:
- Git提交冲突
- 图片路径错误
- 变量未定义
- 游戏逻辑错误
通过分析错误信息:
逐步修改程序,最终完成稳定版本。
九、项目测试
| 测试编号 | 测试内容 | 测试结果 |
|---|---|---|
| T01 | 游戏启动 | 通过 |
| T02 | 开始界面显示 | 通过 |
| T03 | 点击箭头功能 | 通过 |
| T04 | 碰撞检测 | 通过 |
| T05 | 错误反馈 | 通过 |
| T06 | 关卡切换 | 通过 |
| T07 | 失败界面 | 通过 |
| T08 | 撤销功能 | 通过 |
十、PSP项目记录
| 阶段 | 预计时间 | 实际时间 |
|---|---|---|
| 需求分析 | 1小时 | 1小时 |
| Pygame学习 | 2小时 | 2.5小时 |
| 界面设计 | 3小时 | 3小时 |
| 游戏逻辑开发 | 3小时 | 3.5小时 |
| 测试修改 | 2小时 | 2.5小时 |
| 文档整理 | 3小时 | 3小时 |
十一、开发总结
通过本次项目开发,我学习了使用 Python 和 Pygame 完成完整小游戏的方法。
主要收获:
- 掌握 Pygame 游戏循环设计
- 学习鼠标事件处理
- 理解碰撞检测算法
- 掌握游戏状态管理
- 学会使用 Git 进行版本控制
同时,在开发过程中使用 AIGC 工具辅助:
- 提高开发效率
- 快速定位问题
- 优化程序结构
但是 AI 生成代码仍需要结合实际运行情况进行测试和修改。
最终完成了一款具有:
- 多关卡
- 箭头检测
- 动画反馈
- 撤销功能
的完整小游戏项目。
Thanks
感谢老师指导。
感谢 ChatGPT 在项目设计、代码分析和调试过程中的辅助。
浙公网安备 33010602011771号