俄羅斯方塊mfc實驗報告

俄羅斯方塊mfc實驗報告

ID:40504866

大小:248.48 KB

頁數(shù):20頁

時間:2019-08-03

俄羅斯方塊mfc實驗報告_第1頁
俄羅斯方塊mfc實驗報告_第2頁
俄羅斯方塊mfc實驗報告_第3頁
俄羅斯方塊mfc實驗報告_第4頁
俄羅斯方塊mfc實驗報告_第5頁
資源描述:

《俄羅斯方塊mfc實驗報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、程序設(shè)計實踐設(shè)計報告課題名稱:俄羅斯方塊(MFC版)學(xué)生姓名:黃嘉慧班級:2012211113班內(nèi)序號:27學(xué)號:2012210389日期:2014.6.11.實驗概述1.1課題目標和主要內(nèi)容。本課題的主要內(nèi)容是用MFC實現(xiàn)經(jīng)典游戲俄羅斯方塊的編寫。目標是能夠正常運行,并且無過于嚴重的問題。使用的平臺為MFC(基于對話框)。1.2當分數(shù)>=50*等級開始游戲1.2DIAN升級并重新開始游戲結(jié)束游戲采用計分升級制來進行游戲。當一次消去一行時,得一分,一次兩行得4分,一次3行,得9分,一次4行,得16分。每50分為一個等級,得分足夠則升級并重新開始游戲。2.程序設(shè)計2.1系統(tǒng)總體

2、框架用一個4維數(shù)組DiamondStruct[7][4][4][4]來表示所有的方塊,用一個POINT類型的DiamondPos來表示方塊當前的位置,然后通過一個二維數(shù)組BlockPanel[][],來表示整個游戲界面,同時進行障礙的添加。游戲過程中,通過改變DiamondPos來進行方塊的下降以及左右移動,通過DiamondStruct[7][4][4][4]中第二個參數(shù)的改變來進行方塊的變換。2.2系統(tǒng)詳細設(shè)計【1】模塊劃分圖及描述菜單控制結(jié)束游戲重新開始暫停游戲【2】類關(guān)系圖及描述CWinApp與CDialog為基類。其它為添加的類?!?】程序流程圖及描述開始消行操作生

3、成新的下墜物將新的下墜物代替舊的下墜物將舊的下墜物作為當前下墜物到達底部消行操作游戲結(jié)束處理下降一個單位否是否是到達底部到達頂部游戲結(jié)束結(jié)束【4】存儲結(jié)構(gòu),內(nèi)存分配主要存儲結(jié)構(gòu)為數(shù)組。同時分配內(nèi)存的有,畫筆,Diamond類的指針,Panel類的指針,Block類的指針,Mill類的指針,Manager類的指針。2.3關(guān)鍵算法分析【1】boolDiamond::FullLine(){boolIsFull,Full=false;pManager->SeriesLine=0;for(intiy=0;iy<=pPanel->nVGridNum;iy++){IsFull=true;f

4、or(intix=0;ix<=pPanel->nHGridNum;ix++){if(!pBlock->BlockPanel[ix][iy])IsFull=false;}if(IsFull){Full=true;pManager->SeriesLine++;for(intjy=iy;jy>0;jy--){Sleep(10);for(intjx=0;jx<=pPanel->nHGridNum;jx++){pBlock->BlockPanel[jx][jy]=pBlock->BlockPanel[jx][jy-1];}}}}pManager->LineNumber+=pManage

5、r->SeriesLine;pManager->Result+=pManager->SeriesLine*pManager->SeriesLine;if(Full)returntrue;elsereturnfalse;}該算法實現(xiàn)的功能為,判斷是否已經(jīng)滿行,并且若是滿行,進行消行,加分的操作。該算法的時間復(fù)雜度為O(n)=【(nVGridNum)^2*nHGridNum.】/2【2】boolDiamond::overlap(){boolbTuFa=false;POINTTexPos;for(intiy=3;iy>=0;iy--){for(intix=0;ix<4;ix++){

6、if(DiamondStruct[DiamondType][DiamondState][ix][iy]){TexPos.x=ix+DiamondPos.x;TexPos.y=iy+DiamondPos.y;pPanel->PanelPosToPos(TexPos);TexPos.y+=pPanel->GridSize.cy;if(TexPos.xPanelRect.left

7、

8、TexPos.x>pPanel->PanelRect.right

9、

10、TexPos.y>pPanel->PanelRect.bottom)bTuFa=true;if(pBlock->Bl

11、ockPanel[DiamondPos.x+ix][DiamondPos.y+iy])bTuFa=true;}}}if(bTuFa)returntrue;return0;}該算法的功能為實現(xiàn)判斷方塊是否與邊界或者已有障礙重疊,若是重疊,則返回值0,若沒有重疊,返回值1。算法的時間復(fù)雜度為O(1)【3】voidBlock::AddBlock(){for(intiy=0;iy<4;iy++)for(intix=0;ix<4;ix++){if(pDiamond->DiamondStruct[pDiamond-

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。