实 训 报 告
飞机大战游戏设计与开发
王上前
专业名称:物联网工程 班 级:物联网11级1班
学 号:20111052131
信息科学与工程学院
二零一二年十二月
信息科学与工程学院软件实践实训报告
目 录
1. 概述 ................................................ 03 1.1 实训项目简介 ..................................... 03 1.2 实训功能说明 ..................................... 03 1.2.1 基本功能 ....................................... 03 2. 相关技术 ............................................ 03 2.1 基类的使用 ....................................... 03 2.2 Windows定时器技术 .................................. 03 2.3获取矩形区域...................................... 03 2.4内存释放 ......................................... 04 3. 总体设计与详细设计................................... 04 3.1 系统模块划分 ..................................... 04 3.2 主要功能模块 ..................................... 05 4. 编码实现 ............................................ 20 5. 实训中遇到的主要问题及解决方法 ....................... 21 6. 实训体会 ............................................ 21
2
信息科学与工程学院软件实践实训报告
1. 概述
1.1 实训项目简介
本次实训项目是做一个飞机大战的游戏,完成一个界面简洁流畅、游戏方式简单,玩起来易于上手的桌面游戏。该飞机大战项目运用的主要技术即是MFC编程中的一些函数、链表思想以及贴图技术。
1.2 实训功能说明 1.2.1 基本功能
(1)设置一个战机具有一定的速度,通过键盘,方向键可控制战机的位置,空格键发射子弹。
(2)界面中敌机出现的位置为随机的。
(3)对于随机产生的敌机和敌机炸弹,若超过矩形区域,则释放该对象。
(4)添加爆炸效果,包括战机子弹打中敌机爆炸、敌机炸弹打中战机爆炸、战机与敌机相撞爆炸以及战机子弹与敌机炸弹相撞爆炸四种爆炸效果。且爆炸发生后敌机、子弹、炸弹均消失。
2. 相关技术
2.1基类的使用
在飞机大战的游戏中用到了很多基类,例如MyPlane、Bomb等等,这样使得游戏的实现更加规范,有效性。通过主函数的调用,实现了很多功能。
2.2 Windows定时器技术
Windows定时器是一种输入设备,它周期性地在每经过一个指定的时间间隔后就通知应用程序一次。程序将时间间隔告诉Windows,然后Windows给您的程序发送周期性发生的WM_TIMER消息以表示时间到了。本程序中使用多个定时器,分别控制不同的功能。在MFC的API函数中使用SetTimer()函数设置定时器,设置系统间隔时间,在OnTimer()函数中实现响应定时器的程序。
2.3获取矩形区域
首先,使用CRect定义一个对象,然后使用GetClientRect(&对象名)函数,获取界面的矩形区域rect.Width() 为矩形区域的宽度,rect.Height()为矩形区域的高度。
3
信息科学与工程学院软件实践实训报告
使用IntersectRect(&,&))函数来判断两个源矩形是否有重合的部分。如果有不为空,则返回非零值;否则,返回0。
2.4内存释放
在VC/MFC用CDC绘图时,频繁的刷新,屏幕会出现闪烁的现象,CPU时间占用率相当高,绘图效率极低,很容易出现程序崩溃。及时的释放程序所占用的内存资源是非常重要的。
在程序中使用到的刷子等占用内存资源的对象都要及时的删除。Delete Brush等。
3. 总体设计与详细设计 3.1 系统模块划分
飞机大战游戏主要模块可以说是有几个重要的类组成的。首先是老师给出的CGameObject类,以及在其派生下的BOMB,BALL,ENEMY,MYPLANE等等。
如图:
游戏对象+Draw() : bool敌机战机导弹炸弹爆炸效果文字提示
3.2 主要功能模块
主要功能是在飞机大战View类中,OnTimer函数中实现,将各个类调用,随机产生敌机,子弹的输出,爆炸的实现等等。它的实现图可以如下实现:
4
信息科学与工程学院软件实践实训报告
启动程序初始化游戏对象游戏初始化初始化绘图环境游戏是否结束绘制游戏对象碰撞运算积分判断 4. 编码实现
4.1飞机大战view.cpp
#include \#include \飞机大战.h\
#include \飞机大战Doc.h\#include \飞机大战View.h\
#ifdef _DEBUG
#define new DEBUG_NEW #endif
// C飞机大战View
IMPLEMENT_DYNCREATE(C飞机大战View, CView)
BEGIN_MESSAGE_MAP(C飞机大战View, CView) // 标准打印命令 ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview) ON_WM_CREATE() ON_WM_TIMER() ON_WM_KEYDOWN() ON_WM_KEYUP() END_MESSAGE_MAP()
5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库飞机大战实训在线全文阅读。
相关推荐: