原开发仓库(如果号还活着):https://git.nju.edu.cn/dieWehmut/mygame0
该游戏是基于 C++和 qt (widget)框架开发的动作冒险游戏,
由类幸存者游戏中拓展而来
玩家需扮演一名👻幽灵,在游戏世界中与敌人交战并收集情报
构思游戏玩法,创建地图和可活动单位,添加基本界面
完善各个可活动单位的功能,添加多个界面和按钮,添加 bgm
情报设置,实现存档和读档、全部游戏设计和数值调整
完成最终版本,打包游戏,测试可移植性
玩家通过WASD控制幽灵移动,按空格释放波
可存档和读档,并且能在外部修改存档再读入(数值太离谱可能会崩溃,比如速度太大)
根据不同的条件会玩家有不同的结局
目前只设计了一个地图(留有第二个地图但是没用上),21×25,格子大小为 1024×1024
玩家可视区域边界实时拓展
不同格子有着不同的功能(有一些没来得及做),如:
xxPhantomBase 为 xxPhantom 生成点
portalStart,portalEnd 分别为传送门起点和终点
mazeExit 为迷宫出口
有gameManager管理Map和ActiveObject等
ActiveObject:活动单位基类,有速度,范围指示器等,会发生碰撞
Player:继承ActiveObject,三种状态,有传送次数,护盾等
PhantomBase:继承ActiveObject,前期随机游走,后期锁定玩家
FlamePhantom:继承PhantomBase,近战攻击会击退玩家,范围减速🔥
LurkerPhantom:继承PhantomBase,有护盾,能闪现⚡
King:继承PhantomBase,多个PhantomBase聚集生成一个,能伤所有非己👑
Wave:继承ActiveObject,所有波的基类,有移向,射程等
PlayerWave:继承Wave,3 发,可加强,可击退、穿透、群伤
FlameWave:继承Wave,1 发,使玩家燃烧,持续 3 秒
LurkerWave:继承Wave,5 发
KingWave:继承Wave,8 个方向,仅击退玩家
mainWindow 使用栈包含开始,游戏,存档,情报等界面(设置界面暂时没写) 存档界面8个存档框,可覆盖存档
WASD 和空格操作玩家,射击方向为玩家最后移动的方向
玩家波类碰撞PhantomBase类和其他波类以及传送时有音效,拾取掉落物会有强化,如视野扩大等
1 个上次游戏文件和 8 个存档框,序列化存储倒计时秒数、DropItem和所有ActiveObject等
玩家拾取flamePhantom和lurkPhantom的DropItem分别有不同的强化 如flamePhantomDrop的强化顺序为:atk,sightRange,aoeRadius、atkRange...
FlamePhantom 范围减速 玩家波的伤害范围增强 第一次倒计时结束后,部分 PhantomBase 加强
充分运用 C++面向对象特性, h 和 cpp 文件总和 30+,变量名用小驼峰,类和文件名大驼峰,注释和变量名清晰明确
由情报引导真结局,难度中上
gui 文件数较多,不同界面和情形对应不同 bgm
有一个**结局文件(.josn)**📄,记录结局是否达成,达到一定数量的结局后多达成一个结局多一个情报
同时还有多个json文件可在外部修改
PhantomBase类的数量都有最大上限
共两次倒计时⏰,第一次倒计时结束时音乐切换为trapped1,同时加强部分PhantomBase
第二次倒计时开始后传送门失效🚫,玩家可突破包围圈
玩家达到第 3 个结局时情报界面开始增加信息指导玩家
其中迷宫出口位于左上角(1,1)和右下角,地图对称🔄
PhantomBase也能随机传送
视野扩大后视野圈会跟着变大👁️,虽然有上限但是可在存档修改视野直接填满窗口
剧透结局设计:
deadEnd💀:玩家血量<=0
lostEnd🔄:传送次数达到一定次数
fakeEnd⏳:第二次倒计时结束
trueEnd✨:在迷宫出口停留几秒