2020-07-03
- 版权声明:原创文章,未经博主允许不得转载
这是 SDUST 小学期飞机大战讲解的第一章。
SDUST Computer Science 小学期的飞机大战实训。本来还想提前学学 MFC ,但是因为疫情,你懂的。所以我也是小学期两周临时学的,代码比较渣,请多多指教(鞠躬)。
并不是说 Qt 不好,很多人说 Qt 又跨平台云云,学 MFC 干啥。 MFC 在 Windows 平台具有天生优势,对于理解 Windows 平台 GUI 程序运作还是有很大帮助的。有人说“我用Mac”,那我还用龙芯呢。
理解起来还是费劲,不过熬了一个礼拜终于熬出来了(我报告都要写完了跟我说还有一周!不是说好的两周吗 小声)。
预备暑假记录一些在这两周不到的 MFC 学习时光中所学到的知识,在尝试把对 MFC 的感性认识上升到理性认识的同时,试图让后来者可以在这较短的时间里更好地理解它、应用它。当然如果期末考砸了…… 咕咕咕
听我BB了这么多,我知道还是代码比较吸引人,但这不是给你白嫖的,整个项目是在dcq老师提供的模板上由我独立进行了大量的修改,除了少数几个类外已经“面目全非”。这的初衷是让你更好的理解程序(虽然我怀疑大概率会把你引向更多的坑)。如果哪里我搞错了,教教我呗~
预备大部分按照老师提供的模板工程和我的 v2.0.0 讲解。v2.0.0 没有实现的内容单独成节。最后讲下一定会遇到的,别的电脑运行提示缺少 DLL 的问题。
我的环境
OS: Windows10
IDE: Microsoft Visual Studio Community 2017
经测试,二进制兼容Windows7、Windows10和Wine
实现的功能
V4.0.3
-
基本操作:WASD进行上下左右移动,空格键发射导弹;双人模式下玩家2通过方向键移动,回车键发射导弹;按 p 暂停;按 o 结束当前游戏
-
血量:敌机和玩家战机的血量由血条显示
-
导弹:导弹由玩家战机打出,打中敌机时扣除敌机总血量 20 % 的血量
-
子弹:子弹由敌机打出,打中玩家战机时扣除战机总血量 20 % 的血量
-
直线子弹:当玩家战机处在敌机直线攻击范围内时触发子弹直线发射,发射速度与敌机移速有关
-
斜向子弹:当玩家战机和敌机距离低于一定值时,敌机根据玩家战机的位置斜向发射子弹,发射角度与敌机移速有关
-
奖励:当玩家战机消灭敌机(护甲消灭除外)时有一定概率掉落奖励,拾取即可获得,道具(散弹和红心)持有数量具有上限
-
散弹:按 2 激活,发射导弹时自动替换为散弹,每次激活每人 50 发(发射一次为一发),重复激活可叠加
-
红心:按 3 使用,每人回复总血量 50 % 血量;如果有玩家血量小于等于总血量 0 % 时会自动使用并对该玩家增加血量
-
护甲:拾取即自动对每人进行激活,时长为三秒,可叠加。激活期间不受伤害,并对接触到的子弹和敌机造成伤害。对于子弹,使子弹爆炸失效;对于敌机,造成总血量 100 % 的伤害
-
加速:拾取即自动对每人进行激活,时长为三秒,可叠加。激活期间移速翻倍
-
血量加成:无需拾取,当玩家战机消灭敌机时,若有玩家战机血量低于总血量 50 % ,获得总血量 5 % 的血量加成
-
模式:无敌模式,单人模式和双人模式
-
无敌模式:道具持有数量上限为 25 ,奖励掉落概率为 100% ,且持有的红心数量永远大于等于 1
-
单人模式:道具持有数量上限为 2
-
双人模式:散弹持有数量上限为 2 ,红心持有数量上限为 3
-
双人无敌:道具持有数量上限为 25 ,奖励掉落概率为 100% ,且持有的红心数量永远大于等于 1
-
BOSS:消灭一定数量敌机后敌机召唤 BOSS ,BOSS 产生的同时敌机数量减少,消灭 BOSS 后进入下一卡关
-
卡关:随着卡关增加敌机子弹速度、BOSS 血量等会有一定提升;非无敌模式中升入下一卡关时红心上限提升 1 ,单人模式上限最高为 5 ,双人模式上限最高为 6
-
任务失败:玩家战机血量降至总血量 0 % 及以下且无法恢复时,任务失败,游戏结束;可以按 r 重玩;HJKL可以重新选择模式
V2.0.0
没有实现重玩、记录和读取成绩、背景、BOSS、卡关、加速道具……等一系列灰常拉风的操作。由于不想让整个程序显得非常俗气,没有做爆炸音效也没做更多的图片特效啥的,尽管没有什么技术上的问题。
本章完
by SDUST weilinfox
本文地址 https://www.cnblogs.com/weilinfox/p/13229805.html
续章 未编辑