MFC_陨石撞飞机实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专业软件工程年级、班级09级8班

课程名称计算机综合性实验实验项目陨石撞飞机

实验时间2010 年 6 月20 日

实验指导老师黄荔实验评分

一、题目

陨石撞飞机综合性实验

二、中文摘要

用MFC设计一个陨石撞飞机的平面游戏:陨石不断地向下落,飞机通过上下左右键移动以躲避陨石。当陨石碰撞了飞机时,显示提示对话框,及飞机爆炸图像。确定后在碰撞位置重新开始游戏。三次碰撞后显示提示对话框,游戏结束。

三、关键词

MFC、Bitmap、timer、键盘响应(WM_KEYDOWN)

四、前言

此程序大多代码出自参考资料,一小部分代码为搜索资料并加工完成,其功能尚有不完善之处。

五、软件开发过程

(一)、新建MFC APPWizard[exe]单文档工程文件

在Visual C++中新建一个工程,命名为Plane。工程类型为:MFC AppWizard[exe]。在MFC AppWizard-Step1对话框中设置应用程序的类型,建立一个单文档工程文件,得到一个应用程序框架文件。

(二)、添加资源:、飞机位图、陨石位图、爆炸位图。

专业软件工程年级、班级09级8班

课程名称计算机综合性实验实验项目陨石撞飞机

实验时间2010 年 6 月20 日

实验指导老师黄荔实验评分

在[插入]-[资源…]选择Bitmap选项,单击[新建]即可。绘出一个飞机,ID 为(IDB_BITMAP1)、五个陨石(IDB_BITMAP2~IDB_BITMAP6)和一个炸弹位图(IDB_BITMAP7),如下图。

飞机位图陨石位图爆炸位图

(三)、在planeView.h头文件中声明所需变量和函数

CBitmap m_plane; //声明一个CBitmap类型的飞机变量m_plane

int mx,my;//表示飞机坐标

CBitmap m_bump; //爆炸位图变量

int mpx,mpy;//表示爆炸位图的坐标

int t; //爆炸次数

//声明陨石位图的成员变量为CBitmap类型的变量

CBitmap m_stone1,m_stone2,m_stone3,m_stone4,m_stone5;

//声明陨石的坐标变量为int类型:

int nstone1x,nstone1y;

专业软件工程年级、班级09级8班

课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日

实验指导老师黄荔实验评分

int nstone2x,nstone2y;

int nstone3x,nstone3y;

int nstone4x,nstone4y;

int nstone5x,nstone5y;

再声明函数成员

void CPlanView::DrawPlane(CDC *pDC);//飞机位图函数

void CPlanView::Drawbump(CDC *pDC); //爆炸位图函数

// 声明绘制陨石的函数原型:

void DrawStone1(CDC *pDC);

void DrawStone2(CDC *pDC);

void DrawStone3(CDC *pDC);

void DrawStone4(CDC *pDC);

void DrawStone5(CDC *pDC);

以上成员(数据成员、成员函数)均为public属性(四)在planview.cpp文件中添加函数

1)、修改构造函数

mx=100; my=100; t=0; //赋初值

m_plane.LoadBitmap(IDB_BITMAP1); //飞机位图调用

专业软件工程年级、班级09级8班

课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日

实验指导老师黄荔实验评分

m_bomb.LoadBitmap(IDB_BITMAP7); //爆炸位图调用

//添加陨石初始化操作代码,随机产生

nstone1x=rand()%500; // 陨石1 x方向随机数0~499 nstone1y=10;

m_stone1.LoadBitmap(IDB_BITMAP2);

nstone2x=rand()%500; // 陨石2 x方向随机数0~499 nstone2y=10;

m_stone2.LoadBitmap(IDB_BITMAP3);

nstone3x=rand()%500; // 陨石3 x方向随机数0~499 nstone3y=10;

m_stone3.LoadBitmap(IDB_BITMAP4);

nstone4x=rand()%500; // 陨石4 x方向随机数0~499 nstone4y=10;

m_stone4.LoadBitmap(IDB_BITMAP5);

nstone5x=rand()%500; // 陨石5 x方向随机数0~499 nstone5y=10;

m_stone5.LoadBitmap(IDB_BITMAP6);

专业软件工程年级、班级09级8班

课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日

实验指导老师黄荔实验评分

2)、修改ondraw()函数

添加DrawPlane(pDC); //调用绘制飞机函数

3)、添加DrawPlane()和Drawbump()函数

void CPlaneView::DrawPlane(CDC *pDC)

{

CDC MemDC;

MemDC.CreateCompatibleDC(pDC);

BITMAP bm;

m_plane.GetObject(sizeof(BITMAP),&bm);

CBitmap MemBitmap;

MemBitmap.CreateCompatibleBitmap(pDC,bm.bmWidth,bm.bmHeight);

CBitmap *pOldBitmap;

pOldBitmap=(CBitmap*)MemDC.SelectObject(&MemBitmap);

MemDC.SelectObject(&m_plane);

相关文档
最新文档