Cocos creator---掃雷游戲核心算法思想

一焚虱、 掃雷游戲?qū)崿F(xiàn)核心思路解析

數(shù)據(jù)和視圖盡量分離。采用面向?qū)ο蟮膶?shí)現(xiàn)設(shè)計(jì)數(shù)據(jù)模塊懂版。格子作為一類對(duì)象鹃栽,雷場(chǎng)作為一類對(duì)象,雷場(chǎng)由格子構(gòu)成躯畴。

二民鼓、 掃雷游戲核心數(shù)據(jù)模塊

1. Cell.js單元格類

2. MineField.js雷場(chǎng)類

【1】畫格子

雷場(chǎng)由Cell的對(duì)象構(gòu)成的數(shù)組組成,實(shí)質(zhì)就是給雷場(chǎng)的cells數(shù)組賦值蓬抄。

【2】藏地雷

實(shí)質(zhì)就是修改雷場(chǎng)的cells數(shù)組中的隨機(jī)一些索引的cell的info屬性值丰嘉。

【3】留暗號(hào)

實(shí)質(zhì)就是在地雷周邊8個(gè)格子中標(biāo)上數(shù)字,數(shù)值為此單元格周邊8個(gè)單元格中雷的數(shù)量嚷缭。如下圖所示:

【3-1】獲取某顆地雷周圍所有單元格

如下圖所示供嚎,假如要獲取(0,0)周圍8個(gè)單元格峭状,則偏移量就

是其周邊8個(gè)單元格的坐標(biāo):

同時(shí)克滴,偏移后,我們還要判斷這個(gè)格子是否超出雷場(chǎng)优床。即便宜后x劝赔、y值不能小于0,且不能大于行或列的最大值胆敞。

偏移量offset和判斷是否超出雷場(chǎng)區(qū)域的方法如下:

【3-2】更新所有地雷周圍所有非雷(數(shù)字)單元格的數(shù)字標(biāo)記

三着帽、 ArrayUtils.js數(shù)組工具類(直接使用)

四杂伟、 數(shù)據(jù)校驗(yàn)測(cè)試

1. Game_mgr.js掛載到Canvas節(jié)點(diǎn)上

掛載到Canvas節(jié)點(diǎn)上,運(yùn)行測(cè)試結(jié)果如下:

2. 優(yōu)化測(cè)試-驗(yàn)證數(shù)據(jù)正確與否

發(fā)現(xiàn)顯示結(jié)果不便于核實(shí)數(shù)據(jù)是否正確仍翰,我們優(yōu)化下赫粥,在MineField中添加printResult方法:

五、 數(shù)據(jù)與視圖綁定

新建一個(gè)空節(jié)點(diǎn)MineField作為雷場(chǎng)予借,將res中的block拖到MineField內(nèi)越平,作為地磚,在block節(jié)點(diǎn)內(nèi)新建空節(jié)點(diǎn)around_bombs灵迫,在此節(jié)點(diǎn)上添加Label組件秦叛,用于顯示此地磚的信息info。之后將block做成預(yù)制體瀑粥,便于動(dòng)態(tài)生成雷場(chǎng)所有地磚挣跋。

動(dòng)態(tài)生成的過(guò)程中,將每個(gè)地磚跟MineField的cells數(shù)組中的元素綁定狞换。

在Game_mgr.js的properties中添加屬性避咆,同時(shí)通過(guò)編輯器綁定屬性值:

編譯運(yùn)行,結(jié)果如下:

將信息顯示到地磚上:

block.cell = this.mineField.cells[index];

// 顯示地磚內(nèi)部信息

this.showBlockInnerInfo(block);

信息顯示到地磚上的實(shí)現(xiàn)方法(便于后續(xù)觸摸調(diào)用):

// 顯示地磚內(nèi)部信息

showBlockInnerInfo(block){

block.getChildByName("around_bombs").getComponent(cc.Label).string = block.cell.info;

},

編譯運(yùn)行結(jié)果如下:

仔細(xì)思考修噪,發(fā)現(xiàn)剛才Game_mgr.js其實(shí)就是控制MineField這個(gè)節(jié)點(diǎn)的查库,故我們將其修改為MineField_Ctrl.js。將Canvas上的用戶自定義組件remove割按,在MineField節(jié)點(diǎn)上添加MineField_Ctrl組件膨报,將其中block_root屬性去掉磷籍,將代碼中this.block_root替換為this.node适荣。
點(diǎn)擊鏈接加入群聊【Unity/Cocos交流群】

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市院领,隨后出現(xiàn)的幾起案子弛矛,更是在濱河造成了極大的恐慌,老刑警劉巖比然,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丈氓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡强法,警方通過(guò)查閱死者的電腦和手機(jī)万俗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)饮怯,“玉大人闰歪,你說(shuō)我怎么就攤上這事”褪” “怎么了库倘?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵临扮,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我教翩,道長(zhǎng)杆勇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任饱亿,我火速辦了婚禮蚜退,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘路捧。我一直安慰自己关霸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布杰扫。 她就那樣靜靜地躺著队寇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪章姓。 梳的紋絲不亂的頭發(fā)上佳遣,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音凡伊,去河邊找鬼零渐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛系忙,可吹牛的內(nèi)容都是我干的诵盼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼银还,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼风宁!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蛹疯,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤戒财,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捺弦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饮寞,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年列吼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幽崩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寞钥,死狀恐怖慌申,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凑耻,我是刑警寧澤太示,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布柠贤,位于F島的核電站,受9級(jí)特大地震影響类缤,放射性物質(zhì)發(fā)生泄漏臼勉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一餐弱、第九天 我趴在偏房一處隱蔽的房頂上張望宴霸。 院中可真熱鬧,春花似錦膏蚓、人聲如沸瓢谢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)氓扛。三九已至,卻和暖如春论笔,著一層夾襖步出監(jiān)牢的瞬間采郎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工狂魔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒜埋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓最楷,卻偏偏與公主長(zhǎng)得像整份,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子籽孙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一烈评、 掃雷游戲?qū)崿F(xiàn)核心思路解析 數(shù)據(jù)和視圖盡量分離。采用面向?qū)ο蟮膶?shí)現(xiàn)設(shè)計(jì)數(shù)據(jù)模塊蚯撩。格子作為一類對(duì)象础倍,雷場(chǎng)作為一類...
    游戲開發(fā)大表哥閱讀 522評(píng)論 0 0
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,105評(píng)論 1 32
  • 一烛占、Designing Your Data Source and Delegate Every collectio...
    零點(diǎn)知晨閱讀 421評(píng)論 0 0
  • 翻譯自“Collection View Programming Guide for iOS” 0 關(guān)于iOS集合視...
    lakerszhy閱讀 3,869評(píng)論 1 22
  • 大學(xué)住過(guò)倆個(gè)宿舍胎挎,仙林的三室小公寓,三牌樓的號(hào)子房忆家。 印象里犹菇,我是,2010年8月26日芽卿,來(lái)南郵仙林校區(qū)揭芍,父母一起...
    王_建峰閱讀 620評(píng)論 3 5