資源描述:
《實驗五 掃雷游戲的實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、閩江學院教案課程名稱《Flash游戲編程》任課老師:肖剛上機實驗須知實驗名稱:掃雷游戲的實現(xiàn)實驗目的:利用二維編碼方式編碼地雷地圖,然后基于二維地圖實現(xiàn)掃雷游戲的各個部分的算法,最終實現(xiàn)掃雷游戲。實驗環(huán)境:1)高檔微機2)Windows操作系統(tǒng)中文版3)FlashCS3Professional中文版實驗原理:地圖是許多游戲的重要組成。小游戲例如俄羅斯方塊、各種棋類游戲、搬運工游戲等,大型游戲例如英雄無敵、魔獸爭霸,無不與地圖緊密關(guān)聯(lián)。一般來說,游戲中的地圖是由地圖元件、編碼數(shù)據(jù)和基于編碼的算法三個部分組成。例如下圖是已經(jīng)完成的掃雷游戲的截圖:其地圖(即游戲
2、中的地板方塊組合)的三個部分分為為:地圖元件、編碼數(shù)據(jù)以及基于編碼的算法地圖元件就是游戲中的每個方塊,它記錄著是否有雷,位置所引,是否已經(jīng)被打開,是否被插上旗幟以及是否爆炸等屬性,狀態(tài)和效果??梢圆捎媒巧O計思想設計。地圖編碼的作用其實是在地圖元件與算法之間建立一個最簡的溝通橋梁。我們可以基于編碼方式設計算法,然后通過編碼找到對應的元件,也可以從元件出發(fā)獲取其編碼值,然后用這個編碼值參與算法過程。這里我們可以建立一個二維數(shù)組,每個數(shù)據(jù)項存儲的是一個方塊的引用。這樣二維數(shù)組就是游戲的編碼方式。一方面,我們可以基于二維數(shù)組的下標(即索引)找到每個方塊,另一方面
3、,我們還要在每個方塊中定義變量indexX和indexY,用來記錄其索引值,當方塊觸發(fā)了某個事件(如鼠標點擊),就可以通過讀取這個方塊的索引值從而確定它在二維數(shù)組中的位置。好的地圖編碼方式應該是即滿足記錄數(shù)據(jù)的需要,又是最簡的。經(jīng)驗證明,二維數(shù)組是行之有效又簡單的地圖編碼方式?;诙S編碼上的掃雷算法包括:l編碼與索引l布置雷區(qū)l隨機分布地雷11閩江學院教案課程名稱《Flash游戲編程》任課老師:肖剛l計算單元格周圍雷數(shù)l無雷區(qū)自動擴張的設計l判斷地雷是否已經(jīng)全部掃除l人機交互部分的設計l設置難度級別l顯示所有地雷詳細介紹請看本章(第六章地圖布置與地圖相關(guān)
4、算法)的PPT文檔。實驗內(nèi)容:模擬實現(xiàn)類似于Windows自帶的小游戲“掃雷”??梢允謩拥卦O置難度級別,或者干脆直接設置地圖的尺寸,和地雷的數(shù)量,然后開始游戲。實驗步驟:1)制作方塊角色很明顯,掃雷游戲中的每一個方格,都是一個雷區(qū)單元角色的實例。這個雷區(qū)單元應該包含如下的成員:成員成員描述discovered是否被打開了haveMine是否有地雷haveFlag是否有旗幟i、j雷區(qū)單元所在的位置各個界面如未打開、顯示地雷、爆炸、顯示周圍雷數(shù)等界面showMine()顯示地雷界面showExplode()顯示地雷爆炸界面showInit()顯示初始化時的界面
5、showAround(num)顯示地雷被排除的界面flag()顯示/隱藏旗幟設計這樣的一個雷區(qū)方格角色,對我們來說,已經(jīng)是輕車熟路,為了節(jié)省篇幅,這里忽略具體的實現(xiàn)。已完成的方塊角色的每一幀的內(nèi)容如下圖所示:這些畫面簡單明了。第一幀有初始化代碼:vardiscovered:Boolean=false;varhaveMine:Boolean=false;varhaveFlag:Boolean=false;varline:int,row:int;functionshowMine(){discovered=true;gotoAndStop(4);}functio
6、nshowExplode(){11閩江學院教案課程名稱《Flash游戲編程》任課老師:肖剛discovered=true;gotoAndStop(5);}functionshowInit(){gotoAndStop(2);discovered=false;}functionshowAround(num){discovered=true;gotoAndStop(num+6);}functionflag():Boolean{if(haveFlag==true){gotoAndStop(2);}else{gotoAndStop(3);}haveFlag=!hav
7、eFlag;returnhaveFlag;}第二幀為默認的狀態(tài),時間軸應該停止在這一幀。代碼:stop();至此我們已經(jīng)完成這個角色的設計,在庫中選中這個方塊剪輯,點擊右鍵,選擇“鏈接…”,將其鏈接為Cell輸出。如下圖所示:1)布置場景掃雷游戲只有一幀。時間軸如圖所示:11閩江學院教案課程名稱《Flash游戲編程》任課老師:肖剛界面內(nèi)容如下圖所示:其中各個文本框的實例名稱分別為:txtLineCount、txtRowCount、txtMineCount、txtMineLeft。開始按鈕的實例名稱為:bt_start,預設下拉框的實例名稱為:mode。預設
8、下拉框內(nèi)的數(shù)據(jù)選項為:自此完成了整個界面的設計。1)編寫代碼11閩