飞机大作战游戏实训总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
飞机大作战游戏实训总结
1.概述
飞机大战游戏是在Microsoft Visual Studio编程软件的MFC环境下制作的一款游戏,界面简洁流畅、游戏方式简单。
游戏主要实现的功能和规则如下:
(1)利用键盘中的上下左右键控制我方战机,空格键发射子弹。
战机初始有一定量的血量。
(2)屏幕上随机产生敌机,战机产生的数量和当前关卡,关卡越高,产生的敌机越多,游戏难度越大。
而且敌机产生的位置和速度是不确定的。
只有当我机位于敌机下方时,敌机会产生子弹,默认情况下是不发射任何子弹的。
(3)战机子弹打中敌机,敌机就会爆炸,同时玩家分数会增加,每得1000分进人下一关。
2.相关技术
在设计该游戏时,用到许多技术,这里介绍几个相对重要的技术。
关于碰撞检测的相关函数:
用CRect类的GetRect()函数可以获得当前对象的矩形区域,IntersectRect()并用此函数判断战机与敌机,子弹与战机,我方导弹与敌机,战机与物品是否相撞。
CObList链表:
使用CObList链表来分别存储敌机,炸弹,导弹,爆炸效果。
CobList类似于一个双向链表,POSITION类型的变量为链表的键。
使用POSITION变量,既可以作为链表循环中的循环变量,也可以作为标记某个位置的标签。
我们可以通过获得某元素的POSITION来访问它。
本程序中主要用到的函数有:
GetHeadPosition()——获取链表首元素的POSITION;AddTail ()——向链表尾部添加新的元素;GetNext(POSITION&rPosition)返回当前rPosition指向的元素,并使rPosition指向下一个元素。
设置定时器、销毁定时器
SetTimerO函数来设置定时器,控制每隔多少毫秒执行一次什么任务。
用Ki11Time()函数来销毁定时器。
双缓冲技术
为了避免窗体频繁闪烁,引入双缓冲技术。
双缓冲的原理是先建立一个内存DC,捋游戏对象绘制到内存DC上,再一次性的把内存中绘制好的图形“拷贝”到设备DC上。
采取这种方法可以提高绘图速度,极大的改善绘图效果。
3.总体设计与详细设计
系统模块划分
有两个主要的部分组成,分别是规则子系统、游戏对象子系统。
规则子系统
该子系统主要是实现飞机大战各项游戏规则。
实现了需求中的游戏规则。
这个系统模块实现了敌机对战机的攻击、以及游戏对象碰撞
检测规则。
攻击规则:
敌机在战机上方时发射炸弹,炸弹从上至下射向战机
碰撞规则:
战机所绝形区城与奖品所在楚彩区城混时,我示战获得该奖励。
敌机击中战,战机血器减少。
战领击中敌机,敌机被炸毁,战领得分端通。
战机血露为0,游戏结哀。
主要功能模块:
主要功能模块主要就是那些类的功能模块,主要有:
1、各个游戏对象的贴图模块
2、敌机数量、方向、速度以及子弹的数量、方向和速度控制模块。
3、战机的导弹的数目、方向和速度控制模块。
4、战机的键盘控制位置模块。
5、敌机、子弹和战机、导弹的碰撞检测以及爆炸模块。
6、背景添加模块。
7、战机速度控制模块。
8、游戏关卡和游戏难易度。
9、游戏得分和生命值控制以及游戏结束。
10、游戏音效控制模块。