Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> android項目實戰之連連看—設計篇

android項目實戰之連連看—設計篇

編輯:Android開發實例

  此篇為本系列文章第一篇,只為記下android小項目的是設計,實現過程。本文將首先介紹連連看項目的設計,以及涉及到的相關的內容與項目中所需算法.

本系列文章記錄只是為了增加android項目實戰經驗,將所學的知識用於相應的項目開發當中。首先介紹一下android中連連看項目的架構及所用到的技術進行簡要分析,框架基本如下圖所示:

本程序主要包含兩大模塊:即(1)表示層模塊;(2)後台邏輯模塊;

其中表示層模塊可以理解為游戲的UI及一些游戲輔助效果,表示層模塊中,重要的是實現游戲的布局地圖,項目中實現中,游戲的布局將使用自定義View的方式,在屏幕上貼圖實現。而菜單模塊及選關的dialog,只是為用戶提供一些常見的選擇,如重玩,過關繼續,音效開關等等,為了有一個更好的用戶交互環境,dialog的實現將通過自定義dialog的方式。而游戲音效是MediaPlayer在不同的狀態場景下播放不同的游戲音效。

後台邏輯模塊中,即時對於程序計算的實現與程序各種狀態的監聽,將是整個程序運行的基礎。此模塊中將實現對於游戲剩余時間限制和游戲狀態的監聽與處理。對於游戲剩余時間的監聽,將開啟單獨的線程進行處理,從而不至於影響主程序邏輯的運行;游戲的狀態的監控處理中,將會實現對於連通的兩個圖標的消除(即游戲界面的更新),游戲輸贏的監聽判斷,游戲暫停與否等(暫停狀態需要同時將剩余時間暫停,而時間監聽線程需要知道所處狀態,此二者緊密聯系)。對於本程序中最重要的還是程序中核心算法模塊的實現,在游戲中,最主要的算法是判斷兩個選中的圖標是否能夠連通,其余兩個算法也依賴於此算法而進行。下面著重介紹一下連接算法:

  在介紹連接算法之前,先簡單介紹一下連連看的布局算法,為了簡單起見,我們使用4*4的棋盤,假設棋子有四種:

首先在程序初始化時,我們先將要加載的圖片在棋盤上按序繪制出來,注意每一種圖標我們繪制的時候需要一次性繪制兩次,這樣,才能保重繪制出來的每種圖標的個數都是偶數個。假設最初如下圖(1):

                                                 

                                 圖(1)最初繪制                     圖(2)調換後棋盤

這樣繪制後,我們進行一次遍歷,隨機的調換棋盤中的圖標(是現有棋盤中的圖標之間的調換,並不是更改成為其他的圖標)。經過調換的棋盤可能如圖(2)所示這樣就完成了棋盤的初始化,當然我們的棋盤在最外面一層中是不添加圖標的,為的是我們連線時候能夠使用最外層畫線,而不會出現穿過圖標畫線的情況,棋盤如下圖:

                                             

  現在看看連接算法的原理:

首先兩個圖標能夠連接的充分條件是:(1)兩個圖標是相同的;(2)兩個圖標之間有一條路相連,其中這條“路上”沒有其他的圖標“阻礙”;(3)這一條路不能有兩個以上的拐角;滿足這三個條件即可認為兩個圖標是相連通的;對於連通的判斷中,圖標連通時有三種情況,分為以下:

(1)直線型:這就是橫向或者是縱向方向判斷即可,這種情況最容易判斷,只要兩者之間沒有其他圖標即可,就不多說;

(2)一折型:其實在兩個選中圖標確定的兩個對角頂點畫一個矩形,若是其余兩個頂點中有能夠滿足與兩個選中圖標都能夠“直線型”相連的,即可認為此兩個選中圖標可以相連,實例如下,判斷兩個紅色的圖標相連的情況:

                                               

                   一折型的示例

(3)二折型:對於二折型的判斷是重點。判斷二折型主要是做兩個方向的掃描,即橫向掃描與縱向掃描:

首先說橫向掃描:

                                      

                          需要判斷的兩個紅色圖標                進行橫向擴展                              擴展中兩點能夠滿足直線型相連

橫向掃描中:首先將兩個需要判斷的比圖標進行橫向的擴展,擴張規則是在沒有遇到其他圖標時一直擴展,知道遇到此行的其他圖標或者到達棋盤的邊緣,擴展後的點如圖中X表示,如果擴展後的點種能夠存在兩點滿足直線型相連通的情況,即可判斷兩個圖標是可以相連通的,連通的畫線也是根據這兩個輔助點相連而成的;

類似的,對於縱向掃描中:

                                     

                           需要判斷的兩個紅色圖標                  進行縱向擴展                           擴展中存在兩點能夠滿足”直線型“

連連看連接算法到此也算完成了,至於hint的幫助算法,判斷當前棋盤是否還有解的算法都是依賴於次算法。

    此項目文章下一步將是進行每一個功能模塊及算法的一步步實現。之所以寫本系列的文章,為了記錄android小項目的經歷,增加實戰的能力,做個總結。並不是為了做出多麼新穎的項目,當然也向不少的網友學習了!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved