OpenGL實(shí)現(xiàn)俄羅斯方塊源代碼.doc

OpenGL實(shí)現(xiàn)俄羅斯方塊源代碼.doc

ID:56765547

大小:76.00 KB

頁數(shù):15頁

時(shí)間:2020-07-08

OpenGL實(shí)現(xiàn)俄羅斯方塊源代碼.doc_第1頁
OpenGL實(shí)現(xiàn)俄羅斯方塊源代碼.doc_第2頁
OpenGL實(shí)現(xiàn)俄羅斯方塊源代碼.doc_第3頁
OpenGL實(shí)現(xiàn)俄羅斯方塊源代碼.doc_第4頁
OpenGL實(shí)現(xiàn)俄羅斯方塊源代碼.doc_第5頁
資源描述:

《OpenGL實(shí)現(xiàn)俄羅斯方塊源代碼.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、.OpenGL實(shí)現(xiàn)俄羅斯方塊一、設(shè)計(jì)思路本程序采用以C++為基礎(chǔ)并利用OpenGl庫函數(shù)的方式實(shí)現(xiàn)俄羅斯方塊程序,實(shí)現(xiàn)俄羅斯方塊中正方形,T形,L形,反L形,直線型,Z字形,反Z字形七種形狀的變換操作,七種形狀的坐標(biāo)被存儲(chǔ)在一個(gè)三維數(shù)組中,每次隨機(jī)選擇一個(gè)形狀生成并下落,在下落過程中監(jiān)聽鍵盤事件。二、詳細(xì)設(shè)計(jì)說明本程序中主要的函數(shù)及其作用說明如下:down:定時(shí)下落函數(shù),由glutTimerFunc(1000,down,1);函數(shù)設(shè)置每隔1000毫秒即調(diào)用一次該函數(shù),在函數(shù)中將方塊的所有縱坐標(biāo)減一個(gè)單位。key:鍵盤事件監(jiān)聽函數(shù),當(dāng)鍵盤上有按鍵被觸發(fā)的時(shí)候即調(diào)用該函數(shù),函數(shù)部支

2、持w,a,s,d四個(gè)鍵的響應(yīng),依次代表方向鍵上,左,右,下,其中w鍵是用來控制圖形變換的,每次按w鍵時(shí),圖形在現(xiàn)有基礎(chǔ)上順時(shí)針變換一次。CheckConflict:沖突檢測函數(shù),檢測方塊下一次將要移動(dòng)的位置是否會(huì)碰到已有的方塊或者左右兩邊的墻壁。CheckDelete:每一次方塊落到底部之后,調(diào)用該函數(shù)檢查是否有滿行,如果有則調(diào)用Delete函數(shù)刪除該行。myDisplay1:作圖函數(shù)。Change:變換函數(shù),主要是通過計(jì)算變換后的圖形與之前圖形的坐標(biāo)關(guān)系來實(shí)現(xiàn)。三、源代碼#include#include#include

3、m>#include#includeusingnamespacestd;#defineLEFT'a'#defineRIGHT'd'#defineUP'w'#defineDOWN's'#defineSTART0//定義圖形的圍#defineEND19#defineSIZE25/**初始化七個(gè)二維數(shù)組,即七個(gè)塊剛開始產(chǎn)生時(shí)出現(xiàn)的位置*這里需要考慮的情況是:剛開始產(chǎn)生時(shí)有的方塊還只露出來一部分,*如果這個(gè)時(shí)候按了UP鍵進(jìn)行變換應(yīng)該怎么處理*本程序最初設(shè)計(jì)并不考慮這個(gè)問題,一開始即畫出方塊的各個(gè)部分,以后再考慮完善的事情word范文.*另外,記錄坐

4、標(biāo)的順序?yàn)閺淖笾劣?,從上至?/GLfloatb[][5][3]={{{0.0f,0.9f},{0.0f,0.8f},{0.0f,0.7f},{0.0f,0.6f}},//1、記錄長條四個(gè)坐標(biāo){{-0.1f,0.9f},{0.0f,0.9f},{-0.1f,0.8f},{0.0f,0.8f}},//2、記錄正方形{{-0.1f,0.9f},{-0.2f,0.8f},{-0.1f,0.8f},{0.0f,0.8f}},//3、T字形{{-0.1f,0.9f},{0.0f,0.9f},{0.0f,0.8f},{0.1f,0.8f}},//4、記錄Z字形{{-0.1f,0.9f},{

5、0.0f,0.9f},{-0.2f,0.8f},{-0.1f,0.8f}},//5、記錄倒Z字形{{-0.1f,0.9f},{-0.1f,0.8f},{-0.1f,0.7f},{0.0f,0.7f}},//6、記錄L字形{{0.0f,0.9f},{0.0f,0.8f},{-0.1f,0.7f},{0.0f,0.7f}},//7、記錄倒L字形};GLfloatcurLoc[5][3];GLintcurrentBlock=2;//記錄當(dāng)前正在下落的是第幾種方塊,順序如上面所示GLintturn[7]={0};//應(yīng)該變換成第幾種形態(tài)了GLfloatxd=0.0f,yd=0.0f;/

6、*這里定義的over是用來判斷方塊是否到達(dá)了不能再往下降的地方,到了則置其為true,否則就修改為false。其中有這樣幾種情況需要修改over:1、重新生成了一個(gè)方塊,修改over=false2、方塊到大底部,修改over=true*/boolover=false;//記錄游戲是否結(jié)束boolend=false;intscore=0;word范文.//設(shè)置一個(gè)鎖,在下降操作時(shí)不允許變換,在變換時(shí)不允許下降操作,否則將會(huì)產(chǎn)生資源競爭//intlock=1;/*定義一個(gè)20*20的矩陣來記錄當(dāng)前整個(gè)畫面中各個(gè)小格子的情況,可用來消除滿格行矩陣的存儲(chǔ)順序?yàn)閺淖蟮接遥瑥南碌缴?,包含?/p>

7、標(biāo)0BLOCK[i][j]中i對(duì)應(yīng)的是縱坐標(biāo),j對(duì)應(yīng)的是橫坐標(biāo)(這個(gè)有點(diǎn)痛苦),但是在消去滿格的時(shí)候還是不變,只是在用b數(shù)組給其賦值時(shí)需要反過來*/GLintBLOCK[SIZE][SIZE];voiddown(intid);voidInitBLOCK();voidChange();voidCheckDelete();intCheckConflict(intlef_rig=0);voidCreateBlocks();voidmyDisplay1();voidkey(unsignedchark

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

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

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