創作內容

0 GP

轉珠遊戲_邏輯試作

作者:Wr1t3R│2018-04-01 02:11:35│巴幣:0│人氣:387
一直以來都很想做個轉珠的模擬器,最主要是因為幾乎沒有模擬器能夠實時的更新pad最新出的珠子系統(像是會影響轉珠的有變色珠、雲、封條、闇暗和超闇暗等等),另一點就是想幫模擬器加上更多的功能(像是傷害模擬等等),於是乎就開始動工了。
首先就是先完成轉珠遊戲的結算方式,也就是三消(有些特殊隊長只能4、5消的比較麻煩,等到要做傷害模擬時再考慮),網路上有很多關於三消邏輯該如何做的文,但是都沒有點到轉珠遊戲的痛點,就是combo很重要。絕大部分教三消邏輯的文章都是判斷出那些珠子要消之後就一起消掉了,甚至還看到有文章是說用DFS把相同種類的珠子丟進set裡再從set裡判斷哪些要消掉(這種邏輯會犯pad早期的bug,把某些特殊形狀的2 combo算成1 combo),但轉珠遊戲可不能這麼做,也因此需要另闢思路。
這篇文章將分享我在開發消珠邏輯的思路,也幫自己做個紀錄,同大家分享~

一開始拿到盤面,會分成n個種類的珠子(分別由1~n號表示,在此只用6種),而在此,我的思路是使用遞迴來將相連並且確定能消除的combo加入container中,類似變形版的BFS(因為是使用類似queue的先進先出的概念)。
因此,在最一開始從最左上開始判斷有無可消除的combo(只需要向右及向下判斷連續兩顆珠子即可),如果有的話就從那顆珠子開始進行BFS,搜索其上兩顆,下兩顆,左兩顆,右兩顆,以及左右各一顆、上下各一顆(例如十字時就會需要這種判斷)共六種情況,若值相同的話則將那兩顆加入BFS的佇列並重複以上的判斷(要將已經判斷過的點標記,才不會進入無限迴圈),並且將找到的珠子加入set中,確定為可消除的珠子。
做完以上步驟後,應該能拿到一個包含著該combo所有珠子的container,將那些珠子的值都變為0,就完成消除1 combo的動作,而便歷完整個盤面的珠子後應該就能將該盤面第一次所能消除的珠子都消除掉了。
接下來則是落珠的部分,在此暫時不考慮天降(畢竟就是把0取代成隨機值罷了)。我的想法是從右下掃回來左上,每找到一個0的珠子,即往上找(相同column)第一個出現非0值的珠子,將兩個珠子的位置交換(其實寫成程式就變成是值交換),如此掃完整個盤面就能將所有珠子落珠完畢。
最後就是一直重複上述的兩個步驟,直到某一輪完全沒有消除到任何combo為止。

以上就是整個消珠邏輯的實現。由於轉珠遊戲在國外並不流行,相應的英文文章不多,而中文文章的部分有些看不太理解,有些則根本沒說清楚。也因此,在此分享這篇文章希望能夠幫助更多對轉珠遊戲開發有興趣的人。
(接下來該去研究下怎麼在網頁上呈現了Orz
((抱歉沒圖 請見諒
(((source code在這:https://github.com/writerwriter/match-3-puzzle-game-simulator
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3939694
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★catchingfire 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【パズドラ】白蛇の地下迷...

追蹤私訊切換新版閱覽

作品資料夾

a86189642
給你顆紅心,願你元氣滿滿事事順心 ***(≧▽≦)/***看更多我要大聲說4小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】