飞机大战游戏设计与实现.doc

上传人:小飞机 文档编号:4298906 上传时间:2023-04-14 格式:DOC 页数:9 大小:190KB
返回 下载 相关 举报
飞机大战游戏设计与实现.doc_第1页
第1页 / 共9页
飞机大战游戏设计与实现.doc_第2页
第2页 / 共9页
飞机大战游戏设计与实现.doc_第3页
第3页 / 共9页
飞机大战游戏设计与实现.doc_第4页
第4页 / 共9页
飞机大战游戏设计与实现.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《飞机大战游戏设计与实现.doc》由会员分享,可在线阅读,更多相关《飞机大战游戏设计与实现.doc(9页珍藏版)》请在三一办公上搜索。

1、程序设计综合实践报告姓名学号班级项目名称飞机大战游戏设计与实现实习地点计算机实验室实习时间2015-12-9至2015-12-19实习成绩指导教师签字信息科学与工程学院 2015年 12月20日 目 录1. 概述1 关卡设置1 敌机设置1 战机设置1 游戏设置12. 相关技术2 Windows定时器技术2 双缓冲技术2 获取矩形区域23. 总体设计与详细设计2 系统模块划分2 主要功能模块34. 编码实现4 初始准备4 战机对象6 敌机对象7 道具对象9 主要内容10 窗口显示信息185. 实训中遇到的主要问题及解决方法20 产生中断及解决方案20 图片闪烁问题及解决方案206. 实训体会20

2、1. 概述项目:飞机大战主要功能有以下几点: 关卡设置本次飞机大战游戏中共设置了四个关卡,第一关的难度设置较低,仅有敌机对其进行攻击;第二关在原有的基础上增加一些补血的小道具,当积分达到一定的时候便会出现该道具,并且敌机出现的频率也比第一关高;第三关在第二关的基础上新出现了小boss,并增加了其他的道具;第四关在第三关的基础上再新出现大boss,当积分达到要求以及大boss被消灭后通关成功。 敌机设置小敌机随机出现,炮弹也随机发射,当小敌机与战机相撞或被战机的子弹击中时,小敌机消失。当达到一定积分时,小boss出现并随机发射出与小敌机一样的炮弹,但是炮弹分三个方向发射出。当小boss被战机的子

3、弹击中或与战机相撞时失去5滴血。当到达四关并且积分足够多时出现大boss,同小boss一样,当大boss与战机相撞或被战机子弹击中时失去1滴血。除此之外,小boss和大boss上方都有血条显示,当血条消失时意味着生命消失,大boss和小boss消失。小boss会在屏幕上随机出现和走动出了屏幕后会在屏幕的任意地方再随机出现,直至血量为0消失。大boss则在屏幕中随机走动不出屏幕,直至血量为0消失。 战机设置战机初始有五条生命,每条命的血量为50,所获得的积分以及其生命值、血条都在窗口的左上角显示。在第一、二关时,按空格键战机会出现两个向上发射的炮弹,到第三、四关的时候,按空格键战机会发射三个不同

4、方向的炮弹。战机吃到药瓶道具时血量会增加20,但不可以超过50;吃到闪电道具时,便可放大招,放大招的次数为15。当战机被敌方的炮弹击中或与敌方相撞时,血量减少,减少为0时生命值减1,直至生命值为0。 游戏设置进入游戏时,会有背景音乐,窗口左上角显示战机所得积分及其生命值。根据积分情况进入不同的关卡。游戏通关时屏幕清空,并显示通关成功,按Y可重新开始游戏。当战机的血量以及生命值为0时,游戏失败,屏幕清空并显示游戏结束,按Y即可重新开始游戏。2. 相关技术 Windows定时器技术Windows定时器是一种输入设备,它周期性地在每经过一个指定的时间间隔后就通知应用程序一次。程序将时间间隔告诉win

5、dows,然后windows给你的程序发送周期性发生的WM_YIMER消息以表示时间到了。本程序在OnCreate()函数中使用了编号为1的定时器,控制了每30毫秒刷新一次。 双缓冲技术在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样即可解决图片闪烁问题。本程序在绘制滚动背景以及飞机,敌机等中用到了该技术。 获取矩形区域用CRect定义一个对象,利用这个对象得到要用到的矩形区域,用IntersectRect函数来判断两个源矩形是不是有重合的部分。3. 总体设计与详细设计 系统模块划分飞机大战游戏主要模块可以说是有几个重要的类组

6、成的。首先是老师给出的CGameObject类,以及在其派生下的Bomb,Ball,Enemy,MyPlane,Explosion,AddBlood等等此处不一一列举。另外还有CObject派生的BackGround类。如下图: 主要功能模块主要功能是在飞机大战View类中,OnTimer函数中实现,将各个类调用,随机产生敌机,子弹的输出,爆炸的实现等等。它的实现图可以如下实现:本程序所包含的功能和类模块:游戏子系统模块名称功能简述应用程序对象游戏程序的加载、游戏对象的绘制、玩家的键盘事件获取游戏对象各个游戏对象的抽象父类(CGameObject)战机对象战机类(MyPlane)敌机对象敌机类

7、(Enemy, LittleBoss,Boss)导弹对象导弹类(Bomb,Bomb2)炸弹对象炸弹类(Ball,BossBall)爆炸对象爆炸类(Explosion)道具对象道具类(AddBlood,AddBomb)4. 编码实现 初始准备模块名称应用程序对象功能描述游戏程序的加载、游戏对象的绘制、玩家的键盘事件获取数据结构与算法CflyfightView:CflyfightView()+10,().y+20,0,12);(new CBomb().x+30,().y+20,0,12);else if(flag=0&(level=3|level=4)(new CBomb().x+10,().y+

8、20,5,12);(new CBomb().x+30,().y+20,0,12);(new CBomb().x+30,().y+20,-5,12); if(flag2!=0)(new CBomb2().x+10,().y+20,10,10);(new CBomb2().x+40,().y+20,5,10);(new CBomb2().x+20,().y+20,0,10);(new CBomb2().x+40,().y+20,-5,10); (new CBomb2().x+40,().y+20,-10,10);flag2-;if(flag21)flag=0;补充说明 敌机对象模块名称敌机对象功能

9、描述敌机、大小boss随机产生,随机方向发射子弹,大boss随机发射子弹,大小boss的血条显示数据结构与算法实训中遇到的主要问题及解决方法 产生中断及解决方案在导入一个新的图片资源后,更改ID标识符时没有弄好,产生重复,导致中断,经过反复查找后发现该错误,将其改正过来。因为战机击中大Boss与击中敌机部分代码原理相同,故写击中大Boss部分的代码之前粘贴击中敌机部分的代码,再更改对象名。由于疏忽有的对象名忘了更改过来导致测试游戏过程中到了快出现大Boss击中他的时候产生中断,查证后将对象名更改正确即可。 图片闪烁问题及解决方案在运行过程中发现无论是战机敌机等还是背景都产生剧烈的闪烁问题,非常

10、晃眼,不知道该如何解决。后来上网查找资料,知道利用双缓冲技术可解决图片闪烁问题。然后仔细研究用法,最后成功将该问题解决。6. 实训体会从大一到大三虽然已经学了一些东西,但是利用MFC来做飞机大战还是第一次,一开始简直一头雾水不知道该从哪儿下手。好在老师为我们讲解了其基本用法,然后我利用前几天仔细研究了VS中常见函数的用法和功能,渐渐开始上手。了解差不多后便开始着手写,中途虽然出现了许多错误,有时候一个中断都花了我一个多小时的时间找出问题所在并解决,虽然找的过程很痛苦,但是找到并解决后充满了成就感还是令自己感到很兴奋。经过这次实训后收获满满,不仅学会了如何使用VS,还多了一次经验和历练。精心搜集整理,只为你的需要

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号