天天看點

微信小遊戲開發實戰8:消除處理

微信小遊戲開發實戰8:消除處理

在“1010”遊戲中玩家會不停的将下方的圖形拖拽到網格中放置,當滿足一行或者一列被填充滿時,就會進行消除得分。這一節我們就來學習一下如何進行消除處理。

實作思路:當形狀被放置到網格上後,對網格資料進行周遊和檢查,如果滿足消除條件(一行或者一列資料都是1),則移除目前行或列的方塊。

在項目中添加一個新的方塊素材,重命名為“網格資料管理”。我們會把所有與網格資料有關的邏輯都放在這個上面。它不會在遊戲中顯示,隻是默默的在背後為我們進行網格資料的檢查和處理。這裡我用藍色把它與其他物體區分開。

微信小遊戲開發實戰8:消除處理

建立兩個全局清單:“全局-比對行”和“全局-比對列”用于記錄所有滿足條件的行号和列号。

微信小遊戲開發實戰8:消除處理

建立兩個通知,“網格資料驗證”通知會告訴我們什麼時候進行資料驗證。“移除比對方塊”通知會告訴我們什麼時候該去進行消除處理。

微信小遊戲開發實戰8:消除處理

接下來看一下“網格資料驗證”中的邏輯。

微信小遊戲開發實戰8:消除處理

隻是看起來挺長,但是邏輯并不複雜,先逐行檢查網格中的資料,記錄滿足條件的行,然後再逐列檢查,記錄滿足條件的列,網格資料的檢查和周遊我們在第二節(​​使用表格處理資料​​)中已經詳細的講過,如果忘記了,可以去複習一下。

接着來看消除處理。

微信小遊戲開發實戰8:消除處理

邏輯很簡單,如果目前有比對的行或者列,則通知所有的填充方塊,進行消除。

最後,看一下填充方塊的邏輯。

微信小遊戲開發實戰8:消除處理

上部分的邏輯之前已經講過,在建立填充方塊時将其放置在網格中的對應位置,并将網格中對應位置的資料設定為“1”。

下部分當接收到“移除比對方塊”的通知時,判斷自己的行号和列号是否位于“全局-比對行”或者“全局-比對列”中,如果是的話,将自己删除,并且将對應位置的網格資料重置為“0”。

什麼時候對網格中的資料進行檢查和消除處理呢?當然是當我們把圖形放置在網格上後開始。選擇“容器-1”,在放置形狀的最後增加一個通知積木。

微信小遊戲開發實戰8:消除處理

如圖,形狀被放置在網格上後,就立即發送一個通知,告訴“網格資料管理”可以開始進行資料檢查和消除了。 

預覽一下,看看消除的效果。

微信小遊戲開發實戰8:消除處理

消除一行。

微信小遊戲開發實戰8:消除處理

消除兩列。

總結一下:

這一節我們學習了對網格中的方塊進行消除處理,其實還是通過網格中資料來檢查行和列是否滿足消除條件,然後通過使用“通知”來實作填充方格的删除。

練一下:

你的其他形狀的拖拽和填充都實作了嗎?如果實作了的話,接着實作一下其他形狀的消除吧! 

繼續閱讀