这不是作业,是作品
游戏成品体验可以在这里下载: https://pan.baidu.com/s/1UKuK9dSbHsdhsc9SedR6AA 提取码:1606 直接找到exe文件运行就可以啦,另外有一个文本文档为游戏说明,由于我用户体验方面做得不好,所以大家可以先看看这个文档熟悉游戏操作。如果下载太慢但话可以私信我直接qq发源文件。(源代码在最后面)
另外实训的时候有一篇记录日志、笔记、心得的博客,链接在这里: QT学习日志(附:简易计算器,qq登录界面,简易绘图板,植物大战僵尸魔改版项目实践) 里面有与本博客相关的内容,大家可以看一看
本项目为笔者大一暑假实训的结业项目,是对这段时间的学习与c++基础、开发软件的能力的综合考验。本项目名字为植物大战僵尸魔改版,以飞机大战的游戏模式为载体,采用植物大战僵尸、我的世界等游戏的一些元素设计而成,项目运用了信号与槽、多线程与事件监听,除此之外还涉及到内存管理,碰撞检测等系列难题,是这段时间c++实训成果的展示。
游戏借鉴了植物大战僵尸beta版的游戏风格。游戏共有9种模式加上无尽模式,五张背景,6种形态的植物以及24种子弹,并附带有植物大战僵尸的原生音效,鼠标可以控制植物,击杀僵尸后获得分数,分数达到一定的值植物会升级:
植物的属性: 1阶.(0分): 无效果 2阶.(2100分):双发 3阶.(4200分): 寒冰 被击中后僵尸射速减半(不是减移速) 有声效 4阶.(7200分) 闪光豌豆 必杀(且有寒冰效果) 5阶.(12000分) 谱尼 穿透 (有之前的效果) 6阶.(21000分) 闪光谱尼(分数21000) 什么类型的子弹都可以发射 (肥料 玉米卷 留声机 钱袋 浇水壶 巧克力……)
死亡条件是被僵尸的子弹击中15次。约半分钟更新一次游戏模式: 分别为: Crazy bullet/Drown/大睡天/Crazy bullet 2/僵尸舞会/僵尸狂暴 僵尸狂潮/Crazy bullet 3/僵尸隐形/无尽模式
本项目开发环境为Qt开发,语言为c++
分为四个部分: 第一部分为必要部分,为main函数,主窗口类与ui头文件 第二部分为植物子弹类和其产生、运动的线程类 第三部分为僵尸类和其产生、运动线程类 第四部分为僵尸子弹类和其产生、运动的线程类
游戏背景:(节选一张,共五张) 植物、僵尸与子弹 失败界面:
这里无法预览声音,简单来说就是bgm为两首歌经过点点处理,音效来自pvz和mc。
由上图我们可以知道,写完子弹的产生与运动类,僵尸与僵尸的子弹相关类就可以依葫芦画瓢。但写子弹相关类的时候我确实遇到了一些问题,例如子弹储存在哪个类中,产生的子弹如何储存,消失的子弹如何处理,内存成了这次实训最大的问题,到实训结束都没有解决,只能等到以后系统学习相关知识的时候才能再优化一下。关于内存的心得依然在这篇博客里有谈到:QT学习日志 笔者通过多次调试,最终决定将子弹数组以QList的形式储存在子弹运动线程类的头文件中,每隔一段时间QList里的所有子弹都要运动,如果子弹符合消失的条件就清除子弹并释放其内存空间。子弹产生的线程负责每隔一段时间就产生子弹,并将子弹(通过主窗口类)传给子弹运动的线程类中,信号参数里为一个子弹对象.
在上找了一些关于碰撞检测的方法,最后放弃了,自己想了一种最原始的方法 鼠标每移动一次,要向主窗口发射植物的位置信号,同时接收每个僵尸子弹的位置信号,做碰撞检测 每个子弹每移动一次,要向主窗口类发射子弹的位置信号,同时接收每个僵尸的位置信号,做碰撞检测 每个僵尸每移动一次,要向主窗口类发射僵尸的位置信号,同时接收每个子弹的位置信号,做碰撞检测 每个僵尸子弹每移动一次,要向主窗口类发射僵尸子弹的位置信号,同时接收植物的位置,做碰撞检测 碰撞检测即是判定子弹是否在僵尸的判断区内,这样就可以判断僵尸是否减少血量或者是子弹是否要消失等,由于要发射等信号实在太多,故可以将每移动一次发射一次信号改为移动一定次数发射一次信号,但是会造成一定程度上但碰撞检测不灵敏,表现在项目上就是子弹经过了僵尸却不消失,或者对僵尸造成几次伤害等。
这个程序是我的程序开发入门作吧,虽然还有很多不够完善的地方,不过我还是挺满意了。项目做完那天发布给了几个朋友,看到朋友们在竞争分数时我也挺开心的,想不到自己也可以做出个有点意思的游戏了。这个游戏运用了很多的元素,我的世界的钻石镐,赛尔号的谱尼,还有植物大战僵尸的各种物体当子弹使,beta版的游戏模式,也算是对我喜欢的游戏的一个致敬吧。整体来说这个游戏难度比较大,游戏性很强,游戏元素丰富,值得一玩。以后如果有修改会继续发布。
植物大战僵尸魔改版源代码 为期20天的Qt实训,完成结业项目的时间大概为10天,10天前对C++都还掌握不牢,最终的成品竟然还令自己满意。 由于笔者为大一,项目难免有许多问题,欢迎大家指正。受到所学知识的约束,内存管理、碰撞检测等方面做得不是很好,游戏玩到僵尸狂暴出来等时候就会比较卡顿了,到无尽模式拼的甚至是电脑了,由于时间只有10天,而且大部分时间都在解决技术问题上,所以游戏的用户体验等方面也存在问题,但是在游戏性上还是下了功夫,游戏元素也比较丰富,大家能过目就很好啦。 下载源代码需要积分,如果你只是想体验下游戏就直接跳到页面顶端,那里有游戏成品的百度网盘链接,如果你愿意就游戏的某些方面交流或者谈一谈优化游戏的方法,可以私信我。
