版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
游戲案例剖析
俄羅斯方塊游戲開發(fā)C/C++語言程序設(shè)計(jì)龔尚福,賈澎濤主編《C/C++語言程序設(shè)計(jì)》西安電子科技大學(xué)出版社游戲說明及規(guī)則俄羅斯方塊是由俄羅斯人阿列克謝·帕基特諾夫發(fā)明的。俄羅斯方塊原名是俄語Тетрис(英語是Tetris),這個(gè)名字來源于希臘語tetra,意思是“四”,而游戲的作者最喜歡網(wǎng)球(tennis)。于是,他把兩個(gè)詞tetra和tennis合而為一,命名為Tetris,這也就是俄羅斯方塊名字的由來。游戲規(guī)則Tetris游戲在一個(gè)m*n的矩形框內(nèi)進(jìn)行。游戲開始時(shí),矩形框的頂部會(huì)隨機(jī)出現(xiàn)一個(gè)由四個(gè)小方塊構(gòu)成的磚塊,每過一個(gè)很短的時(shí)間(我們稱這個(gè)時(shí)間為一個(gè)tick),它就會(huì)下落一格,直到它碰到矩形框的底部,然后再過一個(gè)tick它就會(huì)固定在矩形框的底部,成為固定塊。接著再過一個(gè)tick頂部又會(huì)出現(xiàn)下一個(gè)隨機(jī)形狀,同樣每隔一個(gè)tick都會(huì)下落,直到接觸到底部或者接觸到下面的固定塊時(shí),再過一個(gè)tick它也會(huì)成為固定塊,再過一個(gè)tick之后會(huì)進(jìn)行檢查,發(fā)現(xiàn)有充滿方塊的行則會(huì)消除它,同時(shí)頂部出現(xiàn)下一個(gè)隨機(jī)形狀。直到頂部出現(xiàn)的隨機(jī)形狀在剛出現(xiàn)時(shí)就與固定塊重疊,表示游戲結(jié)束。操作說明:‘a(chǎn)’或
‘4’
—左移
‘d’
或
‘6’
—右移
‘w’
或
‘8’
—旋轉(zhuǎn)
‘s’或‘5’
—快速下落
‘x’或‘2’
—快速下落項(xiàng)目規(guī)劃在做項(xiàng)目前一定要好好地構(gòu)思和規(guī)劃項(xiàng)目,根據(jù)需求規(guī)劃開發(fā)流程。項(xiàng)目開發(fā)流程圖功能分析:分析整個(gè)系統(tǒng)所需要的功能;模塊結(jié)構(gòu)規(guī)劃:規(guī)劃系統(tǒng)中所需要的功能模塊;總體設(shè)計(jì):分析系統(tǒng)處理流程,探索系統(tǒng)核心模塊的運(yùn)作;數(shù)據(jù)結(jié)構(gòu):設(shè)計(jì)系統(tǒng)中需要的數(shù)據(jù)結(jié)構(gòu);規(guī)劃函數(shù):預(yù)先規(guī)劃系統(tǒng)中需要的功能函數(shù);具體編碼:編寫系統(tǒng)的具體實(shí)現(xiàn)代碼。功能分析做一個(gè)簡(jiǎn)單的項(xiàng)目規(guī)劃書,整個(gè)規(guī)劃書分為兩個(gè)部分:系統(tǒng)需求分析;結(jié)構(gòu)規(guī)劃。系統(tǒng)需求分析(1)1) 游戲方塊的隨機(jī)生成功能
當(dāng)游戲運(yùn)行開始或方塊成為固定塊后,應(yīng)能在游戲面板頂部隨機(jī)生成一個(gè)新方塊,這樣便于玩家提前進(jìn)行控制處理。2) 游戲方塊的控制功能
游戲玩家可以對(duì)出現(xiàn)的方塊進(jìn)行移動(dòng)處理,分別實(shí)現(xiàn)左移、右移、快速下移、自由下落和行滿自動(dòng)消除功能的效果。3) 更新游戲顯示
當(dāng)在游戲中移動(dòng)方塊時(shí),需要先消除先前的游戲方塊,然后在新坐標(biāo)位置重新繪制新方塊。系統(tǒng)需求分析(2)4)游戲速度設(shè)置和分?jǐn)?shù)更新通過游戲分?jǐn)?shù)能夠?qū)崿F(xiàn)對(duì)行數(shù)的劃分,例如,可以設(shè)置消除完整的一行為10分。當(dāng)達(dá)到一定數(shù)量后,需要給游戲者進(jìn)行等級(jí)上的升級(jí)。當(dāng)玩家級(jí)別升高后,方塊的下落速度將加快,從而游戲的難度就相應(yīng)地提高了。5)系統(tǒng)幫助
游戲玩家進(jìn)入游戲系統(tǒng)后,通過幫助了解游戲的操作提示。結(jié)構(gòu)規(guī)劃系統(tǒng)模塊結(jié)構(gòu)圖總體設(shè)計(jì)——1.方塊生成新游戲的方塊使用隨機(jī)函數(shù)rand()可以產(chǎn)生0-6之間的游戲方塊編號(hào)。2.游戲方塊控制處理:左移方塊的移動(dòng)控制是整個(gè)游戲的重點(diǎn)和難點(diǎn),具體信息如下。左移處理處理過程如下。(1)判斷是否能夠左移,判斷條件有兩個(gè):左移一位后方塊不能超越游戲底板的左邊線,否則將越界;并且在游戲方塊有值(值為1)的位置,游戲底板不能是被占用的(占用時(shí)值為1)。(2)清除左移前的游戲方塊;(3)在左移一位的位置處,重新顯示此游戲的方塊??傮w設(shè)計(jì)——2.游戲方塊控制處理:右移右移處理處理過程如下。(1)判斷是否能夠右移,判斷條件有兩個(gè):右移一位后方塊不能超越游戲底板的右邊線,否則將越界;游戲方塊有值位置,游戲底板不能被占用;(2)清除右移前的游戲方塊;(3)在右移一位的位置處,重新顯示此游戲的方塊??傮w設(shè)計(jì)——2.游戲方塊控制處理:下移3) 下移處理處理過程如下。(1) 判斷是否能夠下移,判斷條件有兩個(gè):下移一位后方塊不能超越游戲底板的底邊線,否則將越界;游戲方塊有值位置,游戲底板不能被占用。滿足上述兩個(gè)條件后,可以被下移處理。(2) 清除下移前的游戲方塊;(3) 在下移一位的位置處,重新顯示此游戲的方塊??傮w設(shè)計(jì)——2.游戲方塊控制處理:旋轉(zhuǎn)4) 旋轉(zhuǎn)處理處理過程如下。(1) 判斷是否能夠旋轉(zhuǎn),判斷條件有兩個(gè):旋轉(zhuǎn)后方塊不能超越游戲底板的底邊線、左邊線和右邊線,否則將越界;游戲方塊有值位置,游戲底板不能被占用;(2) 清除旋轉(zhuǎn)前的游戲方塊;總體設(shè)計(jì)——3.更新顯示
當(dāng)游戲中的方塊在進(jìn)行移動(dòng)處理時(shí),要清除先前的游戲方塊,用新坐標(biāo)重繪游戲方塊。當(dāng)消除滿行后,要重繪游戲底板的當(dāng)前狀態(tài)??傮w設(shè)計(jì)——4.游戲速度和分?jǐn)?shù)更新處理當(dāng)行滿后,積分變量score會(huì)增加一個(gè)固定的值,然后將等級(jí)變量level和速度變量speed相關(guān)聯(lián),實(shí)現(xiàn)等級(jí)越高速度越快的效果。需要一個(gè)檢查一行是否填滿的函數(shù)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)(1)1.Tetris游戲的矩形框——二維數(shù)組首先描述Tetris游戲的矩形框。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)(2)2.游戲方塊結(jié)構(gòu)體/*■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/staticintbrickX[7][4]={{0,1,2,3},{0,1,1,2},{2,1,1,0},{1,1,2,2},{0,0,1,2},{2,2,1,0},{0,1,1,2}};static intbrickY[7][4]={{0,0,0,0},{0,0,1,1},{0,0,1,1},{0,1,0,1},{0,1,1,1},{0,1,1,1},{0,0,1,0}};詳細(xì)設(shè)計(jì)voidWelcome(void);/*歡迎界面*/voidDisplay(intbinimage[20][10]);/*顯示游戲面板函數(shù)*/voidGotoXY(intx,inty);/*輸出定位函數(shù)*/voidPause(void);/*暫停*/voidBlock_Random();/*隨機(jī)生成一個(gè)磚塊*/intmove(intoffsetX,intoffsetY,intbinImage[20][10]);/*左移、右移、下移*/introtate(intbinImage[20][10]);/*旋轉(zhuǎn)函數(shù)*/voidoutput(intbinImage[20][10]);/*輸出到顯示面板*/unsignedintremoveFullLines();/*檢查是否有一行填滿*/voidcopyimage(intdestimage[20][10],intsourceimage[20][10]);/*拷貝數(shù)組*/游戲歡迎界面繪制游戲面板算法描述:定位輸出位置(1,1)根據(jù)面板對(duì)應(yīng)的二維數(shù)組繪制繪制面板界墻,為實(shí)心方格如果二維數(shù)組相應(yīng)位為0,繪制空格否則,繪制空心方格繪制游戲面板繪制游戲面板定位輸出位置函數(shù)voidGotoXY(intx,inty)//設(shè)定輸出位置{ COORDc; c.X=x-1; c.Y=y-1; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);}typedefstruct_COORD{ SHORTX; SHORTY;}COORD,*PCOORD;SetConsoleCursorPosition:Setsthecursorpositioninthespecifiedconsolescreenbuffer.BOOLWINAPISetConsoleCursorPosition(__in
HANDLEhConsoleOutput,__in
COORDdwCursorPosition);
隨機(jī)生成一個(gè)磚塊暫停移動(dòng)方塊——左移、右移、下移旋轉(zhuǎn)點(diǎn)P(x,y)到原點(diǎn)O繞O點(diǎn)逆時(shí)針旋轉(zhuǎn)角度θ后到點(diǎn)P′(x′,y′)。由三角函數(shù)的幾何意義,有x=r*cosα,y=r*sinα和x′=r*cos(α+θ),y′=r*sin(α+θ),推出:
x′=x*cosθ–y*sinθ
y′=y*cosθ+x*sinθ當(dāng)把旋轉(zhuǎn)點(diǎn)一般化為Q(x0,y0),得到:
x′=x0+(x-x0)cosθ-(y-y0)sinθ
y′=y0+(y-y0)cosθ+(x-x0)sinθ旋轉(zhuǎn)任意點(diǎn)(x,y)繞其中心(x0,y0)逆時(shí)針旋轉(zhuǎn)angle角度后,新的坐標(biāo)位置(x1,y1)的計(jì)算公式為:
x1=(x-x0)cosθ-(y-y0)sinθ+x0;
y1=(x-x0)sinθ+(y-y0)cosθ+y0;將坐標(biāo)(x,y)繞(x0,y0)順時(shí)針旋轉(zhuǎn)90度(相當(dāng)于逆時(shí)針-90度),得到的新坐標(biāo)(x1,y1),則滿足:x1=x0+y-y0y1=y0+x0-x旋轉(zhuǎn)輸出到游戲面板voidoutput(intbinImage[20][10]){inti; for(i=0;i<4;i++) binImage[y[i]][x[i]]=1;
}/*檢查是否有一行填滿*/游戲功能設(shè)計(jì)定義用于程序流程控制的變量一個(gè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年太陽能組件安裝工程節(jié)能評(píng)估與施工合同3篇
- 2024版?zhèn)€人房產(chǎn)買賣合同裝修及設(shè)備交付標(biāo)準(zhǔn)3篇
- 2024版安徽酒店管理集團(tuán)員工勞動(dòng)合同范本3篇
- 2024年度委托加工合同精密儀器3篇
- 2024年新版加工場(chǎng)地租賃合同
- 2024年度廢渣運(yùn)輸合同環(huán)保責(zé)任與效益評(píng)估范本3篇
- 2024年度網(wǎng)絡(luò)安全與數(shù)據(jù)中心建設(shè)合同3篇
- 2024年度個(gè)人股權(quán)轉(zhuǎn)讓合同書含股權(quán)代持及解除條款3篇
- 2024年物聯(lián)網(wǎng)平臺(tái)開發(fā)與運(yùn)營合同
- 2024年WPS定制版古建筑修復(fù)施工合同
- MOOC 作物育種學(xué)-四川農(nóng)業(yè)大學(xué) 中國大學(xué)慕課答案
- 變電站隱患排查治理總結(jié)報(bào)告
- 異彩紛呈的民族文化智慧樹知到期末考試答案2024年
- 車輛救援及維修服務(wù)方案
- 三體讀書分享
- 《腎內(nèi)科品管圈》
- 空氣預(yù)熱器市場(chǎng)前景調(diào)研數(shù)據(jù)分析報(bào)告
- 2024年南平實(shí)業(yè)集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- PLC在變電站自動(dòng)化控制中的應(yīng)用案例
- 2024版國開電大法學(xué)本科《合同法》歷年期末考試案例分析題題庫
- HG-T 20583-2020 鋼制化工容器結(jié)構(gòu)設(shè)計(jì)規(guī)范
評(píng)論
0/150
提交評(píng)論