天天看點

微信小遊戲開發實戰10:檢查形狀

在“1010”遊戲中,當網格中再也沒有位置安放剩餘的形狀時,遊戲就會結束。為了能夠判斷目前的形狀是否還能夠放置到網格中,我們就需要對目前的形狀進行檢查。

這一節,我們就來實作一下形狀的檢查以及遊戲結束的判定。

微信小遊戲開發實戰10:檢查形狀

如圖,當網格中再也沒有位置安放剩餘的形狀的時候,就是遊戲結束的時候。

實作思路:每當一個形狀被放置到網格中後,就需要對剩餘的形狀進行一遍檢查,檢查網格上是否還有能夠放置其它形狀的位置,如果有的話,則遊戲可以繼續進行,如果沒有任何的位置可以放置剩餘的形狀,則遊戲結束。

下面,我們先看一張圖,配合着圖檔了解一下整個檢查的過程。

微信小遊戲開發實戰10:檢查形狀

假設目前網格中的布局如圖上所示,“0”的位置表示空白,“1”的位置表示已經填充。我們需要檢查目前的“田字”形狀是否能夠放置到網格中。從左下角開始一行一行的檢查,首先會檢查紅色的框圈出的位置1的四個方塊,發現位置1無法放置,接着開始向右挪動一個位置開始檢查藍色位置2的四個方塊,發現位置2也無法放置,接着繼續向右挪動一格檢查,直到檢查到位置6,仍然沒有可以放置的位置。這樣第一行就檢查完了,然後接着從第二行開始檢查,依舊沒有合适的位置,接着第三行,發現第一個綠框圈出的位置可以進行放置,這樣整個檢查過程就結束了。剩餘的位置也無需再進行檢查了,因為我們已經知道網格上至少是有一個位置可以安放目前的形狀,這樣就足夠了。

如果整個網格周遊檢查完後都沒有找到合适的位置,那就意味着目前的形狀無效(即無法放置到網格上)。

接着我們就動手實作一下這個形狀檢查的功能,首先,選擇“容器-1”,先為其增加幾個新的“局部變量”。

微信小遊戲開發實戰10:檢查形狀

“形狀是否有效”來辨別目前的形狀是否處于“有效狀态”,1表示有效,0表示無效。“目前位置是否可放形狀”用于在周遊檢查中記錄檢查的結果。“正在删除”用于辨別目前的形狀是否正在删除,對于正在删除的形狀是沒有必要進行檢查的(後續會有詳細解釋)。

接着,增加一個新的全局變量“全局-有效形狀的數量”,記錄目前遊戲中有多少個形狀是有效的,如果目前網格中還有位置可以放置形狀,則我們認為該形狀有效,否則的話,該形狀無效。

微信小遊戲開發實戰10:檢查形狀

新增一個通知“檢查形狀”,每當形狀的數量發生變化後,我們就發送一下這個通知,通知剩餘的形狀進行檢查。

微信小遊戲開發實戰10:檢查形狀

最後,選擇“容器-1”,為其增加如下的積木塊。

微信小遊戲開發實戰10:檢查形狀
微信小遊戲開發實戰10:檢查形狀

如圖,檢查的邏輯,我們在上方已經詳細的講述過。重點在于兩個紅框框出來的“如果”部分的邏輯,一個判定條件是要将檢查範圍限定在網格範圍之内,一個判定條件是網格的目前位置是否已經被填充了。最後,如果形狀有效的話,我們就讓其正常顯示,如果形狀無效的話,降低其透明度,讓其變暗,表示目前形狀無效。

接着,我們把形狀“按下”和“放開”的邏輯做一點兒調整。

微信小遊戲開發實戰10:檢查形狀

如圖,增加了一個判定條件,隻有當形狀有效時,形狀才能夠被選擇和拖動。

最後在“放置形狀”邏輯中增加一塊新的積木。

微信小遊戲開發實戰10:檢查形狀

如圖,在執行真正的删除操作前,先将目前的形狀辨別為删除狀态,這樣在進行後續的形狀檢查時,就不需要再對這個形狀進行一次檢查了。

我們在什麼時機進行形狀檢查呢?每當一個形狀被放置到網格上後,就應該對剩餘的形狀進行一次檢查,是以每當遊戲中的形狀數量發生變化時,也就是我們執行形狀檢查的時機。

選擇“形狀管理”,在“形狀數量發生變化”的塊中,新增如下的邏輯。

微信小遊戲開發實戰10:檢查形狀

每當形狀數量發生變化後,就發送一次“檢查形狀”的通知,通知剩餘的形狀進行檢查。如果遊戲中的有效形狀數量為0,則證明遊戲結束了,發送一個“遊戲結束”的通知。

最後,我在場景中增加了一個簡單的遊戲結束的界面,當接收到“遊戲結束”的通知時就會顯示。用于表示遊戲結束,點選按鈕可以重新開始遊戲。邏輯非常的簡單,在此就不多做贅述了。

微信小遊戲開發實戰10:檢查形狀

預覽一下遊戲,看看最後的遊戲結束效果。

微信小遊戲開發實戰10:檢查形狀

當把中間的形狀放置在網格中後,網格中不再有位置可以放置剩餘的兩個形狀了,剩餘的形狀失效(變暗),遊戲結束,顯示遊戲結束頁面。

總結一下

這一節中我們實作了形狀檢查的功能,并且增加了遊戲結束的判定,這樣1010遊戲的整體流程算是完整了。

練一下

繼續閱讀