飞机大战实训(3)

2019-02-21 00:54

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

{ 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


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

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

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

马上注册会员

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