連連演算法介紹 示例基於android平台

2021-05-25 08:12:20 字數 1001 閱讀 9910

大概年前空閒時間寫過一篇關於連連看演算法的介紹,但是一直都沒有時間來實現,大概花了3天時間,在android平台上實現了這麼乙個演算法,證明是可行的,不過android第一次接觸,寫得很糟糕,看看就好了,演算法大家可以自己體會下,也寫出自己的連連看來,下面先來預覽下程式吧。

遊戲開始畫面

遊戲介面

消除畫面1

路徑描繪1

消除畫面2

路徑描繪2

消除畫面3

路徑描繪3

畫面預覽好了那直達主題來介紹下演算法吧,我們都知道連連看的成功消除有三種情況,第一種是零轉角的情況,既直線可達的情況,第二種是單一轉角的情況,第三種是兩次折角的情況,那我就來分別分析一下這三種情況,先從最簡單的零折角情況開始。

在介紹這種情況之前讓我們先看圖:

我們通過上圖可以知道直線情況應該分兩種,一種是x同軸,一種是y同軸,那在這種情況的處理之前,我們應該先判斷是x同軸還是y同軸,然後再比較不在同一軸上的值的大小,確定遍歷方向,接下來就很簡單了,順著該方向遍歷就可以了。

第二種情況-單一折角:

圖中灰色代表兩點所構成矩形的另外一對對角線,既起點與終點的其中乙個座標值互換,通過圖我們可以猜想到如果為單一折角,則改折點必須與起點與終點有乙個座標值一致,所以這個折點必須是所構成矩形的另外乙個個對角線的端點,找到這兩點很簡單,那下來的我們就可以在直線零折角的基礎上判斷這兩點是否有一點與起點與終點都可達,如果可達則為單一折角的情況。

第三種情況-兩次折角:

綠點表示需要遍歷的點,從上圖大家可以這樣考慮嗎,如果是兩次折角的情況,那麼首先第乙個折角必須是與起點有乙個座標值相等,遍歷是需要從起點出發,向x軸負方向,x軸正方向,y軸負方向,y軸正方向,分別遍歷,遍歷直到出現障礙物,此前當到達某乙個座標時,就觸發第二種情況,既判斷與終點是否是單一折角的情況(因為眾多點都能與其構成矩形,所以需要這麼大面積的遍歷),如果可以則是第三種情況。

可以看到,其實二次折角是在一次折角基礎上的,一次折角是在直線判斷基礎上的,這樣就解決乙個問題,最佳路徑的問題,我們可以從0、1、2分別處理以此來找出最佳路徑。

LGame Android版 開發示例之連連看

最近經常有問到一些關於lgame開發示例的問題,似乎覺得lgame的示例還是不足以滿足日常開發的需要。其實,大家完全不用擔心lgame示例數量的問題,因為小弟在開發lgame過程中使用的測試程式已經足夠做例子用了 接近三位數 只是目前有一些部分需要優化所以暫時沒有發布而已。但是,網路的需要就是對小弟...

LGame Android版 開發示例之連連看

最近經常有問到一些關於lgame開發示例的問題,似乎覺得lgame的示例還是不足以滿足日常開發的需要。其實,大家完全不用擔心lgame示例數量的問題,因為小弟在開發lgame過程中使用的測試程式已經足夠做例子用了 接近三位數 只是目前有一些部分需要優化所以暫時沒有發布而已。但是,網路的需要就是對小弟...

LGame Android版 開發示例之連連看

最近經常有問到一些關於lgame開發示例的問題,似乎覺得lgame的示例還是不足以滿足日常開發的需要。其實,大家完全不用擔心lgame示例數量的問題,因為小弟在開發lgame過程中使用的測試程式已經足夠做例子用了 接近三位數 只是目前有一些部分需要優化所以暫時沒有發布而已。但是,網路的需要就是對小弟...