飞机大战实训报告.docx

上传人:b****1 文档编号:386087 上传时间:2022-10-09 格式:DOCX 页数:38 大小:89.09KB
下载 相关 举报
飞机大战实训报告.docx_第1页
第1页 / 共38页
飞机大战实训报告.docx_第2页
第2页 / 共38页
飞机大战实训报告.docx_第3页
第3页 / 共38页
飞机大战实训报告.docx_第4页
第4页 / 共38页
飞机大战实训报告.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

飞机大战实训报告.docx

《飞机大战实训报告.docx》由会员分享,可在线阅读,更多相关《飞机大战实训报告.docx(38页珍藏版)》请在冰豆网上搜索。

飞机大战实训报告.docx

飞机大战实训报告

 

1。

概述

这次实训,目的以VS为环境,利用MFC,使用C++语言编写一个简单的飞机大战游戏.

实现的主要功能:

1.有开始游戏界面,上下左右键控制飞机自由移动,空格键发射炮弹.

2.设有关卡,每打完一个boss就会过关,每过一关战机炮弹会升级,敌机随机发射子弹数量增加.

3.战机起始十条命,可以通过过关和吃到道具增加血量。

4.战机子弹打中敌机,敌机就会爆炸,boss血量随关卡升高而增多,打败敌机或者boss会有分数加成。

5.设有无敌模式和普通模式,无敌模式大招无限,生命无限,战机导弹直接升至最高等级.

2。

相关技术

2。

1碰撞检测

用CRect类的GetRect()函数可以获得当前对象的矩形区域,IntersectRect()并用此函数判断二者是否碰撞.

2.2CObList链表

这个程序使用CObList链表来存储各效果。

CobList类似于一个双向链表,POSITION类型的变量为链表的键.使用POSITION变量,既可以作为链表循环中的循环变量,也可以作为标记某个位置的标签.我们可以通过获得某元素的POSITION来访问它。

本程序中主要用到的函数有:

GetHeadPosition():

获取链表首元素的POSITION;

AddTail():

将新的元素添加到链表最后;

GetNext(POSITION&rPosition):

使rPosition指向下一个元素.

2。

3设置定时器

SetTimer()函数来设置定时器。

2。

4背景滚动

为了让游戏场景更加逼真,游戏节奏更加合理,可以通过让背景滚动来提高游戏的场景效应,实现这一技术时,可以将一张背景图片复制为2张,从上到下连续的拼接在一起,使其不会出现图片的卡顿和瞬移现象。

2。

5内存释放技术

这个程序中有大量的地方需要使用内存,如果不及时删除会出现闪图等情况,容易导致程序崩溃,要及时释放内存资源。

3。

总体设计与详细设计

3。

1系统模块划分

3.2主要功能模块

类关系图:

4.编码实现

//PlaneGameView。

cpp:

CPlaneGameView类的实现

voidCPlaneGameView:

:

UpdateFrame(CDC*pMemDC)

{

//绘制天空

if(level==0)

CPaintDCdc(this);

CBitmapbmpBackground;//位图对象

bmpBackground.LoadBitmap(IDB_BITMAP1);

CDCdcMem;//定义一个工具箱(设备上下文)

dcMem.CreateCompatibleDC(&dc);

BITMAPbitmap;

bmpBackground。

GetBitmap(&bitmap);//建立绑定关系

CBitmap*back=dcMem。

SelectObject(&bmpBackground);//保存原有CDC对象,并选入新CDC对象入DC

staticintcurr=1;

if(curr<=1)

curr=GAME_HEIGHT-1;

curr—=1;

pMemDC-〉BitBlt(0,0,GAME_WIDTH,GAME_HEIGHT—curr,&dcMem,0,curr,SRCCOPY);

pMemDC—>BitBlt(0,GAME_HEIGHT-curr,GAME_WIDTH,curr,&dcMem,0,0,SRCCOPY);

}

if(level>=1&&l==0&&boss==0)

pMemDC—〉FillSolidRect(0,0,GAME_WIDTH,GAME_HEIGHT,RGB(0,0,0));

l++;z=1;

if(level==1&&l!

=0&&boss!

=0)

{

CPaintDCdc(this);

CBitmapbmpBackground;//位图对象

bmpBackground。

LoadBitmap(IDB_BITMAP1);

CDCdcMem;//定义一个工具箱(设备上下文)

dcMem。

CreateCompatibleDC(&dc);

BITMAPbitmap;

bmpBackground。

GetBitmap(&bitmap);//建立绑定关系

CBitmap*back=dcMem.SelectObject(&bmpBackground);//保存原有CDC对象,并选入新CDC对象入DC

staticintcurr=1;

if(curr〈=1)

curr=GAME_HEIGHT-1;

curr—=1;

pMemDC—>BitBlt(0,0,GAME_WIDTH,GAME_HEIGHT-curr,&dcMem,0,curr,SRCCOPY);

pMemDC—〉BitBlt(0,GAME_HEIGHT—curr,GAME_WIDTH,curr,&dcMem,0,0,SRCCOPY);

if(level==2&&l!

=0&&boss!

=0)

CPaintDCdc(this);

CBitmapbmpBackground;//位图对象

bmpBackground.LoadBitmap(IDB_MAP2);

CDCdcMem;//定义一个工具箱(设备上下文)

dcMem。

CreateCompatibleDC(&dc);

BITMAPbitmap;

bmpBackground.GetBitmap(&bitmap);//建立绑定关系

CBitmap*back=dcMem.SelectObject(&bmpBackground);//保存原有CDC对象,并选入新CDC对象入DC

staticintcurr=1;

if(curr〈=1)

curr=GAME_HEIGHT-1;

curr-=1;

pMemDC-〉BitBlt(0,0,GAME_WIDTH,GAME_HEIGHT-curr,&dcMem,0,curr,SRCCOPY);

pMemDC->BitBlt(0,GAME_HEIGHT-curr,GAME_WIDTH,curr,&dcMem,0,0,SRCCOPY);

if(level==3&&l!

=0&&boss!

=0)

{

CPaintDCdc(this);

CBitmapbmpBackground;//位图对象

bmpBackground.LoadBitmap(IDB_MAP3);

CDCdcMem;//定义一个工具箱(设备上下文)

dcMem。

CreateCompatibleDC(&dc);

BITMAPbitmap;

bmpBackground。

GetBitmap(&bitmap);//建立绑定关系

CBitmap*back=dcMem.SelectObject(&bmpBackground);//保存原有CDC对象,并选入新CDC对象入DC

staticintcurr=1;

if(curr<=1)

curr=GAME_HEIGHT—1;

curr—=1;

pMemDC->BitBlt(0,0,GAME_WIDTH,GAME_HEIGHT-curr,&dcMem,0,curr,SRCCOPY);

pMemDC->BitBlt(0,GAME_HEIGHT-curr,GAME_WIDTH,curr,&dcMem,0,0,SRCCOPY);

if(level==4&&l!

=0&&boss!

=0)

CPaintDCdc(this);

CBitmapbmpBackground;//位图对象

bmpBackground.LoadBitmap(IDB_MAP4);

CDCdcMem;//定义一个工具箱(设备上下文)

dcMem。

CreateCompatibleDC(&dc);//兼容

BITMAPbitmap;

bmpBackground.GetBitmap(&bitmap);//建立绑定关系

CBitmap*back=dcMem。

SelectObject(&bmpBackground);//保存原有CDC对象,并选入新CDC对象入DC

staticintcurr=1;

if(curr〈=1)

curr=GAME_HEIGHT—1;

curr—=1;

pMemDC-〉BitBlt(0,0,GAME_WIDTH,GAME_HEIGHT-curr,&dcMem,0,curr,SRCCOPY);

pMemDC—>BitBlt(0,GAME_HEIGHT—curr,GAME_WIDTH,curr,&dcMem,0,0,SRCCOPY);

}

if(level==5&&l!

=0&&boss!

=0)

{

CPaintDCdc(this);

CBitmapbmpBackground;//位图对象

bmpBackground。

LoadBitmap(IDB_MAP5);

CDCdcMem;//定义一个工具箱(设备上下文)

dcMem.CreateCompatibleDC(&dc);

BITMAPbitmap;

bmpBackground.GetBitmap(&bitmap);//建立绑定关系

CBitmap*back=dcMem。

SelectObject(&bmpBackground);//保存原有CDC对象,并选入新CDC对象入DC

staticintcurr=1;

if(curr〈=1)

curr=GAME_HEIGHT—1;

curr—=1;

pMemDC-〉BitBlt(0,0,GAME_WIDTH,GAME_HEIGHT—curr,&dcMem,0,curr,SRCCOPY);

pMemDC->BitBlt(0,GAME_HEIGHT—curr,GAME_WIDTH,curr,&dcMem,0,0,SRCCOPY);

if(level>5&&l!

=0&&boss!

=0)

{

CPaintDCdc(this);

CBitmapbmpBackground;//位图对象

bmpBackground.LoadBitmap(IDB_MAP6);

CDCdcMem;//定义一个工具箱(设备上下文)

dcMem.CreateCompatibleDC(&dc);

BITMAPbitmap;

bmpBackground。

GetBitmap(&bitmap);//建立绑定关系

CBitmap*back=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1