高级语言程序设计大作业实验报告
一. 作业题目
基于qt制作的平面2d小游戏 Genshin_Pursuit
二. 开发软件
QT5.14.2 + vscode
三. 课题要求
- 面向对象
- 单元测试
- 模型部分
- 验证
四. 主要流程
1. 实现思路
a. 构建基本场景
首先构建场景之间的框架。游戏中,首先构建StartScene类,来负责游戏的开始界面;然后构建MainScene,负责游戏的主要内容,在MainScene中,构建四个按钮,通过信号和槽的机制,链接四个场景,分别为ChooseScene、MyEquipment、hotel、introduction,对应负责游戏关卡的选择、装备的购买,角色属性的更新,金币的消耗、进入酒店回复血量,消耗金币、游戏介绍;在CHooseScene类内部,设置三个按钮,同样通过信号和槽的机制来连接三个主要的游戏关卡
b. 构建游戏角色
实现MainCharacter类的人物构建,属性的存储,实现arrow类来储存记录角色的输出箭矢,实现了箭矢的移动逻辑和动画
c. 构建游戏怪兽
实现qqren、qqking、syfs三个类,实现各自的移动和怪物本身的技能特效,即丘丘王的冲刺,深渊法师的瞬移,深渊法师的减速
d. 游戏逻辑的实现
在scene01、scene02、scene03之中,实现了角色的攻击逻辑,根据关卡的通过次数,改变怪兽的本身属性,类内实现了怪物的随着时间生成,怪物随着时间释放技能,被攻击后死亡的特点,实现了通过键盘事件类掌控角色的移动
2. 实现方法
a. QT中的信号和槽的机制,在connect函数中使用lamada表达式,即匿名函数
b. 实现碰撞逻辑,包括角色射箭和怪兽的碰撞和角色本身和怪兽碰撞
c. 计时器的使用,在控制各种技能移动时都使用了移动的逻辑
d. 鼠标事件和键盘事件的重写
五. 测试
在本游戏的每个发布阶段都寻找了内测玩家,多次测量相关关卡,包括三个游戏场景,旅馆和装备的逻辑,综合测试得到本游戏的内容稳定
六. 收获
- 对lamada表达式的掌握,能做到将lamada表达式用于后续cpp的算法题目
- 对继承和类之间的深入理解,如何能实现代码的精简化
- 熟练掌握了github的使用,加深了对开源的理解,通过重写实现了角色的移动和攻击
七. 反思
某些本可以使用类的继承语法的地方没有使用,而是之间复制粘贴,增加了不必要的代码量,影响后期版本迭代