欢迎来到天天文库
浏览记录
ID:41560413
大小:221.78 KB
页数:42页
时间:2019-08-27
《程序设计综合实践飞机大战实训报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、[在此处键入]实训报告飞机大战游戏设计与开发专业名称:班级:学号:信息科学与工程学院二零一八年七月1.概述32.相关技术32.1碰撞检测32.2COblist链表32.3双缓冲技术42.4背景滚动42.5爆炸动画的实现42.6定时器的使用43•总体设计与详细设计43.1系统模块划分43.2主要功能模块54.编码实现75.实训中遇到的主要问题及解决方法426.实训体会431・概述本次实训任务是以visualstudio2017为环境,利用MFC和C++编写一个飞机大战游戏。其实现的主要功能为:实现游戏对象的爆炸特效,界而背景切换,文字提示和血条显示功能,奖励机制
2、(血包、护盾、僚机、武器升级),大招和无敌模式等。通过方向键控制战机移动,空格键发射子弹,击毁敌机可以得分。游戏中可以按“X”开启或关闭无敌模式。按“P”可以暂停。游戏设有能量槽,能量不断积累,超过一半可以按“Z”键使用大招,大招为全屏攻击。玩家收到攻击血量减少,血量为0游戏结束,显示“GameOver”,可以按“R”复活,继续游戏。游戏设有关卡机制,每关开始一段时间后出现bosso击败boss进入卜一关。boss有三种,难度依次增加。笫一种boss发射直线子弹,笫二种boss发射散射子弹,笫三种boss两种子弹随机发射。前三关背景图和boss固定,之后背景图
3、与boss随机生成。游戏屮随机出现四种道具:血包:可以恢复一定的血量。护盾:一段时间内无敌。武器升级:升级玩家的武器,共三个等级。僚机:获得一个僚机。2.相关技术2.1碰撞检测游戏屮需要处理一系列的碰撞,在处理碰撞时,可以认为每个对象是与位图大小相同的矩形,用Creel类的GctRect函数获取我方战机的矩形与敌机子弹矩形,然后新建一个矩形并且调用IntersectRect(ftbRect,mRect)•再用if条件语句判断,若矩形区域重叠不为空,则视为碰撞,在if语句中填写实现碰撞后的功能。2.2COblist链表使用CObList链表来分别存储敌机,炸弹,
4、导弹,爆炸等效果。CObList类支持非唯一的CObject指针,并可顺次访问或通过指针值访问有序列表。CObList列表的行为类似于双向链接列表,POSITION类型的变量为链表的键。使用POSITION变量,既可以作为列表循环中的循环变量,也可以作为标记某个位置的标签。我们用到的主要函数有:GetHeadPosition():返冋列表中首元素的位置AddTailO:在列表尾增加一个元素GetNext():获取循坏遍历中的下一个元素2.3双缓冲技术利用普通的绘制函数对项目中元素进行绘图吋,由于绘图吋机不一定连续,绘图效率不一定统一,会造成重影和闪屏的不良效果
5、,为了解决这一问题,可以利用双缓冲技术。双缓冲即在内存屮创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存屮的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。可以在程序中定义一个CDC指针变量和CBitmap指针变量实现,在构造函数中为两个指针分配内存空间,将所有的图像绘制完毕后,再取得真实窗口CDC指针和BitBlt函数将内存中的内容完整的拷贝到屏幕上。2.4背景滚动为了让游戏场景更加逼真,游戏节奏更加合理,诃以通过让背景滚动來提高游戏的场最效应,实现这一技术时,可以将一张背景图片复制为2张,从上到下连续的拼接在一起,使英不会
6、出现图片的卡顿和瞬移现象。2.5爆炸动画的实现爆炸的特效是由一组静态图像连续绘制形成的,为了实现这一效果,可以利用MFC中的CImageList类,将一组市静态图像组成的连续位图按照一定格式转化为CImageList对象,并为每一个对象设置一个index,在需要爆炸的时候,根据index逐帧播放图像,实现敌机爆炸的动态效果。2.6定时器的使用为了实现屏幕的定时刷新和暂停功能,需要设置定时器,当设置好时间间隔时,每次经过一个设置的时间间隔,Windows都会向程序发送一个WM_TIMER,并且调用相关函数,程序执行0nTimer函数,并根据定时器编号执行相应的操
7、作。实现方式为使用SetTimer函数设置定时器标识和时I'可I'可隔。另外也可以利用定时器实现对连续按键的处理,使子弹发射和移动效果更加平滑合理。1.总体设计与详细设计3.1系统模块划分主要由对象功能模块、游戏规则模块、系统功能模块组成。3.2主要功能模块对象功能模块:负责各个对象的定义,属性和特性的描述:对象的位置坐标,碰撞矩形或碰撞点,运动方式的算法,血量、类型等各种数值,对象是否存在的bool值。游戏规则模块:1、玩家的控制:检测键盘输入,实现战机的移动、攻击、大招等功能。2、随机产生敌机:敌机的位置、速度、子弹发射频率随机。3、奖励机制:随机出现四种
8、奖励:血包、武器升级、护盾和僚机。4、
此文档下载收益归作者所有