飞机大战实训

2019-02-21 00:54

实 训 报 告

飞机大战游戏设计与开发

王上前

专业名称:物联网工程 班 级:物联网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


飞机大战实训.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:学日语-中日交流标准日本语单词初级下册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: