下载此文档

c++实训报告---飞机大战.doc


文档分类:汽车/机械/制造 | 页数:约20页 举报非法文档有奖
1/20
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/20 下载此文档
文档列表 文档介绍
目录
1. 概述 3
实训项目简介 3
实训功能说明 3
基本功能 3
附加功能 3
2. 相关技术 4
Windows定时器技术 4
透明贴图实现技术 4
CObList链表 5
6
6
6
CImageList处理爆炸效果 6
6
3. 总体设计与详细设计 7
系统模块划分 7
主要功能模块 8
系统对象类图 8
系统主程序活动图 9
系统部分流程图 9
4. 编码实现 12
绘制游戏背景位图程序 12
飞机大战游戏对象的绘制程序 13
飞机大战游戏对象战机位置的动态控制 15
飞机大战游戏对象之间的碰撞实现 17
游戏界面输出当前信息 19
5. 项目程序测试 20
20
敌机及炸弹模块测试 20
爆炸模块测试 20
6. 实训中遇到的主要问题及解决方法 21
7. 实训体会 21
1. 概述
实训项目简介
本次实训项目是做一个飞机大战的游戏,应用MFC编程,完成一个界面简洁流畅、游戏方式简单,玩起来易于上手的桌面游戏。该飞机大战项目运用的主要技术即是MFC编程中的一些函数、链表思想以及贴图技术。
实训功能说明
基本功能
(1)设置一个战机具有一定的速度,通过键盘,方向键可控制战机的位置,空格键发射子弹。
(2)界面中敌机出现的位置,以及敌机炸弹的发射均为随机的,敌机与敌机炸弹均具有一定的速度,且随着关卡难度的增大,数量和速度均增加。
(3)对于随机产生的敌机和敌机炸弹,若超过矩形区域,则释放该对象。
(4)添加爆炸效果,包括战机子弹打中敌机爆炸、敌机炸弹打中战机爆炸、战机与敌机相撞爆炸以及战机子弹与敌机炸弹相撞爆炸四种爆炸效果。且爆炸发生后敌机、子弹、炸弹均消失,战机生命值减一。
附加功能
(1) 为游戏界面添加了背景图片,并在战机发射子弹、战机击中敌机、敌机击中战机、以及战机敌机相撞时均添加了背景音效。
(2)为游戏设置了不同的关卡,每个关卡难度不同,敌机与敌机炸弹的速度随着关卡增大而加快,进入第二关以后敌机从上下方均会随机出现,且随机发射炸弹。
(3)第一关卡敌机从上方飞出,速度一定,战机每打掉一直敌机则增加一分,每积十分,则为战机增加一个生命值,当战机得分超过50分则可进入下一关;进入第二、三关时敌机速度加快,分别从上下两方飞出,此时战机每得分20、30分,才会增加一个生命值,得分超过100、150分则进入下一关、通关。
(4) 在游戏界面输出当前游戏进行信息,包括当前得分、当前关卡以及击中敌机数量。
(5)增加了鼠标控制战机位置这一效果,战绩的位置随着鼠标的移动而移动,并且点击鼠标左键可使得战机发射子弹。
(6)实现了暂停游戏的功能,玩家可通过键盘上的‘Z’键,对游戏进行暂停。
(7)通过对话框的弹出可提示玩家是否查看游戏说明、是否进入下一关、是否重新开始等消息,使得玩家可自己选择。
2. 相关技术
Windows定时器技术
Windows定时器是一种输入设备,它周期性地在每经过一个指定的时间间隔后就通知应用程序一次。程序将时间间隔告诉Windows,然后Windows给您的程序发送周期性发生的WM_TIMER消息以表示时间到了。本程序中使用多个定时器,分别控制不同的功能。在MFC的API函数中使用SetTimer()函数设置定时器,设置系统间隔时间,在OnTimer()函数中实现响应定时器的程序。
透明贴图实现技术
绘制透明位图的关键就是创建一个“掩码”位图(mask bitmap),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。
在详细介绍实现过程之前先介绍下所使用的画图函数以及函数参数所代表的功能;整个绘制过程需要使用到BitBlt()函数。整个功能的实现过程如下:
(1) 创建一张大小与需要绘制图像相同的位图作为“掩码”位图;
(2) 将新创建的“掩码”位图存储至掩码位图的设备描述表中;
(3) 把位图设备描述表的背景设置成“透明色”,不需要显示的颜色;
(4) 复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图设备描述表中存放的位图与位图设备描述表中的位图一样;
(5) 把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;
(6) 把“掩码”位图

c++实训报告---飞机大战 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息