飞机大战实训报告.docx

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为了让游戏场景更加逼真,游戏节奏更加合理,可以通过让背景滚动来提高游戏的场景效应,实现这一技术时,可以将一张背景图片复制为2张,从上到下连续的拼接在一起,使其不会出现图片的卡顿和瞬移现象。
2.5内存释放技术
这个程序中有大量的地方需要使用内存,如果不及时删除会出现闪图等情况,容易导致程序崩溃,要及时释放内存资源。
CBitmap *back = dcMem.SelectObject(&bmpBackground); //保存原有CDC对象,并选入新CDC对象入DC
static int curr = 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));
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 (curr <= 1)
curr = GAME_HEIGHT - 1;
l++;z=1;
}
if(level==1&&l!=0&&boss!=0)
{
CPaintDC dc(this);
CBitmap bmpBackground; //位图对象
bmpBackground.LoadBitmap(IDB_BITMAP1);
CDC dcMem; //定义一个工具箱(设备上下文)
dcMem.CreateCompatibleDC(&dc);
3.
3.1
3.2
类关系图:
4.
// PlaneGameView.cpp : CPlaneGameView类的实现
void CPlaneGameView::UpdateFrame(CDC* pMemDC)
{
//绘制天空
if(level==0)
{
Cຫໍສະໝຸດ BaiduaintDC dc(this);
CBitmap bmpBackground; //位图对象
5.设有无敌模式和普通模式,无敌模式大招无限,生命无限,战机导弹直接升至最高等级。
2.
2.1
用CRect类的GetRect()函数可以获得当前对象的矩形区域,IntersectRect()并用此函数判断二者是否碰撞。
2.2
这个程序使用CObList链表来存储各效果。CobList类似于一个双向链表,POSITION类型的变量为链表的键。使用POSITION变量,既可以作为链表循环中的循环变量,也可以作为标记某个位置的标签。我们可以通过获得某元素的POSITION来访问它。
本程序中主要用到的函数有:
GetHeadPosition():获取链表首元素的POSITION;
AddTail():将新的元素添加到链表最后;
GetNext( POSITION& rPosition ):使rPosition指向下一个元素。
2.3
SetTimer()函数来设置定时器。
2.4 背景滚动
bmpBackground.LoadBitmap(IDB_BITMAP1);
CDC dcMem; //定义一个工具箱(设备上下文)
dcMem.CreateCompatibleDC(&dc);
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap); //建立绑定关系
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap); //建立绑定关系
CBitmap *back = dcMem.SelectObject(&bmpBackground); //保存原有CDC对象,并选入新CDC对象入DC
static int curr = 1;
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap); //建立绑定关系
CBitmap *back = dcMem.SelectObject(&bmpBackground); //保存原有CDC对象,并选入新CDC对象入DC
static int curr = 1;
}
if (level == 2 && l != 0 && boss != 0)
{
CPaintDC dc(this);
CBitmap bmpBackground; //位图对象
bmpBackground.LoadBitmap(IDB_MAP2);
CDC dcMem; //定义一个工具箱(设备上下文)
dcMem.CreateCompatibleDC(&dc);
1. 概述3
2. 相关技术3
2.1碰撞检测3
2.2 CObList链表3
2.3 设置定时器3
2.4 背景滚动技术3
2.5 内存释放技术3
3. 总体设计与详细设计4
3.1 系统模块划分4
3.2 主要功能模块4
4. 编码实现6
5. 实训中遇到的主要问题及解决方法49
6. 实训体会50
1.
这次实训,目的以VS 为环境,利用MFC,使用C++语言编写一个简单的飞机大战游戏 。
实现的主要功能:
1.有开始游戏界面,上下左右键控制飞机自由移动,空格键发射炮弹。
2.设有关卡,每打完一个boss就会过关,每过一关战机炮弹会升级,敌机随机发射子弹数量增加。
3.战机起始十条命,可以通过过关和吃到道具增加血量。
4.战机子弹打中敌机,敌机就会爆炸,boss血量随关卡升高而增多,打败敌机或者boss会有分数加成。
相关文档
最新文档