飛機大戰(zhàn)實訓報告講解_第1頁
飛機大戰(zhàn)實訓報告講解_第2頁
飛機大戰(zhàn)實訓報告講解_第3頁
飛機大戰(zhàn)實訓報告講解_第4頁
飛機大戰(zhàn)實訓報告講解_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、程序設計綜合實踐實習報告學院名稱信息科學與工程學院專業(yè)班級軟件工程20123學生姓名程大川學號201201051002指導教師孫紅梅山東科技大學信息科學與工程學院軟件實踐實訓報告_、實習題目:飛機大戰(zhàn)游戲的設計與實現(xiàn)二、實習時間:7周8周實習地點:J13-128三、實習任務:1. 基本功能要求:飛機大戰(zhàn)游戲必須運用透明貼圖、按鍵處理、定時控制、雙緩沖技術 等技術實現(xiàn)戰(zhàn)機(玩家)和敵機(計算機)對戰(zhàn)功能2. 擴展功能:在完成基本功能基礎上町以增加雙人對戰(zhàn)、游戲積分制、聲音效果、多種 子彈類型、客機類型、游戲關卡設計、多種類型敵機、游戲中間結果存貯等功能四、小組分工說明:此次實習項目,所有內(nèi)容均由

2、一人完成五、實習成績六、指導教師對實習的評語:指導教師(簽章):2014年 月 日信息科學與工程學院軟件實踐實訓報告1. 概述51.1實訓概述51.2功能概述52. 相關技術52.1滾動背景技術52.2透明貝占圖技術52.3走時器技術52.4雙緩沖技術25連續(xù)按鍵處理技術2.6童處理技術2.7鏈表存儲技術62.8動態(tài)效果技術73.需求分析731功能需求分析73.2數(shù)據(jù)需求分析73.3行為需求分析83.4其他需求84.總體設計與詳細設計84.1系纟站聆劃分4.2主要功能槪4.2.1玩家控制模塊設計圖信息科學與工程學院軟件實踐實訓報告4.2.2游戲邏輯模塊窈十圖(包含關卡控制)104.2.3圖形顯

3、示模塊設計(包含敵方生成模塊)124.3主要類圖134.4軟件結構耐體會135.編碼實現(xiàn)135.1編碼規(guī)范135.2代碼纟臣只策略145.3關鍵技術代碼實現(xiàn)146 .測試情況說明。226.1主要模塊測試情況22模塊1、碰撞模塊測試22模塊2、滾動背景模塊測試23模塊3、關卡模塊測試236.2主要功能測試情況23功自總1、飛機控制功育試23功自總2、育E量塊吃取功能試23功自總3、BOSS功能測試23功自總3、顯示功自纟測試237. 實訓中遇到的主要問題及解決方法238. 實訓收獲與體會24信息科學與工程學院軟件實踐實訓報告1.概述1.1實訓概述這次實訓,目的以Wmdow7+VS 2013為壞境

4、,編寫一個簡單的飛機大戰(zhàn)游戲,熟悉軟 件工程的思想,學習MFC編程的方法,加深對面向?qū)﹀杷枷氲睦斫?2功能概述用戶可以左右移動控制戰(zhàn)機和發(fā)射子彈,子彈命中敵機會造成傷害,敵機被擊毀可以獲 得積分,枳分達到一定程度會出現(xiàn)BOSS, BOSS被擊殺后即可進行下一關。游戲中會不定期出現(xiàn)道具包,吃取不同的道具包會有不同的增益效果。2.相關技術本項目涉及的兒個主要技術介紹和簡要實現(xiàn)方式如下:2.1滾動背景技術為了讓游戲場景更加逼真,游戲節(jié)奏更加合理,可以通過讓背景滾動來提高游戲的場景 效應,實現(xiàn)這一技術時,可以將一張背景圖片復制為三張,從上到下連續(xù)的拼接在一起,并 將中間的圖片進行垂直翻轉(zhuǎn),在輸出圖像時

5、,每次只輸出合成后圖片的1/3部分,每次輸出 后,將位圖中的縱坐標輸出位置增加一個位移量,當輸出位置到達圖片的2/3部分時,將圖 片的縱坐標輸出位置置為0,由于圖片的起始位置和圖片的2/3位置是一致,所以在背景圖 片的顯示中,不會出現(xiàn)圖片的卡頓和瞬移現(xiàn)彖。2.2透明貼圖技術在飛機人戰(zhàn)項目中,需要將很多的EMP圖像貼到畫布上,結合邏輯處理完成對整個游 戲的設計,為了實現(xiàn)更好的顯示效果,使移動元素所用的圖像更加貼合背景,則需要利用透 明貼圖技術,將BMP圖像中的無關顏色做透明處理,實現(xiàn)方式為調(diào)用CDC中的 TransparentBlt函數(shù),并且利用函數(shù)的最后一個參數(shù)填寫RGB信息,實現(xiàn)對對應顏色的

6、透明 化。23定時器技術為了實現(xiàn)屏幕的定時刷新功能和暫停功能,需要設置定時器,當設置好時間間隔時,每 次經(jīng)過一個設置的時間間隔,Windows都會向程序發(fā)送一個WM_TIME&并且調(diào)用相關函 數(shù),程序執(zhí)行OnTimer函數(shù),并根據(jù)定時器編號執(zhí)行相應的操作。實現(xiàn)方式為使用SetTmier信息科學與工程學院軟件實踐實訓報告函數(shù)設置定時器標識和時間間隔。另外也可以利用定時器實現(xiàn)對連續(xù)按鍵的處理,使子彈發(fā) 射和移動效果更加平滑合理。2.4雙緩沖技術利用普通的繪制函數(shù)對項目中元素進行繪圖時,由于繪圖時機不一定連續(xù),繪圖效率不 一定統(tǒng)一,會造成重影和閃屏的不良效果,為了解決這一問題,可以利用雙緩沖技術,先

7、將 要繪制的每部分內(nèi)容存儲到內(nèi)存中的一個虛擬的繪圖設備中,當所有部分的內(nèi)容都繪制完畢 后,再一次性的將內(nèi)存中的內(nèi)容繪制到真實屏幕上,實現(xiàn)這一方式,可以在程序定義一個 CDC指針變量和CBiUnap指針向量實現(xiàn),在構造函數(shù)中為兩個指針分配內(nèi)存空間,將所有 的圖像繪制完畢后,再利用GetDC函數(shù)取得真實窗I I CDC指針和BitBlt函數(shù)將內(nèi)存中的內(nèi) 容完整的拷貝至真實屏幕上。2.5連續(xù)按鍵處理技術在飛機大戰(zhàn)項目中,需要根據(jù)鍵盤輸入決定游戲中各種位置的改變和一些變量的內(nèi)容, 在利用戰(zhàn)機發(fā)射子彈或者進行移動時,需要按下鍵盤的空格鍵或者方向鍵,在該項目中,如 果利用MFC中提供的默認消息處理函數(shù)進行

8、按鍵消息的處理,則會導致子彈發(fā)射頻率過快, 戰(zhàn)機移動過快,甚至程序卡死等嚴重問題,所以應將按鍵消息處理放在OnTmier函數(shù)里, 以達到平滑的移動和發(fā)射子彈效果2.6碰撞處理技術在該項目中,需要處理對象之間的各種碰撞,比如,戰(zhàn)機子彈與敵機的碰撞、敵機子彈 與戰(zhàn)機的碰撞、敵機與戰(zhàn)機的碰撞、子彈與客機的碰撞等等。在處理碰撞時,可以為每個對 象設置一個與位圖大小相同的矩形,矩形的位置與對應位圖所在位置一直,當判斷兩個元素 是否發(fā)生了碰撞時,只需要利用IntersectRect函數(shù)判斷兩個矩形是否相交即可。2.7鏈表存儲技術一局游戲中會有很多的敵機,敵機子彈以及戰(zhàn)機子彈,并且需要其進行添加、刪除、遍

9、歷等操作,為了提高程序執(zhí)行效率,選用鏈表存儲這些類型,當需要生產(chǎn)一個敵機或者敵機 子彈時,只需要在鏈表尾部添加一個對應的對象即可,時間復雜度為0(1),當敵機被擊毀 或者子彈失效時,只需要在鏈表中將對應位置的對彖刪除即可,時間復雜度為0(1),當繪 圖時,需要對所有的對彖進行遍歷,此時只需要從頭至尾遍歷一個鏈表即可,時間復雜度為 O(n),所有的復雜度已經(jīng)是最低,所以利用CList鏈表存儲項目各種對象,是一個非常合理信息科學與工程學院軟件實踐實訓報告的選擇。2.8動態(tài)效果技術在敵機被擊毀時,需要顯示敵機爆炸的畫面,這個動態(tài)的畫面是由一組靜態(tài)圖像連續(xù)繪 制形成的,為了實現(xiàn)這一效果,可以利用MFC

10、中的CIinageList類,將一組由靜態(tài)圖像組成 的連續(xù)位圖按照一定格式轉(zhuǎn)化為CLnageList對象,并為每個對彖設置一個index,在敵機生 命值為0時,根據(jù)index逐幀播放圖像,實現(xiàn)敵機爆炸的動態(tài)效呆。3 需求分析3.1功能需求分析飛機大戰(zhàn)項目需要實現(xiàn)的主要功能如卞:戰(zhàn)機在用戶的控制下可以自由移動,但不可以移動到窗體外。戰(zhàn)機可以連續(xù)發(fā)射子彈,子彈的起始位置和戰(zhàn)機位置有關。敵機在窗II頂部隨機產(chǎn)生,產(chǎn)生后垂直向卞移動。敵機可以發(fā)射子彈,每個敵機在一個發(fā)射時刻可以發(fā)射兩枚子彈。客機在窗II頂部隨機產(chǎn)生,產(chǎn)生后由極慢的速度向下移動??蜋C的犬小十分龐人,遠大于敵機和戰(zhàn)機戰(zhàn)機子彈由戰(zhàn)機產(chǎn)生,垂

11、直向上飛行,并且可以擊中敵機和客機敵機子彈由敵機產(chǎn)生,垂直向下飛行,并且可以擊中戰(zhàn)機和客機游戲中會不定期出現(xiàn)道具包,飛機經(jīng)過道具包會出現(xiàn)不同的效果擊毀敵機可以獲得一定的得分,得分到達一定數(shù)量會出現(xiàn)BOSS BOSS產(chǎn)生于頂部,不會向下移動,會被子彈擊中,擊毀后可通過關卡。通過關卡后會使游戲難度增加,通過所有關卡會通關,完成游戲。3.2數(shù)據(jù)需求分析飛機人戰(zhàn)項目中所需要的數(shù)據(jù)有類型數(shù)據(jù)戰(zhàn)機戰(zhàn)機位置,戰(zhàn)機生命值,戰(zhàn)機傷害值敵機敵機位置,敵機生命值,敵機傷害值,敵機的生成速 度,敵機的移動速度戰(zhàn)機子彈子彈位置,子彈發(fā)射相應速度,子彈移動速度,子彈 傷害值敵機子彈子彈位置,子彈發(fā)射生成速度,子彈移動速度

12、,子彈7信息科學與工程學院軟件實踐實訓報告?zhèn)χ档谰甙谰甙愋?,道具包位置,道具包移動速度BOSSEOSS位置,EOSS傷害,EOSS生命值關卡關卡編號,關卡難度,得分33行為需求分析飛機人戰(zhàn)項目中的行為可以用下面的用例圖表示34其他需求背景可以滾動4 總體設計與詳細設計(介紹游戲的功能模塊劃分,主要類圖、狀態(tài)圖、活動圖或順序圖)信息科學與工程學院軟件實踐實訓報告4.1系統(tǒng)模塊劃分圖形顯示模塊關卡控制模塊敵方生成模塊游戲邏輯模塊玩家控制模塊飛機大戰(zhàn)游戲系統(tǒng)4.2主要功能模塊421玩家控制模塊設計圖信息科學與工程學院軟件實踐實訓報告422游戲邏輯模塊設計圖(包含關卡控制)信息科學與工程學院軟件

13、實踐實訓報告11信息科學與工程學院軟件實踐實訓報告4.2.3圖形顯示模塊設計(包含敵方生成模塊)信息科學與工程學院軟件實踐實訓報告4.3主要類圖4.4軟件結構設計體會軟件結構設計部分是軟件工程開發(fā)過程的重要部分,設計內(nèi)容的好壞關系到整個軟件的 優(yōu)劣,在這次飛機人戰(zhàn)項目開發(fā)中,對結構設計中出現(xiàn)的種種問題以及解決方法,加深了對 軟件結構設計方法的理解,熟悉了對其的應用,從系統(tǒng)功能模塊設計到主要功能設計,從類 圖到狀態(tài)圖,都是著軟件開發(fā)的每一個步驟,從宏觀和細節(jié)處展示了整個軟件的體系結構, 使整個軟件更有層次感。5.編碼實現(xiàn)5.1編碼規(guī)范 在這次飛機大戰(zhàn)設計開發(fā)項目中,涉及到的編碼規(guī)范主要包括 類、

14、對彖、變量、常量、函數(shù)的名稱含義準確不臃腫 類的命名必須以C開頭。 類的名稱中的單詞首字母大寫。 變量名稱中的單詞首字母大寫。 函數(shù)名稱中的單詞首字母大寫 對彖、變量、常量的定義盡量定義在CPapeiPlaiieDoc里。 函數(shù)定義在CPaperPlaneView里。 對不易理解的部分進行注釋13信息科學與工程學院軟件實踐實訓報告5.2代碼組織策略以MFC代碼標準組織方式為主。5.3關鍵技術代碼實現(xiàn)5.3.1雙緩沖的實現(xiàn)CDC* pMeniDC;CBitmap* pBitniap;CPapeiPlaiieView:CPaperPlaneView()/ TODO:在此處添加構造代碼pMeniDC

15、 = new CDC();pBitmap = new CBitmapQ;DiawBG(pMeniDC);pDC-BitBlt(O, 0, 600. 600, pMeniDC, 0, 0, SRCCOPY);CPaperPlaiieView:CPaperPlaneViewQdelete pMeniDC;delete pBitniap;5.3.2透明貼圖的實現(xiàn)void CCloud:draw(CDC* pDC)CDC meniDC;meniDC.CreateCompatibleDC(pDC);CBitmap bmpDraw;bmpDraw.LoadBitmap(C loudB itmapNum);

16、meniDC.SelectObject(&b mpDraw);pDC-TranspaientBlt(pos.x, pos.y, 80,50, &meniDC, 0, 0. 80,50、RGB(255, 255, 255); 5.3.3滾動背景的實現(xiàn)DiawBG(pMeniDC);void CPaperPlaneView:DrawBG(CDC* pDC)CPaperPlaneDoc* pDoc = GetDocumentQ;ASSERT_VALID(pDoc);if (!pDoc)return;/*/CBitniap bitmap;14信息科學與工程學院軟件實踐實訓報告bitinap.LoadB

17、itmap(pDoc-BackGroundNum);BITMAP BitMap;bitmap. GetBitmap (&E itMap);CDC deMem; dcMem.CieateCompatibleDC(pDC); deMem. SelectO bject(&bitmap); pDC-StretchBlt(O, 0, 600, 600, &dcMem, 0, pDoc-BGposY, 600. 600, SRCCOPY); pDoc-BGposY -= 10;if (pDoc-BGposYBGposY = 1200;53.4主要游戲邏輯void CPaperPlaneView:OnTim

18、ei(UINT_PTR nlDEvent)/ TODO:在此添加消息處理程序代碼和/或調(diào)用默認值CPapei PlaiieDoc * pDoc = GetDocumentQ;ASSERT_VALID(pDoc);if (!pDoc)return;CDC* pDC = GetDCQ;switch (nlDEvent)case 1:Di a wBG(pMeniDC);CloudIiiPlane(pDoc-myPlaiie.pDoc-enemy);FireIiiCloud(pDoc-FireList,pDoc-enemy);WateiIiiPlaiie(pDoc-WateiList, pDoc-my

19、Plane);PackageIiiPlane(pDoc-package, pDoc-myPlane);FireIiiBusiness(pDoc-FireList, pDoc-business);DrawFire(pDoc-FireList);DrawCloud(pDoc-enemv);DrawWatei(pDoc-WateiList); pDoc-mvPlane.Draw(pMeniDC); pDoc-package.Draw(pMeniDC); pDoc-business.Drav(pMeniDC);DrawTitleQ;if (pDoc-PlaiieScore = pDoc-PassBas

20、e* 100*(3*pDoc-NowLevel-2)+300) KillTmier(l);15信息科學與工程學院軟件實踐實訓報告if (pDoc-NowLevelNowLevel);if (pDoc-NowLevelPlaiieScore = pDoc-PassBase *100* (3 * pDoc-NowLevel - 2) - 300& pDoc-PlaneScorePassBase * 100*(3 * pDoc-NowLevel - 2)if (pDoc-boss.pos.y = -200)killAllEnemyO;FiieIiiBoss(pDoc-FueList. pDoc-bo

21、ss); pDoc-boss.Draw(pMeniDC);else if (pDoc-PlaneScoie = pDoc-PassBase * 100*(3 * pDoc-NowLevel - 2)if (pDoc-boss.pos.y PlaneScore = pDoc-PassBase * 100 * (3 * pDoc-NowLevel - 2) + 1000;pDoc-boss.DrawUp(pMeniDC);if (pDoc-mvPlane.life PlaneScore = 0;SetLevel(pDoc-NowLevel= 1);SetTimer(l,25.0);elseexit

22、(l);/GetKeyConmiand();if (GetAsyiicKeyState(,P,)KillTmier(l);SetTunei(2,300, 0);if (GetAsyiicKeyState(VK_UP) pDoc-myPlane.up();if (GetAsyiicKeyState(VK_DOWN) pDoc -myPlane. d o wnQ;if (GetAsyiicKeyState(VK_LEFT) pDoc-myPlaiie.left();if (GetAsyiicKeyState(VK_RIGHT) pDoc-myPlane.nghtQ; pDoc-TiinerCnt+

23、;if (pDoc-TmierCnt % (40 / CFiie:FireMakeSpeed) FueList.AddTail(CFiie(pDoc-myPlane.pos + CPoint(25, -20);16信息科學與工程學院軟件實踐實訓報告if (pDoc-TiinerCnt % (40 / CCloud:CloudMakeSpeed) boss.pos.v enemy.AddTail(CCloud(); ram(pDoc-enemy, pDoc-WateiList);if (pDoc-TmierCnt400&pDoc-TimeiCnt % (800 / CPackage:Packag

24、eMakeSpeed) Vl)pDoc-package.pos.v = 0; pDoc-package.PackType = randQ % 3 + 1;if (pDoc-havePower 0 & pDoc-TuneiCnt - pDoc-havePower 300) CFire: :FiieMakeSpeed = 6;if (pDoc-boss.pos.v -200 & pDoc-TunerCnt % (40 / 1) 1)iiit base = randQ % 200;for (int i = 0; iWaterList.AddTail(CWatei(CPoint(base+i * 20

25、, 200);for (int i = 0; iWaterList.AddTail(CWater(CPoint(base + 300 + i * 20, 200);if (pDoc-TiinerCnt % 4000 busiiiess.pos.x =% 450;pDoc-busiiiess.pos.y = 0;break;case 2:CBitniap bitmap;bitinap.LoadBitmap(IDB_PAUSE);BITMAP BitMap;bitmap. GetBitmap (&BitMap);CDC dcMem;dcMem.CreateCompatibleDC(pMeniDC)

26、;deMem. SelectO bject(&bitmap);pMeniDC-StietcliBlt(0, 0, 600, 600. &deMem, 0, 0, 600. 600, SRCCOPY);if (GetAsyiicKeyState(,P,)KillTmier(2); SetTiinei(l,25,0);if (GetAsyiicKeyState(,Q,) KillTmier(2);信息科學與工程學院軟件實踐實訓報告SetLevel(pDoc-NowLevel = 1);SetTiinei(l, 25, 0);if (GetAsyiicKeyState(,E,) KillTmier(

27、2);if (AfkMessageEox(L“確定退出游戲? ME_YESNO) = 6) exit(l);elseSetTimer(2,300. 0);pDC-BitBlt(0, 0, 600. 600, pMeniDC, 0, 0, SRCCOPY);ReleaseDC(pDC);C View: OnTunei(nlDEvent);5.3.5碰撞判斷mt CPaperPlaneView:FneIiiCloud(CList& list, CList& enemy) CPapei PlaiieDoc * pDoc = GetDocumentQ;AS SERT_VALID(pDoc);if (!

28、pDoc)retuni 0;POSITION pos = enemy. GetHeadPositionQ;while (pos != NULL) pDoc-PlaiieScore+=enemy.GetNext(pos).beFued(list);return 0;void CPaperPlaneView:FireIiiBoss(CList& list, CBoss& boss)CPapei PlaiieDoc * pDoc = GetDocumentQ;ASSERT_VALID(pDoc);if (!pDoc)retuni;boss.beFiied(list);if (boss.life Pl

29、aiieScore = pDoc-PassBase * 100 * (3 * pDoc-NowLevel - 2); return;mt CPaperPlaneView:WaterInPlane(CList& listCPlane& plane)POSITION ps2,pos = list.GetHeadPosition();while (pos != NULL)信息科學與工程學院軟件實踐實訓報告ps2 = pos;if (plane.beWateied(list.GetNext(pos)list.RemoveAt(ps2);return 0;mt CPaperPlaneView:Cloud

30、IiiPlane(CPlaiie& plane, CList& enemy)POSITION pos = enemy. GetHeadPositionQ;while (pos != NULL)CCloud& tmp = enemy.GetNext(pos);CRect planeRectl. planeRect2, cloudRect, teniRect;plaiieRect 1 .SetRect(plane.pos + CPoint(10,10), plane.pos + CPoint(60, 30); plaiieRect2.SetRect(plane.pos + CPomt(0, 30)

31、, plane.pos + CPoint(70. 80); cloudRect.SetRect(tmp.pos, tmp.pos + CPomt(80, 50);if (plane.life0 &tmp.life0& (teniRect.IiitersectRect(cloudRect, planeRectl) | teniRec 匚 Ineis 亡 ctRect(cloudRect,plaiieRect2)plane.life -= tmp.damage;tmp.life = plane.damage;return 1;return 0;5.3.6鏈表遍歷mt CPaperPlaneView

32、:FiieIiiCloud(CList& list, CList& enemy)CPapei PlaiieDoc * pDoc = GetDocumentQ;ASSERT_VALID(pDoc);if (!pDoc)return 0;POSITION pos = enemy. GetHeadPositionQ;while (pos != NULL)pDoc-PlaiieScore+=enemy.GetNext(pos).beFued(list);return 0;53.7關卡設置void CPaperPlaneView: SetLevel(mt iiLevel)CPapei PlaiieDoc

33、 * pDoc = GetDocumentQ;ASSERT_VALID(pDoc);if (!pDoc) return;switch (nLevel)19信息科學與工程學院軟件實踐實訓報告case 1:CPlane:PlaneLife = 6;CPlane: TlaneDainage = 1;CPlane: TlaneBitmapNum = IDB_PLANE1;CCloud: :CloudBitmapNum = IDBCLOUDl;CCloud: :CloudBoonuiiapNum = IDB_CLOUDBOOM1;CCloud:CloudLife = 1;CCloud:CloudDama

34、ge = 1;CCloud:CloudMakeSpeed = 1;CCloud: :CloudMoveSpeed = 2;CFire:FireMakeSpeed = 6; /I - 9 CFire:FireMove Speed = 15;CFire: :FireDaniage = 1;CFire: :FireBitniapNum = IDB_FIRE1;C Water: WaterMakePossible = 40;CWater: WaterMoveSpeed =4;C Water: AVaterDamage = 1;C Water: WaterBitmapNum = LDE_VATER1;C

35、Package:PackageMakeSpeed = 3;/every 20s CPackage:PackageMoveSpeed = 2;CBoss:BossBitmapNum = IDB_BOSS1;pDoc-PassBase = 10;pDoc-PlaiieScore = 0;pDoc-boss.pos.v = - 200;pDoc-TiinerCnt = 0;pDoc-BGposY = 0; pDoc-WaterList.RemoveAll(); pDoc-enemy.RemoveAll(); pDoc-FiieList.RemoveAll();pDoc-mvPlane. iiiitQ

36、;pDoc-NowLevel = 1;pDoc-liavePower = 0; pDoc-package.PackType = iand() % 3 + 1; pDoc-BackGroundNum = IDB_B ACKGROUND 1;20信息科學與工程學院軟件實踐實訓報告pDoc-boss.life = 10; break;case 2:CPlane:PlaneLife = 6;CPlane: TlaneDainage = 1;CPlane: TlaneBitmapNum = IDB_PLANE2;CCloud: :CloudBitmapNum = EDE_CLOUD2;CCloud: :

37、CloudBoonuiiapNum = IDB_CLOUDBOOM1;CCloud:CloudLife = 2;CCloud:CloudDamage = 1;CCloud: :CloudMakeSpeed = 1;CCloud: :CloudMoveSpeed = 2;CFire:FireMakeSpeed = 6; /I - 40CFire:FireMoveSpeed = 15;CFire: :FireDaniage = 1;CFire: :FireBitniapNum = IDB_FIRE2;C Water: WaterMakePossible = 60;CWater: WaterMove

38、Speed = 3;C Water: WaterDamage = 1;C Water: WaterBitmapNum = LDE_WATER2;CPackage:PackageMakeSpeed = 3;/every 20sCPackage:PackageMoveSpeed = 2;CBoss:BossBitmapNum = IDB_BOSS1;pDoc-TiinerCnt = 0; pDoc-PassBase = 10;pDoc-BGposY = 0; pDoc-WaterList.RemoveAll(); pDoc-enemy.RemoveAll(); pDoc-FiieList.Remo

39、veAll();pDoc-mvPlane. iiiitQ;pDoc-liavePower = 0;pDoc-package.PackType = iand() % 3 + 1; pDoc-BackGroundNum = IDB_B ACKGROUND2; pDoc-NowLevel = 2;21信息科學與工程學院軟件實踐實訓報告pDoc-boss.pos.v = -200;pDoc-boss.life = 3; break;default:KillTmier(l);AfxMessageBox(LM恭喜你,通關了 !ME_OK);SetTimer(2,300, 0); break;5.3.8子彈

40、生成void CPaperPlaneView:raiii(CList& enemy, CList& list) POSITION pos = enemy. GetHeadPositionQ;POSITION ps2;while (pos != NULL)ps2 = pos;CCloud& tinp = enemy.GetNext(pos);if (tmp.pos.y 600)enemy.RemoveAt(ps2);elseif (rand() % 100 CWater:WateiMakePossible) tmp.ram(list);void CCloud:iaiii(CList& list)list.AddTail(CWater(CPoint(pos.x +13

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論