日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

扫雷游戏开发基本思路

發(fā)布時(shí)間:2023/12/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扫雷游戏开发基本思路 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

推薦閱讀:

  • ?我的CSDN
  • ?我的博客園
  • ?QQ群:704621321

今天給大家介紹傳統(tǒng)掃雷游戲的制作思路吧,為什么選擇這個(gè)游戲呢?
1.它太金典了,金典到我們都知道,都玩過(guò),都會(huì)玩;
2.它也是一個(gè)輕量級(jí)的小游戲,比較簡(jiǎn)單。

我們先來(lái)捋一下掃雷游戲中的要素

從上到下的UI:遮罩層——>雷層——>數(shù)字層——>底層背景層。

下面來(lái)介紹一下制作流程:

1.我們制作的時(shí)候需要從底層開(kāi)始做起,首先是底層背景層,只需要一張圖片就ok了,作為游戲的背景;
2.按道理來(lái)水,我們應(yīng)該接下來(lái)做數(shù)字顯示層。可能有些朋友和我一樣,一開(kāi)始認(rèn)為是先把數(shù)字標(biāo)好再去布雷,其實(shí)應(yīng)該是先布雷,再根據(jù)布雷情況給每個(gè)格子標(biāo)數(shù)字,所以我們接下來(lái)是做雷層。
在這里提供給大家最簡(jiǎn)單的布雷思路:遍歷nm個(gè)格子,每個(gè)格子隨機(jī)指定是否是雷。為了不讓生成雷的概率過(guò)大,我們可以根據(jù)概率來(lái)決定是否生成雷。
3.生成每個(gè)格子的遮罩層:遍歷nm個(gè)格子,分別創(chuàng)建一個(gè)Button。
4.根據(jù)玩家點(diǎn)擊的格子位置,判斷周圍8個(gè)格子雷的數(shù)量顯示數(shù)字。

現(xiàn)在我就來(lái)剖析一下掃雷的制作思路:

1.創(chuàng)建地圖,并隨機(jī)生成雷
???在這里我們創(chuàng)建一個(gè)m*n的地圖,用二維數(shù)組存儲(chǔ)地圖信息,0代表無(wú)雷,1代表又雷。由于ts不能直接使用二維數(shù)組,需要借助一維數(shù)組幫助,使用方法如下:

let arr = new Array(); for (let i = 0; i < m; i++) {arr[i] = new Array();for (let j = 0; j < n; j++) {let num;//num=0或num=-1arr[i][j] = num;} }

2.判斷當(dāng)前點(diǎn)擊的是否是雷。
???在玩家點(diǎn)擊了一個(gè)[i][j]格子時(shí),我們需要判斷接下來(lái)游戲的狀態(tài):
1.如果不是雷,則計(jì)算該格子周圍雷的個(gè)數(shù)。我們需要計(jì)算格子周圍8個(gè)數(shù)中雷的個(gè)數(shù),顯示在當(dāng)前格子上。 如下圖:

//不是炸彈,創(chuàng)建數(shù)字else {if (evt.currentTarget.x - this.currentCellW == this.bowContainer.getChildAt(i).x && evt.currentTarget.y - this.currentCellH == this.bowContainer.getChildAt(i).y) { this.bowNum++; }if (evt.currentTarget.x - this.currentCellW == this.bowContainer.getChildAt(i).x && evt.currentTarget.y == this.bowContainer.getChildAt(i).y) { this.bowNum++; }if (evt.currentTarget.x - this.currentCellW == this.bowContainer.getChildAt(i).x && evt.currentTarget.y + this.currentCellH == this.bowContainer.getChildAt(i).y) { this.bowNum++; }if (evt.currentTarget.x == this.bowContainer.getChildAt(i).x && evt.currentTarget.y - this.currentCellH == this.bowContainer.getChildAt(i).y) { this.bowNum++; }if (evt.currentTarget.x == this.bowContainer.getChildAt(i).x && evt.currentTarget.y + this.currentCellH == this.bowContainer.getChildAt(i).y) { this.bowNum++; }if (evt.currentTarget.x + this.currentCellW == this.bowContainer.getChildAt(i).x && evt.currentTarget.y - this.currentCellH == this.bowContainer.getChildAt(i).y) { this.bowNum++; }if (evt.currentTarget.x + this.currentCellW == this.bowContainer.getChildAt(i).x && evt.currentTarget.y == this.bowContainer.getChildAt(i).y) { this.bowNum++; }if (evt.currentTarget.x + this.currentCellW == this.bowContainer.getChildAt(i).x && evt.currentTarget.y + this.currentCellH == this.bowContainer.getChildAt(i).y) { this.bowNum++; }}textNum.text = this.bowNum.toString();

2.如果是雷,則顯示所有雷,游戲失敗。在第一步生成地圖的時(shí)候我們順便也應(yīng)該生成雷,這時(shí)候我們比較友好的做法是把所有的雷裝進(jìn)一個(gè)雷的數(shù)組,方便這里失敗時(shí)的顯示。

///點(diǎn)擊某個(gè)方格后顯示對(duì)應(yīng)信息//遍歷雷,看當(dāng)前對(duì)象是否是雷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);//地圖上所有按鈕不可點(diǎn)擊this.lockAllBtn();this.showBannerAd("adunit-4a5e80c193902450");// this.showVideoAd("adunit-4ad7c6693898c4b0", this.VideoAdSuccess, this.VideoAdfail);break;}

3.自動(dòng)展開(kāi)無(wú)雷區(qū)域
???先給大家講講標(biāo)題的含義。即當(dāng)前點(diǎn)擊的格子不是雷,尋找周圍的8個(gè)格子,如果8個(gè)格子中其中至少有一個(gè)不存在雷,找到該種格子,繼續(xù)尋找周圍8個(gè)格子判斷是否存在不為雷的。如此反復(fù)迭代
上述方法采用的是迭代遞歸的思想,其實(shí)該方法效率并不高,但作為初學(xué)者我們能實(shí)現(xiàn)此功能就ok了。
4.勝利判斷
???就差最后一步了,當(dāng)然是判斷勝利了,其實(shí)方法很簡(jiǎn)單,只需要判斷剩下未點(diǎn)擊的格子數(shù)是否等于雷的個(gè)數(shù)。
掃雷的算法就介紹給大家了,這個(gè)算法是我第一次做掃雷時(shí)候使用的,可能不是特別完美,有什么建議或意見(jiàn)的,大家可以在下方留言哦!

總結(jié)

以上是生活随笔為你收集整理的扫雷游戏开发基本思路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 偷偷色噜狠狠狠狠的777米奇 | 国产123在线 | 五月天中文字幕av | 中文字幕在线乱 | 日本69视频 | 尤物精品视频在线观看 | 日韩免费久久 | 91成人在线免费 | 久久久久亚洲av无码麻豆 | 2025国产精品 | 七七久久| 国产精品久久久久久久一区二区 | 亚洲综合色在线 | 亚洲av无一区二区三区怡春院 | 黄网站免费看 | 牛av在线| 91蝌蚪少妇偷拍 | 亚洲欧美网址 | 最新永久地址 | 日韩视频免费观看高清完整版在线观看 | 久久激情网| 亚洲在线中文字幕 | 欧美精品乱码久久久久久按摩 | 国产成人精品一区二区三区四区 | 国产精品免费看 | 亚洲免费视频网站 | 全黄性高潮 | 久久综合亚洲 | 成人毛片视频免费看 | 一区二区三区免费视频观看 | 亚洲v国产v欧美v久久久久久 | 午夜一区 | 草草网址 | 亚州一级 | 国产丝袜av | 碰碰97| 国产精品theporn动漫 | 91福利视频在线观看 | 国产69精品久久久久777 | av尤物在线 | youjizz日本人 | 五月婷婷丁香综合 | 一起射导航 | www欧美色| 在线免费毛片 | 欧美熟妇精品久久久久久 | 在线国产视频一区 | gogo人体做爰大胆视频 | 樱花影院最新免费观看攻略 | 久久久www成人免费毛片 | 亚洲在线中文字幕 | 成人在线观看91 | 伊人影院av| 美女一区二区三区四区 | www久久久久久久 | 国内av在线播放 | 蜜桃成人在线观看 | 亚洲午夜电影网 | 中文字幕在线观看 | 天天操免费视频 | 一区二区三区国产精品视频 | 中文字幕专区 | 亚洲精品v天堂中文字幕 | 青青青手机在线视频 | 欧美精品一区在线发布 | 黄色刺激视频 | 日韩手机看片 | 岛国大片在线观看 | 中文字幕av一区二区三区谷原希美 | 欧美福利视频导航 | av无码av天天av天天爽 | 麻豆精品国产传媒av绿帽社 | www.欧美国产 | 日本一本久草 | 一本久道综合色婷婷五月 | 大陆av在线播放 | 日本午夜在线 | 在线免费福利视频 | 欧美少妇喷水 | 麻豆国产原创 | 美女扒开下面让男人捅 | 国产亚洲综合精品 | 色黄视频网站 | jizz免费观看 | 国产chinese男男gaygay视频 | 在线午夜av | 国产亚洲二区 | 情不自禁电影 | 国产suv精品一区二区883 | 国产精品v亚洲精品v日韩精品 | 久久久久亚洲精品 | 午夜国产小视频 | 亚洲丝袜中文字幕 | 国产永久免费无遮挡 | 亚洲第十页 | 久本草精品 | 成人黄色网址在线观看 | 日本大胆裸体做爰视频 | 亚洲一区二区美女 |