飞机大战实训报告_第1页
飞机大战实训报告_第2页
飞机大战实训报告_第3页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 概述2. 相关技术2.1碰撞检测2.2 CObList 链表2.3设置定时器2.4背景滚动技术2.5内存释放技术3. 总体设计与详细设计3.1系统模块划分3.2主要功能模块4. 编码实现65. 实训中遇到的主要问题及解决方法 496. 实训体会501. 概述这次实训,目的以VS为环境,利用MFC,使用C+语言编写一个简单的飞机大战游戏实现的主要功能:1. 有开始游戏界面,上下左右键控制飞机自由移动,空格键发射炮弹。2. 设有关卡,每打完一个boss就会过关,每过一关战机炮弹会升级,敌机随机发射子 弹数量增加。3. 战机起始十条命,可以通过过关和吃到道具增加血量。4. 战机子弹打中敌机,敌

2、机就会爆炸,boss血量随关卡升高而增多,打败敌机或者boss 会有分数加成。5. 设有无敌模式和普通模式,无敌模式大招无限,生命无限,战机导弹直接升至最高 等级。2. 相关技术2.1碰撞检测用CRect类的GetRect(函数可以获得当前对象的矩形区域,IntersectRect(并用此函数判 断二者是否碰撞。2.2 CObList 链表这个程序使用CObList链表来存储各效果。CobList类似于一个双向链表,POSITION 类型的变量为链表的键。使用 POSITION变量,既可以作为链表循环中的循环变量,也可 以作为标记某个位置的标签。我们可以通过获得某元素的POSITION来访问它

3、。本程序中主要用到的函数有:GetHeadPosition():获取链表首元素的 POSITION ;AddTail ():将新的元素添加到链表最后;GetNext( POSITION& rPosition ):使 rPosition指向下一个元素。2.3设置定时器SetTimer(函数来设置定时器。2.4背景滚动为了让游戏场景更加逼真,游戏节奏更加合理,可以通过让背景滚动来提高游戏的场景 效应,实现这一技术时,可以将一张背景图片复制为2张,从上到下连续的拼接在一起,使其不会出现图片的卡顿和瞬移现象。2.5内存释放技术这个程序中有大量的地方需要使用内存,如果不及时删除会出现闪图等情况,

4、容易导致 程序崩溃,要及时释放内存资源。3. 总体设计与详细设计3.1系统模块划分游戏糸3.2主要功能模块CBitmap bmpBackground; / 位图对象bmpBackgrou nd.LoadBitmap(IDB_BITMAP1);CDC dcMem; II定义一个工具箱(设备上下文)dcMem.CreateCompatibleDC(&dc);BITMAP bitmap;bmpBackground.GetBitmap(&bitmap); / 建立绑定关系CBitmap *back = dcMem.SelectObject(&bmpBackground); /

5、保存原有 CDC 对象, 并选入新 CDC 对象入 DCstatic 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&am

6、p;&boss=0)l+;z=1;if(level=1&&l!=0&&boss!=0)CPaintDC dc(this);CBitmap bmpBackground; / 位图对象 bmpBackground.LoadBitmap(IDB_BITMAP1);CDC dcMem; / 定义一个工具箱(设备上下文) dcMem.CreateCompatibleDC(&dc);BITMAP bitmap;bmpBackground.GetBitmap(&bitmap); / 建立绑定关系CBitmap *back = dcMem.SelectO

7、bject(&bmpBackground); / 保存原有 CDC 对象,并选入新 CDC 对象入 DCstatic int curr = 1;if (curr <= 1)curr = GAME_HEIGHT - 1;curr -= 1;curr,0, 0,pMemDC->BitBlt(0, 0, GAME_WIDTH, GAME_HEIGHT - curr, &dcMem, 0, SRCCOPY);pMemDC->BitBlt(0, GAME_HEIGHT - curr, GAME_WIDTH, curr, &dcMem, SRCCOPY);if (

8、level = 2 && l != 0 && boss != 0)CPaintDC dc(this);CBitmap bmpBackground; / 位图对象bmpBackground.LoadBitmap(IDB_MAP2);CDC dcMem; / 定义一个工具箱(设备上下文)dcMem.CreateCompatibleDC(&dc);BITMAP bitmap;bmpBackground.GetBitmap(&bitmap); / 建立绑定关系CBitmap *back = dcMem.SelectObject(&bmpBackg

9、round); / 保存原有 CDC 对象, 并选入新 CDC 对象入 DCstatic 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=3 &&

10、; l != 0 && boss != 0)CPaintDC dc(this);CBitmap bmpBackground; / 位图对象bmpBackground.LoadBitmap(IDB_MAP3);CDC dcMem; / 定义一个工具箱(设备上下文)dcMem.CreateCompatibleDC(&dc);BITMAP bitmap;bmpBackground.GetBitmap(&bitmap); / 建立绑定关系CBitmap *back = dcMem.SelectObject(&bmpBackground); / 保存原有 CDC

11、对象, 并选入新 CDC 对象入 DCstatic 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=4 && l != 0 &&

12、 boss != 0)CPaintDC dc(this);CBitmap bmpBackground; / 位图对象 bmpBackground.LoadBitmap(IDB_MAP4);CDC dcMem; / 定义一个工具箱(设备上下文)dcMem.CreateCompatibleDC(&dc);/兼容BITMAP bitmap;bmpBackground.GetBitmap(&bitmap); / 建立绑定关系CBitmap *back = dcMem.SelectObject(&bmpBackground); / 保存原有 CDC 对象,并选入新 CDC 对象入

13、 DCstatic 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=5 && l != 0 && boss != 0)CPaintD

14、C dc(this);CBitmap bmpBackground; / 位图对象 bmpBackground.LoadBitmap(IDB_MAP5);CDC dcMem; / 定义一个工具箱(设备上下文) dcMem.CreateCompatibleDC(&dc);BITMAP bitmap;bmpBackground.GetBitmap(&bitmap); / 建立绑定关系CBitmap *back = dcMem.SelectObject(&bmpBackground); / 保存原有 CDC 对象,并选入新 CDC 对象入 DCstatic int curr =

15、 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)CPaintDC dc(this);CBit

16、map bmpBackground; / 位图对象bmpBackground.LoadBitmap(IDB_MAP6);CDC dcMem; / 定义一个工具箱(设备上下文)dcMem.CreateCompatibleDC(&dc);BITMAP bitmap;bmpBackground.GetBitmap(&bitmap); / 建立绑定关系CBitmap *back = dcMem.SelectObject(&bmpBackground); / 保存原有 CDC 对象, 并选入新 CDC 对象入 DCstatic int curr = 1;if (curr <

17、= 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);pMemDC->SetBkMode(TRANSPARENT);pMemDC->SetTextAlign(TA_CENTER);pMemDC->SetTextColo

18、r(RGB(255, 255, 255);if(level=0)wchar_t S81000;wsprintf(S8, L'单击鼠标进入游戏");pMemDC->TextOutW(GAME_WIDTH / 2, GAME_HEIGHT / 2, CString(S8); if(level>=1&&z!=0)wchar_t S91000;wsprintf(S9, L"点击进入下一关");pMemDC->TextOutW(GAME_WIDTH / 2, GAME_HEIGHT / 2, CString(S9); if(leve

19、l>=1&&z=0)wchar_t S11000;wchar_t S21000;wsprintf(S1, L"得分:d", number);wsprintf(S2, L"关卡:%d", level);pMemDC->TextOutW(35, 0, CString(S1);pMemDC->TextOutW(200, 0, CString(S2);wchar_t S31000;wsprintf(S3丄,按下“ F1”开启无敌模式");pMemDC->TextOutW(390, 0, CString(S3);w

20、char_t S41000;wsprintf(S4, L'按下“ F2”关闭无敌模式"); pMemDC->TextOutW(390, 20, CString(S4);wchar_t S51000;if(wu=0) wsprintf(S5, L'大招数量:d",dazhao );pMemDC->TextOutW(430, 40, CString(S5);if(wu=1)wsprintf(S5, L'大招数量:无限");pMemDC->TextOutW(430, 40, CString(S5);wchar_t S61000;

21、wsprintf(S6, L"按下空格发射子弹");pMemDC->TextOutW(60, 50, CString(S6);wchar_t S71000;wsprintf(S7, L"按下“ Z ”大招");pMemDC->TextOutW(56, 70, CString(S7);/ 绘制我方战机if (m_pMe != NULL)m_pMe->Draw(m_pMemDC, FALSE);else /Game OverCString str = _T("Game Over!");pMemDC->TextOut

22、(GAME_WIDTH / 2, GAME_HEIGHT / 2, str);/ 绘制血条if (m_pMe != NULL)CString z1;z1.Format(L"战机 HP (%d) ", shengming);pMemDC->TextOut(47, 30, z1);pMemDC->FillSolidRect(90, 33, shengming * 10, 10, RGB(255, 0, 0);if (bxt = 1)CString z2;z2.Format(L"Boss HP (%d)",boss);pMemDC->Text

23、Out(35, 100, z2);/绘制导弹、爆炸、敌机、子弹、boss boss子弹for (int i = 0;i <= 8;i+)POSITION pos1, pos2;for (pos1 = m_ObjListi.GetHeadPosition(); (pos2 = pos1) != NULL; )CGameObject* pObj = (CGameObject*)m_ObjListi.GetNext(pos1);if (pObj && !pObj->Draw(pMemDC, FALSE)m_ObjListi.RemoveAt(pos2);delete pO

24、bj;/ 复制内存 DC 到设备 DCm_pDC->BitBlt(0, 0, GAME_WIDTH, GAME_HEIGHT, m_pMemDC, 0, 0, SRCCOPY); void CPlaneGameView:AI()static int nCreator = rand() % 5+20 ;/ 随机产生敌机if (nCreator <= 0)nCreator = rand() % 5 +20;m_ObjListenEnemy.AddTail(new CEnemy); nCreator-;/ 随机产生大招if (count % 30 = 0)m_ObjListendazha

25、o.AddTail(new Cda);count+;/ 随机产生生命if (count % 40 = 0)m_ObjListenming.AddTail(new Cshengming);count+;/ 产生 bossif (level = 1&&bn=0&&count>=25&&count<=27)m_ObjListenboss.AddTail(new Cboss);bxt = 1;bn+;if (level = 2&&bn=0&&count>=50&&count<=52)

26、m_ObjListenboss.AddTail(new Cboss);bxt = 1;bn+;if (level = 3&&bn=0&&count>=75&&count<=77)m_ObjListenboss.AddTail(new Cboss);bxt = 1;bn+;if (level = 4&&bn=0&&count>=100&&count<=102)m_ObjListenboss.AddTail(new Cboss);bxt = 1;bn+;if (level = 5

27、&&bn=0&&count>=150&&count<=152)m_ObjListenboss.AddTail(new Cboss);bxt = 1;bn+;if (level>5&&count%200=0&&bn=0)m_ObjListenboss.AddTail(new Cboss);bxt = 1;bn+;if (m_pMe = NULL)return;/ 检测四个方向键,移动战机for (int i = 0;i<4;i+)int nMeMotion = 0;m_pMe->SetV

28、erMotion(0);m_pMe->SetHorMotion(0); nMeMotion = GetKey(VK_UP);if (nMeMotion = 1)m_pMe->SetVerMotion(1); nMeMotion = GetKey(VK_DOWN); if (nMeMotion = 1)m_pMe->SetVerMotion(-1); nMeMotion = GetKey(VK_RIGHT);if (nMeMotion = 1)m_pMe->SetHorMotion(1);nMeMotion = GetKey(VK_LEFT);if (nMeMotion

29、= 1)m_pMe->SetHorMotion(-1);/ 产生战机导弹if (GetKey(VK_SPACE) = 1)/ 按下了空格键if (m_pMe != NULL && m_pMe->Fired()CPoint pt = m_pMe->GetPoint();if (level = 1 && wu = 0)m_ObjListenBomb.AddTail(new CBomb(pt.x + 20, pt.y + 10);if (level = 2 && wu = 0)m_ObjListenBomb.AddTail(new C

30、Bomb(pt.x + 10, pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x + 30, pt.y + 30);if (level = 3 && wu = 0)m_ObjListenBomb.AddTail(new CBomb(pt.x + 10, pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x + 30, pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x + 20, pt.y + 30);if (level >= 4

31、 && wu = 0)m_ObjListenBomb.AddTail(new CBomb(pt.x + 10, pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x + 30, pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x + 20, pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x , pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x + 40, pt.y + 30);if (w

32、u = 1)m_ObjListenBomb.AddTail(new CBomb(pt.x + 10, pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x + 30, pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x + 20, pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x, pt.y + 30);m_ObjListenBomb.AddTail(new CBomb(pt.x + 40, pt.y + 30); if (GetKey(VK_F1)

33、= 1)/ 按下了 F1if (m_pMe != NULL && m_pMe->Fired()wu = 1;if (GetKey(VK_F2) = 1 && wu = 1)/ 按下了 F2if (m_pMe != NULL && m_pMe->Fired()wu = 0;/boss 发射子弹static int num = 100;if (m_pMe != NULL && num <= 0)for (POSITION ePos = m_ObjListenboss.GetHeadPosition(); ePos !

34、= NULL;)Cboss* pEnemy = (Cboss*)m_ObjListenboss.GetNext(ePos);CPoint ePt = pEnemy->GetPoint();CBossball * t;for (int i = -level + 1; i <= level - 1; i+)t = new CBossball(ePt.x + 20, ePt.y + 30);t->zx = int(4.0*sin(3.14* double(i) / 9);t->zy = int(8.0*cos(3.14* double(i) / 9);m_ObjListenB

35、ossball.AddTail(t);num = 100;num-;/ 敌机发射子弹if (m_pMe)CPoint PlanePt = m_pMe->GetPoint();for (POSITION ePos = m_ObjListenEnemy.GetHeadPosition(); ePos != NULL;)CEnemy* pEnemy = (CEnemy*)m_ObjListenEnemy.GetNext(ePos);if (!pEnemy->Fired()continue;CPoint ePt = pEnemy->GetPoint();BOOL by = FALSE

36、;/ 敌机在战机前面if (pEnemy->GetMontion() = 1 && ePt.y<PlanePt.y)by = TRUE;/ 敌机在战机后面if (pEnemy->GetMontion() = -1 && ePt.y>PlanePt.y)by = TRUE;if (by && ePt.x >= PlanePt.x && ePt.x < PlanePt.x + CMyPlane:PLANE_WIDTH) CBall * t;for (int i = -level + 1; i <

37、;= level - 1; i+)t = new CBall(ePt.x + 20, ePt.y + 30, -pEnemy->GetMontion();t->xx = int(8.0*sin(3.14* double(i) / 9);t->xy = int(8.0*cos(3.14* double(i) / 9);m_ObjListenBall.AddTail(t);/boss 子弹打到战机if (m_pMe != NULL)POSITION nPos3 = NULL, nPos4 = NULL;CRect mRect = m_pMe->GetRect();for (

38、nPos3 = m_ObjListenBossball.GetHeadPosition(); (nPos4 = nPos3) != NULL;)CBall* pBall = (CBall*)m_ObjListenBossball.GetNext(nPos3);CRect bRect = pBall->GetRect();CRect tmpRect;if (tmpRect.IntersectRect(&bRect, mRect)if (wu = 0 )shengming-;/生命减少m_ObjListenExplosion.AddTail(new CExplosion(mRect.

39、left, mRect.top);/ 删除子弹m_ObjListenBossball.RemoveAt(nPos4); delete pBall;if (shengming <= 0)/ 删除战机delete m_pMe;m_pMe = NULL;break;/ 敌机子弹打到战机if (m_pMe)POSITION nPos1 = NULL, nPos2 = NULL;CRect mnRect = m_pMe->GetRect();for (nPos1 = m_ObjListenEnemy.GetHeadPosition(); (nPos2 = nPos1) != NULL;)CB

40、all* pBall = (CBall*)m_ObjListenEnemy.GetNext(nPos1);CRect bRect = pBall->GetRect();CRect tmpRect;if (tmpRect.IntersectRect(&bRect, mnRect)/ 添加爆炸效果if (wu = 0 )shengming-;/生命减少 m_ObjListenExplosion.AddTail(new CExplosion(mnRect.left, mnRect.top) );/ 删除子弹 m_ObjListenEnemy.RemoveAt(nPos2); delet

41、e pBall;if (shengming <= 0)/ 删除战机delete m_pMe;m_pMe = NULL;break;if (NULL != m_pMe) / 敌机撞战机POSITION bPos1 = NULL, bPos2 = NULL;CRect mRect = m_pMe->GetRect();for (bPos1 = m_ObjListenBall.GetHeadPosition(); (bPos2 = bPos1) != NULL;)CBall* pBall = (CBall*)m_ObjListenBall.GetNext(bPos1);CRect bRe

42、ct = pBall->GetRect();CRect tmpRect;if (tmpRect.IntersectRect(&bRect, mRect)/ 添加爆炸效果if (wu = 0 )shengming-;/生命减少m_ObjListenExplosion.AddTail(new CExplosion(mRect.left, mRect.top);/ 删除子弹m_ObjListenBall.RemoveAt(bPos2);delete pBall;if (shengming <= 0)/ 删除战机delete m_pMe;m_pMe = NULL;break;/ 吃

43、大招if (NULL != m_pMe) POSITION bPos1 = NULL, bPos2 = NULL;CRect bRect = m_pMe->GetRect();for (bPos1 = m_ObjListendazhao.GetHeadPosition(); (bPos2 = bPos1) != NULL;)CBall* pBall = (CBall*)m_ObjListendazhao.GetNext(bPos1);CRect mRect = pBall->GetRect();CRect tmpRect;if (tmpRect.IntersectRect(&

44、;mRect, bRect)dazhao+;/ 删除子弹m_ObjListendazhao.RemoveAt(bPos2);delete pBall;/ 吃生命if (NULL != m_pMe) POSITION bPos1 = NULL, bPos2 = NULL;CRect mRect = m_pMe->GetRect();for (bPos1 = m_ObjListenming.GetHeadPosition(); (bPos2 = bPos1) != NULL;) CBall* pBall = (CBall*)m_ObjListenming.GetNext(bPos1);CRe

45、ct bRect = pBall->GetRect();CRect tmpRect;if (tmpRect.IntersectRect(&bRect, mRect)shengming+;/ 删除子弹m_ObjListenming.RemoveAt(bPos2);delete pBall;/ 战机导弹炸掉敌机POSITION mPos1 = NULL, mPos2 = NULL;for (mPos1 = m_ObjListenBomb.GetHeadPosition();(mPos2 = mPos1) != NULL;)CBomb* pBomb = (CBomb*)m_ObjLis

46、tenBomb.GetNext(mPos1);CRect bRect = pBomb->GetRect();POSITION ePos1 = NULL, ePos2 = NULL;for (ePos1 = m_ObjListenEnemy.GetHeadPosition();(ePos2 = ePos1) != NULL;)CEnemy* pEnemy = (CEnemy*)m_ObjListenEnemy.GetNext(ePos1);CRect mRect = pEnemy->GetRect();CRect tmpRect;if (tmpRect.IntersectRect(&

47、amp;bRect, mRect) count+;number += 5;/ 添加爆炸效果m_ObjListenExplosion.AddTail(new CExplosion(mRect.left, mRect.top);/ 删除导弹if (da = 1)m_ObjListenBomb.RemoveAt(mPos2); delete pBomb;/ 删除敌机m_ObjListenEnemy.RemoveAt(ePos2);delete pEnemy;break;/ 战机导弹炸掉子弹POSITION mPos3 = NULL, mPos4 = NULL;for (mPos3 = m_ObjLi

48、stenBomb.GetHeadPosition(); (mPos4 = mPos3) != NULL;) CBomb* pBomb = (CBomb*)m_ObjListenBomb.GetNext(mPos3);CRect bRect = pBomb->GetRect();POSITION ePos3 = NULL, ePos4 = NULL;for (ePos3 = m_ObjListenBall.GetHeadPosition(); (ePos4 = ePos3) != NULL;) CBall* pBall = (CBall*)m_ObjListenBall.GetNext(e

49、Pos3);CRect mRect = pBall->GetRect();CRect tmpRect;if (tmpRect.IntersectRect(&bRect, mRect)/ 添加爆炸效果/ 删除导弹m_ObjListenBomb.RemoveAt(mPos4);delete pBomb;/ 删除敌机m_ObjListenBall.RemoveAt(ePos4);delete pBall;break;/ 导弹炸掉 bossPOSITION mPos5 = NULL, mPos6 = NULL;for (mPos5 = m_ObjListenBomb.GetHeadPos

50、ition(); (mPos6 = mPos5) != NULL;) CBomb* pBomb = (CBomb*)m_ObjListenBomb.GetNext(mPos5);CRect bRect = pBomb->GetRect();POSITION ePos5 = NULL, ePos6 = NULL;for (ePos5 = m_ObjListenboss.GetHeadPosition(); (ePos6 = ePos5) != NULL;)Cboss* pBall = (Cboss*)m_ObjListenboss.GetNext(ePos5);CRect mRect =

51、pBall->GetRect();CRect tmpRect;if (tmpRect.IntersectRect(&bRect, mRect)boss-;/ 添加爆炸效果m_ObjListenExplosion.AddTail(new CExplosion(mRect.left, mRect.top) );/ 删除导弹 m_ObjListenBomb.RemoveAt(mPos6); delete pBomb;if (boss <= 0)number = number + 100 * level;bxt = 0;/ 删除敌机 m_ObjListenboss.RemoveAt

52、(ePos6); delete pBall;dazhao+;bn = 0;count = 0;shengming += 2;l=0;boss=0;break;void CPlaneGameView:OnTimer(UINT_PTR nIDEvent)/ 刷新游戏帧画面 : 在内存 DC 上绘图UpdateFrame(m_pMemDC);if (beijing != GAME_HEIGHT)beijing += 2;elsebeijing = 0;AI();CView:OnTimer(nIDEvent);void CPlaneGameView:On0()/ TODO: 在此添加命令处理程序代码v

53、oid CPlaneGameView:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) / TODO: 在此添加消息处理程序代码和 / 或调用默认值CView:OnKeyDown(nChar, nRepCnt, nFlags);if(nChar=90&&wu=1)CPoint pt = m_pMe->GetPoint();m_ObjListenBomb.AddTail(new CBomb(pt.x - 50, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x100, pt.y

54、 + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x130, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x550, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x520, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x160, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x490, pt.y + 80);m_ObjListenBomb.AddTail

55、(new CBomb(pt.x460, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x190, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x430, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x400, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x220, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x370, pt.y + 80)

56、;m_ObjListenBomb.AddTail(new CBomb(pt.x340, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x - 280, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x + 30, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x + 60, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x + 90, pt.y + 80);m_ObjListenBomb.AddTail(new CBomb(pt.x + 120, pt.y + 80);m_ObjListenBomb.AddTail(new CBom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论