扫雷游戏开发基本思路
推薦閱讀:
- ?我的CSDN
- ?我的博客園
- ?QQ群:704621321
今天給大家介紹傳統掃雷游戲的制作思路吧,為什么選擇這個游戲呢?
1.它太金典了,金典到我們都知道,都玩過,都會玩;
2.它也是一個輕量級的小游戲,比較簡單。
我們先來捋一下掃雷游戲中的要素:
從上到下的UI:遮罩層——>雷層——>數字層——>底層背景層。
下面來介紹一下制作流程:
1.我們制作的時候需要從底層開始做起,首先是底層背景層,只需要一張圖片就ok了,作為游戲的背景;
2.按道理來水,我們應該接下來做數字顯示層。可能有些朋友和我一樣,一開始認為是先把數字標好再去布雷,其實應該是先布雷,再根據布雷情況給每個格子標數字,所以我們接下來是做雷層。
在這里提供給大家最簡單的布雷思路:遍歷nm個格子,每個格子隨機指定是否是雷。為了不讓生成雷的概率過大,我們可以根據概率來決定是否生成雷。
3.生成每個格子的遮罩層:遍歷nm個格子,分別創建一個Button。
4.根據玩家點擊的格子位置,判斷周圍8個格子雷的數量顯示數字。
現在我就來剖析一下掃雷的制作思路:
1.創建地圖,并隨機生成雷
???在這里我們創建一個m*n的地圖,用二維數組存儲地圖信息,0代表無雷,1代表又雷。由于ts不能直接使用二維數組,需要借助一維數組幫助,使用方法如下:
2.判斷當前點擊的是否是雷。
???在玩家點擊了一個[i][j]格子時,我們需要判斷接下來游戲的狀態:
1.如果不是雷,則計算該格子周圍雷的個數。我們需要計算格子周圍8個數中雷的個數,顯示在當前格子上。 如下圖:
2.如果是雷,則顯示所有雷,游戲失敗。在第一步生成地圖的時候我們順便也應該生成雷,這時候我們比較友好的做法是把所有的雷裝進一個雷的數組,方便這里失敗時的顯示。
///點擊某個方格后顯示對應信息//遍歷雷,看當前對象是否是雷for (var i = 0; i < this.bowContainer.numChildren; i++) {//如果是雷,顯示所有雷if (evt.currentTarget.x == this.bowContainer.getChildAt(i).x && evt.currentTarget.y == this.bowContainer.getChildAt(i).y) {this.gamePanel.addChildAt(this.bowContainer, 4);this.failM.play(0, 1);//地圖上所有按鈕不可點擊this.lockAllBtn();this.showBannerAd("adunit-4a5e80c193902450");// this.showVideoAd("adunit-4ad7c6693898c4b0", this.VideoAdSuccess, this.VideoAdfail);break;}3.自動展開無雷區域
???先給大家講講標題的含義。即當前點擊的格子不是雷,尋找周圍的8個格子,如果8個格子中其中至少有一個不存在雷,找到該種格子,繼續尋找周圍8個格子判斷是否存在不為雷的。如此反復迭代
上述方法采用的是迭代遞歸的思想,其實該方法效率并不高,但作為初學者我們能實現此功能就ok了。
4.勝利判斷
???就差最后一步了,當然是判斷勝利了,其實方法很簡單,只需要判斷剩下未點擊的格子數是否等于雷的個數。
掃雷的算法就介紹給大家了,這個算法是我第一次做掃雷時候使用的,可能不是特別完美,有什么建議或意見的,大家可以在下方留言哦!
總結
以上是生活随笔為你收集整理的扫雷游戏开发基本思路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java毕业设计——基于java+JSP
- 下一篇: CDH 配置CM Server的数据库时