c++實(shí)訓(xùn)報(bào)告(飛機(jī)大戰(zhàn))_第1頁
c++實(shí)訓(xùn)報(bào)告(飛機(jī)大戰(zhàn))_第2頁
c++實(shí)訓(xùn)報(bào)告(飛機(jī)大戰(zhàn))_第3頁
c++實(shí)訓(xùn)報(bào)告(飛機(jī)大戰(zhàn))_第4頁
c++實(shí)訓(xùn)報(bào)告(飛機(jī)大戰(zhàn))_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

信息科學(xué)與工程學(xué)院軟件實(shí)踐實(shí)訓(xùn)報(bào)告PAGEPAGE16實(shí)訓(xùn)報(bào)告飛機(jī)大戰(zhàn)游戲設(shè)計(jì)與開發(fā)專業(yè)名稱:軟件工程11-2學(xué)號(hào):201101051723姓名:王佳賀信息科學(xué)與工程學(xué)院二零一三年十一月目錄1.概述【一級(jí)標(biāo)題,黑體,四號(hào),加粗,頂頭】 42.相關(guān)技術(shù) 42.1透明貼圖函數(shù)(技術(shù)一的名稱) 42.2CObList鏈表(技術(shù)二的名稱) 42.3獲取矩形區(qū)域函數(shù) 52.4添加爆炸效果函數(shù) 52.5彈出對(duì)話框函數(shù) 52.6字體的個(gè)性化輸出函數(shù) 52.7鼠標(biāo)鍵盤控制戰(zhàn)機(jī)位置的函數(shù) 62.8延遲函數(shù) 62.9設(shè)置定時(shí)器 62.10雙緩沖技術(shù) 62.11內(nèi)存釋放技術(shù) 63.總體設(shè)計(jì)與詳細(xì)設(shè)計(jì) 73.1系統(tǒng)模塊劃分 83.2主要功能模塊 93.3擴(kuò)展功能設(shè)計(jì)思路 94.編碼實(shí)現(xiàn) 94.1游戲初始創(chuàng)建 104.2定時(shí)器 104.3背景設(shè)定 104.4鍵盤控制函數(shù) 114.5文字顯示函數(shù) 114.6游戲?qū)ο筮M(jìn)行碰撞測試和碰撞銷毀,文字提示函數(shù) 124.7選擇下一關(guān)卡以及選擇完成后的執(zhí)行代碼 134.8游戲結(jié)束代碼 144.9鼠標(biāo)控制戰(zhàn)機(jī)代碼 144.10重新開始游戲代碼 155.實(shí)訓(xùn)中遇到的主要問題及解決方法 156.實(shí)訓(xùn)體會(huì) 161.概述【一級(jí)標(biāo)題,黑體,四號(hào),加粗,頂頭】(介紹所做的項(xiàng)目,要實(shí)現(xiàn)的主要功能)【正文,五號(hào),宋體,首行縮進(jìn)2字符】此次實(shí)訓(xùn)主要是要做一個(gè)飛機(jī)大戰(zhàn)的游戲,其需要實(shí)現(xiàn)的功能為:實(shí)現(xiàn)游戲?qū)ο蟮谋ㄌ匦А⒙曇籼匦?、文字提示功能和界面背景特效,其主要是遵循一定的游戲?guī)則進(jìn)行游戲。游戲中的主要角色可分為如下幾個(gè)基本部分:戰(zhàn)機(jī)、敵機(jī)、戰(zhàn)機(jī)的導(dǎo)彈、敵機(jī)的子彈。其主要遵循的游戲規(guī)則為:戰(zhàn)機(jī)數(shù)量為1;由玩家通過鍵盤控制(方向鍵控制位置、CTRL鍵發(fā)射導(dǎo)彈)戰(zhàn)機(jī);導(dǎo)彈釋放存在間隔,有一定的運(yùn)行速度;導(dǎo)彈遇到敵機(jī)發(fā)生爆炸,敵機(jī)被炸毀,導(dǎo)彈消失,玩家得分;由計(jì)算機(jī)控制敵機(jī)自動(dòng)向戰(zhàn)機(jī)發(fā)動(dòng)攻擊;敵機(jī)數(shù)量隨機(jī),計(jì)算機(jī)生成敵機(jī)時(shí)隨機(jī)選擇類別;敵機(jī)從游戲區(qū)域的上下兩端進(jìn)入,左右位置隨機(jī);敵機(jī)行駛期間,不左右移動(dòng),不反向移動(dòng);當(dāng)敵機(jī)到達(dá)戰(zhàn)機(jī)下方時(shí)發(fā)射炸彈對(duì)戰(zhàn)機(jī)進(jìn)行攻擊;運(yùn)行線路為直線,方向?yàn)閺南轮辽?,或從下至上,不可左右移?dòng)??v向由發(fā)射位置起至游戲區(qū)域結(jié)束;炸彈遇到戰(zhàn)機(jī)時(shí)發(fā)生爆炸,戰(zhàn)機(jī)被炸毀,炸彈消失,游戲結(jié)束;炸彈運(yùn)行時(shí)有速度限制。2.相關(guān)技術(shù)此次實(shí)訓(xùn)的飛機(jī)大戰(zhàn)游戲其中的技術(shù)主要就是一些函數(shù)、內(nèi)存釋放和雙緩沖技術(shù)。2.1透明貼圖函數(shù)(技術(shù)一的名稱)此次實(shí)訓(xùn)中用于貼圖的函數(shù):LoadImage(CImageList&imageList,UINTbmpID,COLORREFcrMask,intcx,intcy,intnInitial)//此函數(shù)主要用于將圖片放入圖像鏈表imageList中。img_Bomb.Draw(pDC,0,m_m_ptPos,ILD_TRANSPARENT)//此函數(shù)主要是講img_Bomb1鏈表中的圖像顯示在pDC這個(gè)句柄中。ILD_TRANSPARENT表示是透明貼圖。其中主要就是CImageList圖像列表。它是相同大小圖像的一個(gè)集合,每個(gè)集合中均以0為圖像的索引序號(hào)基數(shù),圖像列表通常由大圖標(biāo)或位圖構(gòu)成,其中包含透明位圖模式??梢岳肳INDOWS32位應(yīng)用程序接口函數(shù)API來繪制、建立和刪除圖像,并能實(shí)現(xiàn)增加、刪除、替換和拖動(dòng)圖像等操作。2.2CObList鏈表(技術(shù)二的名稱)CObListm_ObjListball;//主要是定義一個(gè)CObList類的一個(gè)鏈表對(duì)象用于存儲(chǔ)所有的此種相關(guān)的對(duì)象,易于后續(xù)的添加刪除和提取數(shù)據(jù)。POSITIONposball=NULL,posball_t=NULL;//定義指針posball=pDoc->m_ObjListball.GetHeadPosition();//指針讀取頭結(jié)點(diǎn)pDoc->pball=(Cball*)pDoc->m_ObjListball.GetNext(posball);//指針讀取下一個(gè)結(jié)點(diǎn)2.3獲取矩形區(qū)域函數(shù) CRectrc;//定義GetClientRect(&rc);//獲取其矩形區(qū)域獲取結(jié)果課為:rc.Width()//矩形區(qū)域的寬度rc.Height()//矩形區(qū)域的高度CRecttmpRect;tmpRect.IntersectRect(&bRect,eRect))//判斷兩個(gè)矩形是否有交接2.4添加爆炸效果函數(shù)PlaySound((LPCTSTR)IDR_WAVE1,AfxGetInstanceHandle(),SND_RESOURCE|SND_ASYNC);//此函數(shù)用于將ID為IDR_WAVE1的音頻在執(zhí)行此語句時(shí)進(jìn)行播放。2.5彈出對(duì)話框函數(shù)if(AfxMessageBox(L"是否進(jìn)入下一關(guān)?",MB_YESNO)==6){}//此函數(shù)主要是彈出對(duì)話框供用戶進(jìn)行選擇,當(dāng)用戶點(diǎn)擊確定按鈕時(shí)執(zhí)行此函數(shù)的{}內(nèi)的語句進(jìn)行繼續(xù)運(yùn)行。2.6字體的個(gè)性化輸出函數(shù)CStrings; dcMem.SetTextColor(RGB(255,0,0)); dcMem.SetBkMode(TRANSPARENT); hFont=CreateFont(50,20,0,0,100,0,0,0,0,0,0,100,10,0); /*CreateFont(字體高度,字體寬度,字體顯示角度,字體的角度,字體的磅值,斜體字體, 帶下劃線的字體,帶刪除線的字體,所需的字符集,輸出的精度,裁剪的精度,邏輯字體與 輸出設(shè)備的實(shí)際,字體之間的精度,字體間距和字體集,字體名稱*/dcMem.SelectObject(hFont); s.Format(_T("GAMEOVER!")); dcMem.TextOutW(400,200,s,10);2.7鼠標(biāo)鍵盤控制戰(zhàn)機(jī)位置的函數(shù)OnLButtonDown(UINTnFlags,CPointpoint)//用于鼠標(biāo)控制其位置OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)//用于鍵盤控制其位置其中GetKey(intnVirtKey)用于使鍵盤更加的靈活課進(jìn)行粘連。2.8延遲函數(shù)Sleep(1000);//此句表示系統(tǒng)將延遲1000毫秒。2.9設(shè)置定時(shí)器定時(shí)器告訴WINDOWS一個(gè)時(shí)間間隔,然后WINDOWS以此時(shí)間間隔周期性觸發(fā)程序。通常有兩種方法來實(shí)現(xiàn):發(fā)送WM_TIMER消息和調(diào)用應(yīng)用程序定義的回調(diào)函數(shù)。SetTimer(1,30,NULL);//設(shè)置每30毫秒刷新一次2.10雙緩沖技術(shù)關(guān)于雙緩沖技術(shù)主要就是利用緩存的原理進(jìn)行將所有的東西都先存在一個(gè)緩沖得虛擬的區(qū)域,然后再一次性的將所有的虛擬緩存中的東西都放入實(shí)在的存儲(chǔ)器中。CDC*pDC=GetDC();CDCdcMem;dcMem.CreateCompatibleDC(pDC);//依附窗口DC創(chuàng)建兼容內(nèi)存DC依次,所有的圖像文字均存入dcMem中,然后一次性的通過pDC->BitBlt(0,0,rc.Width(),rc.Height(),&dcMem,0,0,SRCCOPY);將內(nèi)存DC上的圖像拷貝到前臺(tái) dcMem.DeleteDC(); bmp.DeleteObject(); //pDC->SelectObject(Oldbrush); ReleaseDC(pDC); dcMem.FillSolidRect(rc,RGB(255,255,255));2.11內(nèi)存釋放技術(shù)在此次實(shí)訓(xùn)項(xiàng)目中有太多的對(duì)象的生成和運(yùn)用,造成了內(nèi)存的極度的緊張,當(dāng)游戲進(jìn)行到一定的程度的時(shí)候就會(huì)出現(xiàn)內(nèi)存溢出現(xiàn)象。解決此問題的技術(shù)就是內(nèi)存釋放。內(nèi)存釋放技術(shù)的實(shí)現(xiàn)主要是通過釋放各個(gè)滿足一定條件的對(duì)象和鏈表來實(shí)現(xiàn)的,pDoc->m_ObjListBomb.RemoveAt(mPos2);用于刪除指針 deletepDoc->Bomb;用于刪除對(duì)象3.總體設(shè)計(jì)與詳細(xì)設(shè)計(jì)總體設(shè)計(jì)主要課將其分為兩大部分:規(guī)則子系統(tǒng),游戲?qū)ο笞酉到y(tǒng)。系統(tǒng)的總體結(jié)構(gòu)圖如下: 規(guī)則子系統(tǒng)主要是實(shí)現(xiàn)飛機(jī)大戰(zhàn)各項(xiàng)游戲規(guī)則。實(shí)現(xiàn)需求中的游戲規(guī)則,組成結(jié)構(gòu)圖如下:主要是實(shí)現(xiàn)敵機(jī)戰(zhàn)機(jī)的攻擊和反攻的游戲規(guī)則等來實(shí)現(xiàn)計(jì)算機(jī)方和玩家進(jìn)行對(duì)戰(zhàn)。1、主要的攻擊規(guī)則如下:1)、敵機(jī)可在戰(zhàn)機(jī)的上方或者下方進(jìn)行將子彈進(jìn)行射向戰(zhàn)機(jī),同時(shí)戰(zhàn)機(jī)也可根據(jù)玩家的指示進(jìn)行向上或者向下進(jìn)行發(fā)射導(dǎo)彈進(jìn)行反攻。2)、攻擊時(shí)發(fā)出聲音。2、主要的碰撞規(guī)則如下:1)、導(dǎo)彈或者子彈本身的矩形區(qū)域和敵機(jī)或者戰(zhàn)機(jī)的矩形區(qū)域相交時(shí),表示其相互發(fā)生碰撞表示其相互爆炸。根據(jù)實(shí)戰(zhàn)規(guī)則銷毀游戲?qū)ο蟆?)、戰(zhàn)機(jī)生命為0,戰(zhàn)機(jī)被炸,戰(zhàn)機(jī)被銷毀,游戲結(jié)束。3)、敵機(jī)或者子彈被炸毀,將其進(jìn)行銷毀同時(shí)進(jìn)行分?jǐn)?shù)的相應(yīng)的增加,并且出現(xiàn)文字提示。4)、爆炸時(shí)發(fā)出聲音。3、主要時(shí)間控制規(guī)則如下: 1)、當(dāng)游戲的持續(xù)時(shí)間超過特定的時(shí)間,游戲結(jié)束,出現(xiàn)文字提示。 2)、當(dāng)游戲的關(guān)卡改變時(shí)進(jìn)行游戲持續(xù)時(shí)間的一個(gè)相應(yīng)的改變。游戲?qū)ο笞酉到y(tǒng)主要包括:應(yīng)用程序?qū)ο蠛陀螒驅(qū)ο?、應(yīng)用程序?qū)ο螅?)、游戲程序的加載2)、游戲?qū)ο蟮睦L制3)、游戲規(guī)則的調(diào)用4)、玩家鍵盤鼠標(biāo)事件的獲取5、游戲?qū)ο螅?1)、各游戲?qū)ο蟮膱D像加載 2)、各游戲?qū)ο蟮馁N圖 3)、各游戲?qū)ο蟮奈恢么鎯?chǔ)3.1系統(tǒng)模塊劃分 系統(tǒng)模塊劃分主要分為如下表中的幾個(gè)模塊:游戲規(guī)則子系統(tǒng)模塊名稱功能簡述人工智能人機(jī)對(duì)戰(zhàn)規(guī)則的實(shí)現(xiàn)游戲子系統(tǒng)模塊名稱功能簡述應(yīng)用程序?qū)ο笥螒虺绦虻募虞d、游戲?qū)ο蟮睦L制、游戲規(guī)則的調(diào)用、玩家的鍵盤事件獲取游戲?qū)ο蟾鱾€(gè)游戲?qū)ο蟮某橄蟾割悜?zhàn)機(jī)對(duì)象戰(zhàn)機(jī)類敵機(jī)對(duì)象敵機(jī)類導(dǎo)彈對(duì)象導(dǎo)彈類炸彈對(duì)象炸彈類爆炸對(duì)象爆炸類文字對(duì)象文字類其簡單類圖如下:3.2主要功能模塊主要功能模塊主要就是那些類的功能模塊,主要有: 1、各個(gè)游戲?qū)ο蟮馁N圖模塊2、敵機(jī)數(shù)量、方向、速度以及子彈的數(shù)量、方向和速度控制模塊。3、戰(zhàn)機(jī)的導(dǎo)彈的數(shù)目、方向和速度控制模塊。4、戰(zhàn)機(jī)的鍵盤控制和鼠標(biāo)控制位置模塊。5、敵機(jī)、子彈和戰(zhàn)機(jī)、導(dǎo)彈的碰撞檢測以及爆炸模塊。6、背景添加模塊。7、戰(zhàn)機(jī)速度控制模塊。8、游戲關(guān)卡游戲難易度設(shè)置和游戲關(guān)卡選擇。9、游戲得分和生命值控制以及游戲關(guān)卡進(jìn)入控制和游戲結(jié)束。10、游戲重新開始和游戲暫??刂颇K。11、游戲音效控制模塊。3.3擴(kuò)展功能設(shè)計(jì)思路本次實(shí)訓(xùn)由于時(shí)間問題還有些擴(kuò)展功能可進(jìn)行增加,主要有: 1給游戲增加敵機(jī)類型,豐富畫面,增加難度2、給游戲進(jìn)行增加boss,通過boss的添加進(jìn)行游戲的關(guān)卡和難度的更加進(jìn)一步的提升。主要思路是:再增加一個(gè)類讓它繼承敵機(jī)類,然后再敵機(jī)類的基礎(chǔ)上進(jìn)行增加其生命值和被打死后的得分。當(dāng)戰(zhàn)機(jī)得分到達(dá)一定的值以后boss出現(xiàn)并進(jìn)行和敵機(jī)一個(gè)隊(duì)伍發(fā)射另類的子彈進(jìn)行攻擊戰(zhàn)機(jī)。 3、完善暫停/重新開始/繼續(xù)游戲等功能。 4、設(shè)置關(guān)卡,關(guān)卡越往后,難度越大,增加游戲的挑戰(zhàn)性4.編碼實(shí)現(xiàn) 此次實(shí)訓(xùn)的主要編碼主要為:4.1游戲初始創(chuàng)建 if(GetKey(VK_RETURN)==1) { pDoc->bStart=1; } if(pDoc->bStart==0) { dcMem.SetTextColor(RGB(0,255,0)); dcMem.SetBkMode(TRANSPARENT); hFont=CreateFont(80,40,0,0,0,0,0,0,0,0,0,100,10,0); dcMem.SelectObject(hFont); TextOut(dcMem,cx/2-200,200,L"開始遊戲",4); dcMem.SetTextColor(RGB(0,255,0)); hFont=CreateFont(60,30,0,0,0,0,0,0,0,0,0,100,10,0); dcMem.SelectObject(hFont); TextOut(dcMem,cx/2-300,300,L"PRESS<<ENTER>>",15); //進(jìn)行游戲的開始初始創(chuàng)建對(duì)象4.2定時(shí)器voidCPlaneFightView::OnInitialUpdate()//此函數(shù)用于進(jìn)行定時(shí)器的設(shè)定voidCPLANEBOMPView::OnTimer(UINT_PTRnIDEvent)//在此設(shè)定器中進(jìn)行各種函數(shù)的實(shí)現(xiàn)和調(diào)用進(jìn)行相應(yīng)時(shí)間的刷新4.3背景設(shè)定CBitmapbitmap;//封裝了Windows圖形設(shè)備接口中的位圖,并且提供了操縱位圖的成員函數(shù) bitmap.LoadBitmap(IDB_BITMAP6); BITMAPbmp1;//位圖圖像 bitmap.GetBitmap(&bmp1); CDCDC;//定義一個(gè)兼容的DC DC.CreateCompatibleDC(&dcMem);//創(chuàng)建DC CBitmap*Old=DC.SelectObject(&bitmap); dcMem.StretchBlt(0,0,Rect.Width(),Rect.Height(),&DC,0,0,bmp1.bmWidth,bmp1.bmHeight,SRCCOPY);4.4鍵盤控制函數(shù) intCPLANEBOMPView::GetKey(intnVirtKey) { return(GetKeyState(nVirtKey)&0x8000)?1:0; }if(GetKey(VK_LEFT)==1) pDoc->m_pMe->m_ptPos.x-=pDoc->mspeed; if(GetKey(VK_RIGHT)==1) pDoc->m_pMe->m_ptPos.x+=pDoc->mspeed; if(GetKey(VK_UP)==1) pDoc->m_pMe->m_ptPos.y-=pDoc->mspeed; if(GetKey(VK_DOWN)==1) pDoc->m_pMe->m_ptPos.y+=pDoc->mspeed; if(GetKey(VK_CONTROL)==1) { CBomb*cbo1=newCBomb(pDoc->m_pMe->m_ptPos.x+10,pDoc->m_pMe->m_ptPos.y,1); pDoc->m_ObListBomb.AddTail(cbo1);//存導(dǎo)彈 CBomb*cbo2=newCBomb(pDoc->m_pMe->m_ptPos.x+30,pDoc->m_pMe->m_ptPos.y,1); pDoc->m_ObListBomb.AddTail(cbo2);//存導(dǎo)彈 PlaySound((LPCTSTR)IDR_WAVE2,AfxGetInstanceHandle(),SND_RESOURCE|SND_ASYNC); } if(GetKey(VK_PAUSE)) { if(pDoc->bPause==1) pDoc->bPause=false; else pDoc->bPause=true; }4.5文字顯示函數(shù) //輸出戰(zhàn)機(jī) pDoc->m_pMe->Draw(&dcMem,pDoc->bPause);//戰(zhàn)機(jī) CStringbuffer; dcMem.SetTextColor(RGB(255,255,255)); dcMem.SetBkMode(TRANSPARENT); buffer.Format(_T("得分:%d"),pDoc->COUNT); dcMem.TextOutW(0,10,buffer); buffer.Format(_T("生命:%d"),pDoc->LIVE); dcMem.TextOutW(0,30,buffer); buffer.Format(_T("關(guān)卡:%d"),pDoc->style+1); dcMem.TextOutW(0,50,buffer); TextOut(dcMem,0,80,L"Pause暫停",9);5.6調(diào)用圖片編碼 POSITIONposBomb=NULL,posBomb_t=NULL; posBomb=pDoc->m_ObjListBomb.GetHeadPosition(); while(posBomb!=NULL) { posBomb_t=posBomb; pDoc->Bomb=(CBomb*)pDoc->m_ObjListBomb.GetNext(posBomb); if(pDoc->Bomb->GetPoint().x<0||pDoc->Bomb->GetPoint().x>Rect.Width()||pDoc->Bomb->GetPoint().y<0||pDoc->Bomb->GetPoint().y>Rect.Height()) { pDoc->m_ObjListBomb.RemoveAt(posBomb_t); deletepDoc->Bomb; } else pDoc->Bomb->Draw(&dcMem,1); } }4.6游戲?qū)ο筮M(jìn)行碰撞測試和碰撞銷毀,文字提示函數(shù) POSITIONbPos1=NULL,bPos2=NULL; for(bPos1=pDoc->m_ObjListBomb.GetHeadPosition();(bPos2=bPos1)!=NULL;) { pDoc->Bomb=(CBomb*)pDoc->m_ObjListBomb.GetNext(bPos1); CRectbRect=pDoc->Bomb->GetRect();//獲得導(dǎo)彈矩形區(qū)域 POSITIONePos11=NULL,ePos22=NULL; for(ePos11=pDoc->m_ObjListEn.GetHeadPosition();(ePos22=ePos11)!=NULL;) { pDoc->pEnemy=(CEnemy*)pDoc->m_ObjListEn.GetNext(ePos11); CRecteRect=pDoc->pEnemy->GetRect();//獲得敵機(jī)矩形區(qū)域 CRecttmpRect; if(tmpRect.IntersectRect(&bRect,eRect))//判斷兩個(gè)矩形是否有交接 { //添加爆炸效果 pDoc->m_ObjListEx.AddTail(newCExplosion(eRect.left,eRect.top)); PlaySound((LPCTSTR)IDR_WAVE2,AfxGetInstanceHandle(),SND_RESOURCE|SND_ASYNC); pDoc->COUNT+=2; if(pDoc->timer<50) { CStrings0,s1,s2,s3,s4; dcMem.SetTextColor(RGB(0,255,0)); dcMem.SetBkMode(TRANSPARENT); hFont=CreateFont(30,20,0,0,0,0,0,0,0,0,0,100,10,0); dcMem.SelectObject(hFont); s0.Format(_T("COUNT+2")); dcMem.TextOutW(250,200,s0); pDoc->timer++; } else pDoc->timer=0; //刪除zhadan pDoc->m_ObjListBomb.RemoveAt(bPos2); deletepDoc->Bomb; //刪除敵機(jī) pDoc->m_ObjListEn.RemoveAt(ePos22); deletepDoc->pEnemy; break; } } }4.7選擇下一關(guān)卡以及選擇完成后的執(zhí)行代碼if(pDoc->Boss1Death>=1) { pDoc->Boss1Death=0; pDoc->bPause=0; if(AfxMessageBox(L"是否進(jìn)入下一關(guān)?",MB_YESNO)==6) { pDoc->style++; pDoc->bPause=1; pDoc->LIVE+=5; } else pDoc->bEnd=1;4.8游戲結(jié)束代碼 if(pDoc->style>=10) { dcMem.SetTextColor(RGB(0,0,0)); dcMem.SetBkMode(TRANSPARENT); hFont=CreateFont(80,40,0,0,0,0,0,0,0,0,0,100,10,0); dcMem.SelectObject(hFont); TextOut(dcMem,cx/2-300,300,L"恭喜您全部通關(guān)",7); CStringbuffer; dcMem.SetTextColor(RGB(255,255,0)); dcMem.SetBkMode(TRANSPARENT); hFont=CreateFont(30,15,0,0,0,0,0,0,0,0,0,100,10,0); buffer.Format(_T("得分:%d"),pDoc->COUNT); dcMem.TextOutW(0,10,buffer); pDoc->bEnd=1; } if(pDoc->bEnd==1) { CStringbuffer; dcMem.SetTextColor(RGB(255,255,0)); dcMem.SetBkMode(TRANSPARENT); hFont=CreateFont(80,40,0,0,0,0,0,0,0,0,0,100,10,0); dcMem.SelectObject(hFont); buffer.Format(_T("得分:%d"),pDoc->COUNT); dcMem.TextOutW(cx/2-200,300,buffer); pDoc->bEnd=1; } 4.9鼠標(biāo)控制戰(zhàn)機(jī)代碼 voidCPLANEBOMPView::OnLButtonDown(UINTnFlags,CPointpoint){ //TODO:在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值 CView::OnLButtonUp(nFlags,point); CPLANEBOMPDoc*pDoc=GetDocument(); if(pDoc->Myplane!=NULL&&pDoc->time>0) { if(pDoc->Myplane->getpoint().x>0) pDoc->Myplane->setpoint(point.x,point.y); } this->Invalidat

溫馨提示

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

評(píng)論

0/150

提交評(píng)論