c++实训报告(飞机大战)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实训报告
飞机大战游戏设计与开发
专业名称:__________ ____________
班
级:__________________
学
号:___________________
信息科学与工程学院
二零一一年十一月
信息科学与工程学院软件实践实训报告
目录
1. 概述【一级标题,黑体,四号,加粗,顶头】....来自百度文库.......................... 3
4. 编码实现................................................................................................ 8
4.1 游戏初始创建......................................................................................................................9 4.2 定时器..................................................................................................................................9 4.3 背景设定..............................................................................................................................9 4.4 键盘控制函数......................................................................................................................9 4.5 文字显示函数....................................................................................................................10 4.6 游戏对象进行碰撞测试和碰撞销毁,文字提示函数................................................... 11 4.7 选择下一关卡以及选择完成后的执行代码................................................................... 12 4.8 游戏结束代码....................................................................................................................12 4.9 鼠标控制战机代码............................................................................................................13 4.10 重新开始游戏代码..........................................................................................................13
2.2 CObList 链表(技术二的名称)
CObList m_ObjListball; //主要是定义一个 CObList 类的一个链表对象用于存储所有的 此种相关的对象,易于后续的添加删除和提取数据。 POSITION posball=NULL,posball_t=NULL; //定义指针
posball=pDoc->m_ObjListball.GetHeadPosition();//指针读取头结点 pDoc->pball= (Cball *)pDoc->m_ObjListball.GetNext(posball); //指针读取下一个结点
2. 相关技术
此次实训的飞机大战游戏其中的技术主要就是一些函数、内存释放和双缓冲技术。
2.1 透明贴图函数(技术一的名称)
此次实训中用于贴图的函数: LoadImage(CImageList& imageList,UINT bmpID,COLORREF crMask,int cx,int cy,int nInitial) //此函数主要用于将图片放入图像链表 imageList 中。 img_Bomb.Draw(pDC,0,m_m_ptPos,ILD_TRANSPARENT) // 此 函 数 主 要 是 讲 img_Bomb1 链表中的图像显示在 pDC 这个句柄中。ILD_TRANSPARENT 表示是透明贴图。 其中主要就是 CImageList 图像列表。它是相同大小图像的一个集合,每个集合中均以 0 为 图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利 用 WINDOWS32 位应用程序接口函数 API 来绘制、建立和删除图像,并能实现增加、删除、替 换和拖动图像等操作。
5. 实训中遇到的主要问题及解决方法..................................................14
6. 实训体会.............................................................................................. 14
3. 总体设计与详细设计............................................................................ 6
3.1 系统模块划分.....................................................................................................................7 3.2 主要功能模块.....................................................................................................................8 3.3 扩展功能设计思路.............................................................................................................8
2. 相关技术................................................................................................ 3
2.1 透明贴图函数(技术一的名称).................................................................................. 3 2.2 CObList 链表(技术二的名称)..................................................................................... 3 2.3 获取矩形区域函数..............................................................................................................4 2.4 添加爆炸效果函数..............................................................................................................4 2.5 弹出对话框函数..................................................................................................................4 2.6 字体的个性化输出函数......................................................................................................4 2.7 鼠标键盘控制战机位置的函数......................................................................................... 5 2.8 延迟函数.............................................................................................................................5 2.9 设置定时器..........................................................................................................................5 2.10 双缓冲技术........................................................................................................................5 2.11 内存释放技术...................................................................................................................5
2
信息科学与工程学院软件实践实训报告
1. 概述【一级标题,黑体,四号,加粗,顶头】
(介绍所做的项目,要实现的主要功能)【正文,五号,宋体,首行缩进 2 字符】 此次实训主要是要做一个飞机大战的游戏,其需要实现的功能为:实现游戏对象的爆炸 特效、声音特效、文字提示功能和界面背景特效,其主要是遵循一定的游戏规则进行游戏。 游戏中的主要角色可分为如下几个基本部分:战机、敌机、战机的导弹、敌机的子弹。 其主要遵循的游戏规则为:战机数量为 1;由玩家通过键盘控制(方向键控制位置、CTRL 键发射导弹)战机;导弹释放存在间隔,有一定的运行速度;导弹遇到敌机发生爆炸,敌机 被炸毁,导弹消失,玩家得分;由计算机控制敌机自动向战机发动攻击;敌机数量随机,计 算机生成敌机时随机选择类别;敌机从游戏区域的上下两端进入,左右位置随机;敌机行驶 期间,不左右移动,不反向移动;当敌机到达战机下方时发射炸弹对战机进行攻击;运行线 路为直线,方向为从下至上,或从下至上,不可左右移动。纵向由发射位置起至游戏区域结 束;炸弹遇到战机时发生爆炸,战机被炸毁,炸弹消失,游戏结束;炸弹运行时有速度限制。
3
信息科学与工程学院软件实践实训报告
2.3 获取矩形区域函数
CRect rc; //定义 GetClientRect(&rc); // 获 取 其 矩 形 区 域 获 取 结 果 课 为 : rc.Width() // 矩 形 区 域 的 宽 度
rc.Height() //矩形区域的高度 CRect tmpRect; tmpRect.IntersectRect(&bRect,eRect))//判断两个矩形是否有交接
飞机大战游戏设计与开发
专业名称:__________ ____________
班
级:__________________
学
号:___________________
信息科学与工程学院
二零一一年十一月
信息科学与工程学院软件实践实训报告
目录
1. 概述【一级标题,黑体,四号,加粗,顶头】....来自百度文库.......................... 3
4. 编码实现................................................................................................ 8
4.1 游戏初始创建......................................................................................................................9 4.2 定时器..................................................................................................................................9 4.3 背景设定..............................................................................................................................9 4.4 键盘控制函数......................................................................................................................9 4.5 文字显示函数....................................................................................................................10 4.6 游戏对象进行碰撞测试和碰撞销毁,文字提示函数................................................... 11 4.7 选择下一关卡以及选择完成后的执行代码................................................................... 12 4.8 游戏结束代码....................................................................................................................12 4.9 鼠标控制战机代码............................................................................................................13 4.10 重新开始游戏代码..........................................................................................................13
2.2 CObList 链表(技术二的名称)
CObList m_ObjListball; //主要是定义一个 CObList 类的一个链表对象用于存储所有的 此种相关的对象,易于后续的添加删除和提取数据。 POSITION posball=NULL,posball_t=NULL; //定义指针
posball=pDoc->m_ObjListball.GetHeadPosition();//指针读取头结点 pDoc->pball= (Cball *)pDoc->m_ObjListball.GetNext(posball); //指针读取下一个结点
2. 相关技术
此次实训的飞机大战游戏其中的技术主要就是一些函数、内存释放和双缓冲技术。
2.1 透明贴图函数(技术一的名称)
此次实训中用于贴图的函数: LoadImage(CImageList& imageList,UINT bmpID,COLORREF crMask,int cx,int cy,int nInitial) //此函数主要用于将图片放入图像链表 imageList 中。 img_Bomb.Draw(pDC,0,m_m_ptPos,ILD_TRANSPARENT) // 此 函 数 主 要 是 讲 img_Bomb1 链表中的图像显示在 pDC 这个句柄中。ILD_TRANSPARENT 表示是透明贴图。 其中主要就是 CImageList 图像列表。它是相同大小图像的一个集合,每个集合中均以 0 为 图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利 用 WINDOWS32 位应用程序接口函数 API 来绘制、建立和删除图像,并能实现增加、删除、替 换和拖动图像等操作。
5. 实训中遇到的主要问题及解决方法..................................................14
6. 实训体会.............................................................................................. 14
3. 总体设计与详细设计............................................................................ 6
3.1 系统模块划分.....................................................................................................................7 3.2 主要功能模块.....................................................................................................................8 3.3 扩展功能设计思路.............................................................................................................8
2. 相关技术................................................................................................ 3
2.1 透明贴图函数(技术一的名称).................................................................................. 3 2.2 CObList 链表(技术二的名称)..................................................................................... 3 2.3 获取矩形区域函数..............................................................................................................4 2.4 添加爆炸效果函数..............................................................................................................4 2.5 弹出对话框函数..................................................................................................................4 2.6 字体的个性化输出函数......................................................................................................4 2.7 鼠标键盘控制战机位置的函数......................................................................................... 5 2.8 延迟函数.............................................................................................................................5 2.9 设置定时器..........................................................................................................................5 2.10 双缓冲技术........................................................................................................................5 2.11 内存释放技术...................................................................................................................5
2
信息科学与工程学院软件实践实训报告
1. 概述【一级标题,黑体,四号,加粗,顶头】
(介绍所做的项目,要实现的主要功能)【正文,五号,宋体,首行缩进 2 字符】 此次实训主要是要做一个飞机大战的游戏,其需要实现的功能为:实现游戏对象的爆炸 特效、声音特效、文字提示功能和界面背景特效,其主要是遵循一定的游戏规则进行游戏。 游戏中的主要角色可分为如下几个基本部分:战机、敌机、战机的导弹、敌机的子弹。 其主要遵循的游戏规则为:战机数量为 1;由玩家通过键盘控制(方向键控制位置、CTRL 键发射导弹)战机;导弹释放存在间隔,有一定的运行速度;导弹遇到敌机发生爆炸,敌机 被炸毁,导弹消失,玩家得分;由计算机控制敌机自动向战机发动攻击;敌机数量随机,计 算机生成敌机时随机选择类别;敌机从游戏区域的上下两端进入,左右位置随机;敌机行驶 期间,不左右移动,不反向移动;当敌机到达战机下方时发射炸弹对战机进行攻击;运行线 路为直线,方向为从下至上,或从下至上,不可左右移动。纵向由发射位置起至游戏区域结 束;炸弹遇到战机时发生爆炸,战机被炸毁,炸弹消失,游戏结束;炸弹运行时有速度限制。
3
信息科学与工程学院软件实践实训报告
2.3 获取矩形区域函数
CRect rc; //定义 GetClientRect(&rc); // 获 取 其 矩 形 区 域 获 取 结 果 课 为 : rc.Width() // 矩 形 区 域 的 宽 度
rc.Height() //矩形区域的高度 CRect tmpRect; tmpRect.IntersectRect(&bRect,eRect))//判断两个矩形是否有交接