第三次作业 周杨威、吴原润、王迪、汪绍航、封晧君、顿耀伍
随笔
“待定”项目
一、项目概括
团队名称:WASD
项目名称:"待定"
项目组成员:周杨威(队长)、吴原润、王迪、汪绍航、封晧君、顿耀伍
采用团队软件团队模式:功能团队模式
项目概述:“待定”是一类避碰类小游戏,通过键盘控制任务在关卡内运动,穿过障碍到达终点。随着不断过关,关卡难度也会不断增加。其中还会出现各种道具,比如血包,可以增加三条命,时间胶囊可以增加倒计时时间。
开发工具:Visual Studio(外加easyX 库) 、Photoshop、Office
二、功能任务列表
序号 |
功能点· |
计划耗时/h |
功能实现情况 |
功能点负责人 |
1 |
增加游戏道具功能(血包、金币) |
5 |
实现血包道具 |
王迪、周扬威 |
2 |
添加剧情环节 |
5 |
实现开头、通关剧情 |
封皓君、顿耀伍 |
3 |
增加游戏音效(背景、碰撞、过关) |
3 |
实现不同关卡、死亡等各种音效 |
周扬威、吴原润 |
4 |
加入血量系统 |
1.5 |
实现 |
周扬威、吴原润 |
5 |
加入过关功能 |
1.5 |
实现 |
汪绍航、周扬威 |
6 |
优化游戏界面、关卡内界面设计 |
3 |
实现 |
顿耀伍、封皓君 |
8 |
难度变化 |
4 |
数量、 飞行方向 |
周扬威、王迪 |
9 |
增加移动障碍 |
3.5 |
实现 |
汪绍航、周杨威 |
10 |
数据统计模块 |
3 |
未实现 |
王迪、汪绍航 |
三、项目任务完成实时进度表(运行图片待汇总加入)
2019/11/19
a、 由调用本地目录下音频改为调用资源文件音频播放。
b、 将所有绘图坐标参数变量化——用以实现更改难度/分辨率扩展工作。
c、增加血量计数,增加代改问题。
2019/11/20
a、增加血量图形显示,解决碰撞穿模
2019/11/21
a、实现过关/切换地图。
b、修复了终点生成到地图外的的bug.
c、优化界面,调整字体,便于阅读.
d、添加了道具(血包),增加贴图,修复bug.
2019/11/24
a、实现过关后难度上升(障碍物增加)。
2019/11/26
a、实现移动障碍物,且每次过关可实现数量改变。
2019/11/28
a、实现斜向飞行、垂直下落障碍并存,更新通路检测,确保不会死路
b、增加了开场剧情,增加了死亡、最后十秒倒计时音效。
c、增加关卡到4关,修复了过关死亡bug
2019/11/29
a、增加游戏结束剧情、修改了游戏难度。
2019/12/2
a、2019/12/2修复bug,更新大量图片,音效。
b、换了背景音乐。
c、增加单元测试。
2019/12/3
a、最终版本,增加每一关不同贴图
2019/12/5
a、加入游戏暂停功能
团队合作照片
四、性能测试
从性能测试可见,游戏显示帧数较稳定、内存占用很低、没有太高性能要求。不过由于使用音频文件为wav格式,因而执行文件体积较大。
五、项目程序运行截图
1. 开场、结束都加入了剧情
2. 不同关卡之间区别:背景音乐、障碍物数量、有/无移动障碍物、限时时长
3. 血量耗尽游戏结束和时间到游戏结局画面不同,可在游戏中体验。
4、计时器(包括音效)、加血道具、血条。
5.更多功能未能一一列出。
六、单元测试
1、描述项目的测试工作安排
程序是在上次作业基础上完善而来的,由于上次作业中单元测试就很不顺利,这次计划专门花一天时间查阅相关资料。因为具有测试条件、且有测试需要的的函数很少,因而计划仅仅使用一天时间进行测试。
2、测试工具选择和运用
测试使用Visual Studio 2019 自带的本地 unit test 模块。
经过资料查阅,使用C语言的assert()函数替换C++的 断言语句。问题在于此语句检测到失败时是终止程序运行,但不能计入单元测试工具自带的统计中。
3、测试用例代码
#include "pch.h" #include "CppUnitTest.h" #include "../PairingProject/Painting.h" #include "../PairingProject/Model.h" #include "../PairingProject/Mydefine.h" #include <assert.h> using namespace Microsoft::VisualStudio::CppUnitTestFramework; void position_block(void); extern int p_block[2][150]; extern int p_goal[2][10]; namespace UnitTest1 { TEST_CLASS(UnitTest1) { public: int i; //int block_num = 10; TEST_METHOD(TestMethod1) { position_block(); i = check_path(); assert(i == 1); } }; } void position_block(void) { int i, j; for (i = 0; i < 10; i++) { p_block[0][i] = 2; p_block[1][i] = 1; } for (i ; i < 10; i++) { p_block[0][i] = 3; p_block[1][i] = 1; } for (i; i < 10; i++) { p_block[0][i] = 4; p_block[1][i] = 1; } for (i; i < 10; i++) { p_block[0][i] = 5; p_block[1][i] = 1; } for (j = 0; j < 1; j++) { p_goal[0][j] = 3; p_goal[1][j] = 2; } }
4、测试总结
本次测试虽然没有做很多模块,但是从中学习到了单元测试从新建工程、链接项目、编写测试用例的完整思路。
另外,在编写测试用例时深刻体会到,过度依赖全局/外部变量导致的关联文件过多、重复引用问题等造成的测试困难,对以后的程序编写有深刻警示作用。
代码仓库地址
https://gitee.com/zhouyangwei1/PairingProject