在“1010”遊戲中玩家會不停的将下方的圖形拖拽到網格中放置,當滿足一行或者一列被填充滿時,就會進行消除得分。這一節我們就來學習一下如何進行消除處理。
實作思路:當形狀被放置到網格上後,對網格資料進行周遊和檢查,如果滿足消除條件(一行或者一列資料都是1),則移除目前行或列的方塊。
在項目中添加一個新的方塊素材,重命名為“網格資料管理”。我們會把所有與網格資料有關的邏輯都放在這個上面。它不會在遊戲中顯示,隻是默默的在背後為我們進行網格資料的檢查和處理。這裡我用藍色把它與其他物體區分開。
建立兩個全局清單:“全局-比對行”和“全局-比對列”用于記錄所有滿足條件的行号和列号。
建立兩個通知,“網格資料驗證”通知會告訴我們什麼時候進行資料驗證。“移除比對方塊”通知會告訴我們什麼時候該去進行消除處理。
接下來看一下“網格資料驗證”中的邏輯。
隻是看起來挺長,但是邏輯并不複雜,先逐行檢查網格中的資料,記錄滿足條件的行,然後再逐列檢查,記錄滿足條件的列,網格資料的檢查和周遊我們在第二節(使用表格處理資料)中已經詳細的講過,如果忘記了,可以去複習一下。
接着來看消除處理。
邏輯很簡單,如果目前有比對的行或者列,則通知所有的填充方塊,進行消除。
最後,看一下填充方塊的邏輯。
上部分的邏輯之前已經講過,在建立填充方塊時将其放置在網格中的對應位置,并将網格中對應位置的資料設定為“1”。
下部分當接收到“移除比對方塊”的通知時,判斷自己的行号和列号是否位于“全局-比對行”或者“全局-比對列”中,如果是的話,将自己删除,并且将對應位置的網格資料重置為“0”。
什麼時候對網格中的資料進行檢查和消除處理呢?當然是當我們把圖形放置在網格上後開始。選擇“容器-1”,在放置形狀的最後增加一個通知積木。
如圖,形狀被放置在網格上後,就立即發送一個通知,告訴“網格資料管理”可以開始進行資料檢查和消除了。
預覽一下,看看消除的效果。
消除一行。
消除兩列。
總結一下:
這一節我們學習了對網格中的方塊進行消除處理,其實還是通過網格中資料來檢查行和列是否滿足消除條件,然後通過使用“通知”來實作填充方格的删除。
練一下:
你的其他形狀的拖拽和填充都實作了嗎?如果實作了的話,接着實作一下其他形狀的消除吧!