77范文网 - 专业文章范例文档资料分享平台

飞机大战实训(3)

来源:网络收集 时间:2019-02-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

信息科学与工程学院软件实践实训报告

{ listBall.AddTail(new

CBall(pEnemy->GetPoint().x+6,pEnemy->GetPoint().y+25,pEnemy->GetMontion())); listBall.AddTail(new

CBall(pEnemy->GetPoint().x+20,pEnemy->GetPoint().y+25,pEnemy->GetMontion())); } pEnemy->Draw(pDC,TRUE); } else { listEnemy.RemoveAt(oldpos); listExplosion.AddTail(new CExplosion(rect.left,rect.top));//敌机爆 life-=1; break; } }

POSITION posBomb,oldposBomb;//导弹设置 CBomb* pBomb; posBomb=listBomb.GetHeadPosition(); while(posBomb!=NULL)//GetHeadPosition 返回列表中首元素的位置 { CRect enRect; oldposBomb=posBomb; pBomb= (CBomb *)listBomb.GetNext(posBomb);//GetNext(pos)获取列表元素标识由rPosition,然后设置rPosition 到下一项的POSITION 值列表中的。 //CRect enemyRect = pEnemy->GetRect();//获得敌机机区域 //if(!enRect.IntersectRect(pEnemy->GetRect(),pBomb->GetRect()))//矩形框没有交集 pBomb->Draw(pDC,true); }

//战机子弹炸掉敌机 if(life!=0) { POSITION B1=NULL,B2=NULL; B1=listBomb.GetHeadPosition(); while((B2=B1)!=NULL)//GetHeadPosition 返回列表中首元素的位置 { pBomb= (CBomb*)listBomb.GetNext(B1);//GetNext获取循环遍历中的下一个元素 CRect bRect = pBomb->GetRect();//获得导弹区域

11

信息科学与工程学院软件实践实训报告

POSITION E1=NULL,E2=NULL; E1=listEnemy.GetHeadPosition(); while((E2=E1)!=NULL)//GetHeadPosition 返回列表中首元素的位置 { pEnemy=(CEnemy*)listEnemy.GetNext(E1); CRect eRect=pEnemy->GetRect();//获得敌机区域 CRect enRect;//定义一个区域,该区域作用为获得导弹和敌机区域的交集。 if(enRect.IntersectRect(&bRect,eRect))//若导弹和敌机有交集,删除导弹和敌机,添加爆炸效果 { score+=20; //添加炸弹效果 listExplosion.AddTail(new CExplosion(eRect.left, eRect.top)); //删除导弹 listBomb.RemoveAt(B2);//RemoveAt 从列表中删除指定位置的元素 delete pBomb; //删除敌机 listEnemy.RemoveAt(E2); delete pEnemy; break; } } } } //敌机子弹炸掉战机 if(life!=0) { POSITION C1=NULL,C2=NULL; CRect mRect = plane.GetRect();//获得战机区域 C1=listBall.GetHeadPosition(); while(( C2 = C1 ) != NULL)//GetHeadPosition 返回列表中首元素的位置 { pBall = (CBall*)listBall.GetNext(C1); CRect bRect = pBall->GetRect();//获得子弹区域 CRect tmpRect; if(tmpRect.IntersectRect(&bRect,mRect))//子弹区域与战机区域相交 { life-=1; //添加炸弹效果 listExplosion.AddTail(new CExplosion(mRect.left,mRect.top));

12

信息科学与工程学院软件实践实训报告

//删除子弹 listBall.RemoveAt(C2); delete pBall; break; } } }

//添加敌机子弹 POSITION posBall=NULL; /*CBall* pBall;*/ posBall=listBall.GetHeadPosition(); //CRect enemyRect = pEnemy->GetRect();//获得敌机机区域 while(posBall!=NULL) { //CRect enemyRect = pEnemy->GetRect();//获得敌机机区域 CBall* pBall=(CBall *)listBall.GetNext(posBall); pBall->Draw(pDC, false); //listBall.AddTail(new

CBall(pEnemy->GetPoint().x+12,pEnemy->GetPoint().y+25,pEnemy->GetMontion())); }

if(score 0==0&&score!=0) { life+=1; score+=20; }

if(life<=0) {

bnp.LoadBitmap(IDB_Gameover);//添加结束背景 static int i=0;//i的作用是让OnTimer()函数再循环次,以便完成爆炸效果 i++; if(i==8) { m_brushBackground1.CreatePatternBrush(&bnp); ///创建位图画刷 pDC->FillRect(rect,&m_brushBackground1); ///用背景画刷填充区域 KillTimer(1); } }

13

信息科学与工程学院软件实践实训报告

ReleaseDC(pDC); CView::OnTimer(nIDEvent); }

void C飞机大战View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: 在此添加消息处理程序代码和/或调用默认值

if (nChar==VK_LEFT) plane.SetHorMotion(-1); else if(nChar==VK_RIGHT) plane.SetHorMotion(1); else if(nChar==VK_UP) plane.SetVerMotion(-1); else if(nChar==VK_DOWN) plane.SetVerMotion(1); if(nChar==VK_CONTROL)//ctrl键表示暂停 { Sleep(2000);//暂停5秒 }

else if(nChar==VK_SPACE)//空格键//战机添加导弹 { listBomb.AddTail(new CBomb(plane.GetPoint().x+10,plane.GetPoint().y+20)); listBomb.AddTail(new CBomb(plane.GetPoint().x+30,plane.GetPoint().y+20)); } CView::OnKeyDown(nChar, nRepCnt, nFlags); }

void C飞机大战View::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: 在此添加消息处理程序代码和/或调用默认值

if(pMyPlane!=NULL)

14

信息科学与工程学院软件实践实训报告

}

{ }

if(nChar==VK_RIGHT) { plane.SetHorMotion(0); }

if(nChar==VK_LEFT) { plane.SetHorMotion(0); }

if(nChar==VK_UP) { plane.SetVerMotion(0); }

if(nChar==VK_DOWN) { plane.SetVerMotion(0); }

CView::OnKeyUp(nChar, nRepCnt, nFlags);

4.2MyPlane.cpp

#include \#include \#include \

CImageList CMyPlane::m_Images; CMyPlane::CMyPlane(void) { m_ptPos.x=400; m_ptPos.y=400; m_nHorMotion=0; m_nVerMotion=0; }

CMyPlane::~CMyPlane(void) { }

15

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库飞机大战实训(3)在线全文阅读。

飞机大战实训(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/483262.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: