作业信息
| 这个作业属于哪个课程 | 首页 - 计科23级34班 - 广东工业大学 - 班级博客 - 博客园 |
|---|---|
| 这个作业要求在哪里 | 团队作业3--需求改进&系统设计 - 作业 - 计科23级34班 - 班级博客 - 博客园 |
| 这个作业的目标 | 明确团队项目细节 , 熟悉团队git的协作方式 |
需求&原型改进
问题与修改
- 问题1:"敌机系统”和“生命系统”的描述过于静态,缺乏动态的、影响游戏节奏的规则。
- 修改1:引入“关卡波次”和“BOSS机制判定”。
- 关卡波次: 敌机不再是无尽地出现,而是以“波次”为单位。清理完一波敌机后,下一波敌机更强、更多。每5波出现一个中型BOSS,每10波出现一个大型BOSS。这给玩家提供了明确的短期目标和节奏感。
- BOSS机制判定:游戏中的BOSS存在一定弱点,需要通过特定手段击破弱点致其瘫痪或者大幅降低血量,否则则会进入更加强烈的攻击或者抗性提高
- 同时,不同的BOSS存在不同的攻击方式,玩家需要学会了解其攻击机制并进行策略反击
- 修改1:引入“关卡波次”和“BOSS机制判定”。
- 问题2:游戏情感链接薄弱,玩家对游戏缺乏情感追求。
- 修改2:引入“故事模式”,在游戏过程中进行故事叙述,包括BOSS的故事背景,同时对商店里的每架飞机设计独特的故事背景
- 问题3:缺乏对商店物品的内容描述
- 修改3:新飞机解锁:不同的飞机具有不同的攻击力,防御力以及生命值,越高级的飞机可以解锁更加强大的功能
- 飞机皮肤:可以修改飞机外观,使得飞机更加好看
- 特殊武器:不同的子弹会造成不同的输出效果,具体内容如下:
- 1.普通子弹,数量无限但输出一般
- 2.强化子弹,数量有限但输出较高,可以对付血量较高的敌机
- 3.特化子弹,数量有限且输出略高,但在特定情况下,可以对付一些特殊的BOSS
- 临时增益道具,可以不同程度地对玩家战机进行属性buff加成,比如提升生命值上限,提升防御力或者恢复当前血量
- 修改3:新飞机解锁:不同的飞机具有不同的攻击力,防御力以及生命值,越高级的飞机可以解锁更加强大的功能
- 问题4:游戏缺乏明确的阶段性目标,玩家只是“生存”,动力不足。
- 修改4:引入“关卡制”和“任务系统”
- 将游戏分为若干关卡,每关有若干波小敌机和至少1个关底BOSS。
- 每关开始前显示简单任务,如:“第1关任务:击落20架小型敌机”。
- 完成任务可获得额外分数奖励,并解锁下一关卡。
功能分析的四个象限
根据需求分析规格书,我们将其分为如下象限:
| 象限 | 功能类型 | 具体功能 | 功能描述 | 开发优先级 |
|---|---|---|---|---|
| 第一象限 | 输出功能 | 核心战斗循环 | 60FPS稳定运行、精准碰撞检测、即开即玩 | 最高 |
| 敌机与BOSS系统 | 多种行为模式(直线、冲锋、散射)、关底BOSS战 | 最高 | ||
| 操控与反馈 | 键盘控制、射击效果、爆炸动画、生命值系统 | 最高 | ||
| 第二象限 | 外围功能 | 任务系统 | 关卡任务(如击落20架敌机)、提供短期目标 | 高 |
| 挑战模式 | 固定序列关卡 | 高 | ||
| 新手引导 | 前几关难度降低、被击中后短暂无敌 | 高 | ||
| 第三象限 | 必要需求 | 进度存档 | 关卡选择、游戏进度保存 | 中 |
| 排行榜 | 本地最高分记录(前10名) | 中 | ||
| 设置选项 | 音量调节、全屏/窗口切换 | 中 | ||
| 第四象限 | 辅助需求 | 解锁系统 | 飞机和皮肤解锁、成就/金币获取 | 低 |
| 成就系统 | 高难度成就(如一命通关) | 低 | ||
| 故事系统 | 背景故事、世界观构建 | 低 |
任务拆解WBS

系统设计
-
场景层
- Window:初始化窗口、规定分辨率
- UI:主菜单、商城、设置、生命值与分数的显示
- Render:射击效果、爆炸效果、动画播放等
- Audio:BGM和音效
-
逻辑层
- Entity:管理所有实体,处理实体的创建和销毁
- Player:飞机控制、生命值
- Enemy:敌机的生成、攻击模式、移动模式、boss的额外逻辑
- Combat:伤害计算、分数计算、碰撞检测逻辑
- Level:难度曲线
- Power:道具生成、道具效果
-
数据层
- Data:金币和购买内容的存档、游戏配置(长时间保存)
- Config:游戏难度的平衡(例如敌人血量、数量、伤害)
- Board:排行榜数据的存储、排序
Alpha任务分配计划
优先级分配
- 高优先级
- 飞机控制、敌机移动与攻击逻辑
- 碰撞检测、生命系统
- 主菜单和游戏界面
- 分数统计系统
- 中优先级
- boss逻辑
- 商城系统
- 排行榜
- BGM和音效
- 低优先级
- 多种可操控飞机类型
- 道具
任务分解
- 场景层
- 窗口初始化:初始化pygame窗口,设置分辨率
- 基础UI:实现主菜单界面、生命值和分数显示、按钮交互
- 渲染系统:动画播放、简单的爆炸效果
- 逻辑层
- 实体管理系统:实现所有实体的管理器,实现实体的创建和销毁逻辑(同时要避免频繁地创建和销毁)
- 玩家控制系统:飞机移动逻辑、子弹发射逻辑、碰撞检测
- 敌机系统:敌机的生成、移动和攻击,碰撞检测
- 战斗系统:伤害计算、分数计算、生命值计算
- 数据层
- 数据存储:玩家生命值和分数、游戏配置、排行榜数据(长时间存储)
Alpha阶段计划
- 目标:完成基础demo
- 具体完成目标
- 游戏窗口:正常启动
- 主菜单界面:正常显示,按钮正确交互
- 玩家的移动和攻击:能够正常移动和攻击
- 敌机的生成和基础移动、攻击:能正常生成、移动、攻击,能够被玩家击落
- 碰撞检测系统和生命系统:碰撞检测做到正常运行,生命系统能够正确统计
- 初步的分数统计和显示:分数能够伴随敌机的击落正常统计
- 时间安排
- 基础框架(1天):窗口初始化、项目结构、实体管理器(需要提前设计定义清晰的接口)
- 核心功能(2天):玩家控制系统、基础敌机生成系统、碰撞检测
- UI和数据(1天):主菜单和游戏界面UI、数据管理系统
- bug修复和性能优化(2天)
Product Backlog:

Sprint Backlog:

甘特图:

测试计划
测试内容:
游戏内容测试
- 玩家飞机
- 加载贴图 : 验证玩家飞机贴图是否正常加载
- 位置与状态更新 : 测试键盘控制飞机移动的流畅性
- 射击 : 验证玩家飞机射击功能,包括子弹发射频率、轨迹
- 敌机
- 加载贴图 : 验证敌机各类别贴图是否正常加载
- 随机调整位置 : 测试敌机生成位置的随机性,是否存在边界问题
- 发射子弹 : 验证敌机子弹发射功能,包括频率、伤害逻辑
- 游戏初始界面
- 渲染页面元素 : 检查初始界面的按钮、背景、标题等元素显示
- 事件监听 : 测试 “开始游戏”“退出游戏” 等按钮的点击响应
- 游戏结束界面
- 渲染页面元素 : 检查结束界面的分数显示、提示文字、按钮等元素
- 事件监听 : 测试 “重新开始”“退出游戏” 按钮的点击响应
- 重置游戏
- 清空所有精灵组 : 验证游戏重置时,所有飞机、子弹等精灵是否清空
- 重置游戏状态 : 测试分数、关卡等游戏状态是否重置为初始值
- 创建新玩家 : 验证重置后玩家飞机是否重新生成且状态正常
- 创建初始敌机 : 验证重置后敌机是否按初始逻辑生成
数据安全测试
- 数据本地保存
- 保存位置无误 : 验证游戏数据文件保存位置准确无误
- 数据有效保存 : 测试游戏数据是否能正常保存 , 保存的游戏数据是否出错
- 数据本地读取
- 读取与保存一致 : 验证数据读取位置与保存位置一致 , 保证不会错误地进行非法读取
- 读取内容有效性 : 测试从本地游戏数据文件读取出来的数据是否正确 , 有效
游戏性能测试
- 游戏内存占用测试 : 测试游戏各流程的内存占用 , 确保不会出现异常占用
- 游戏稳定性测试 : 测试游戏长时间运行游玩的稳定性 , 确保不会存在漏洞导致内存泄漏等问题而崩溃
- 游戏帧率测试 : 测试游戏过程帧率稳定 , 不会出现异常掉帧的情况
测试工具:
使用:
- cProfile 进行性能分析
- memory_profiler 进行内存使用分析
- unittest 进行单元测试
- PyAutoGUI 进行自动化测试界面