Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android游戲 >> Android游戲開發 >> Android 2048游戲開發教程(四):游戲邏輯

Android 2048游戲開發教程(四):游戲邏輯

日期:2017/7/5 16:34:04      編輯:Android游戲開發

       上一節中,我們已經成功的將卡牌添加到了游戲中,但只是顯示在了界面上,並沒有保存下來。我們在GameView中定義一個二維數組用來保存游戲界面的卡牌。

4-1 Card

       接下來,我們需要將初始化時候添加的卡片添加到cardMap數組中,如下圖所示:

4-2 界面記錄

        這樣一來,我們就將游戲界面記錄下來了。

        但是上一節中,我們一下子就生成了16張卡片,這和平時游戲的時候不一致。而且我們只能生成卡片2。為了改進它,我們可以定義一個函數addRandomNumber,表示每次生成的數字(這裡我們設置生成2和4的概率為9:1):

4-3 addRandomNumber

       這裡用到了一個emptyPoints變量,我們需要定義如下:

4-4 變量定義

 

       除此之外,我們還看到在上面的程序中,我們使用0表示空點,但是我們並不希望0顯示在我們的游戲中,因此修改Card類的SetNumber函數如下:

4-5 SetNumber

       同時,我們需要修改GameView中的addCards函數,使得一開始都生成空點:

4-6 addCards

       接下來,我們可以開始游戲了,首先定義一個startGame函數,同時在onSizeChanged事件中調用它,如下圖所示:

4-7 onSizeChanged

       同時,定義startGame函數如下圖所示:

4-8 startGame

       運行查看結果,如下圖所示:

4-9 階段性結果

       接下來,我們需要實現游戲的邏輯,也就是方塊的合並。我們需要操作MoveLeft等四個函數。如下圖所示:

4-10 MoveLeft

       接下來的三個方向的移動只需要對上面的代碼進行稍微修改即可,MoveRight如下圖所示:

4-11 MoveRight

        MoveUp函數如下圖所示:

4-12 MoveUp

         MoveDown函數如下圖所示:

4-13 MoveDown

       至此,我們的移動功能已基本完成,測試如下:

4-13 階段性結果

       最後,我們來完成積分的模塊,每次操作得分都等於合並方塊的數字之和。切換到MainActivy類,添加以下代碼以獲取tvScore這個標簽:

4-14 tvScore

       接下去,為了能夠在外界操作MainActivy中的tvScore,我們修改代碼如下:

4-15 MainActivity

       最後添加計分變量以及相關的操作函數:

4-16 Score

       接下去,切換到GameView中,將下面的代碼添加到四個移動操作的相應位置:

4-17 AddScore

 

       接下來,我們需要在開始的時候清空分數:

4-18 初始化

       運行測試:

4-19 階段性結果

       接下去,我們需要在每次操作後都添加新的卡片:

4-20 添加卡片

       其它三種情況請讀者自行根據上述代碼進行修改。測試結果如下圖所示:

4-21 階段性結果

      最後,我們還需要判斷游戲是否結束。游戲結束的條件是沒有空位並且無法繼續合並。定義一個函數checkGame,如下圖所示,並且在所有移動後添加新卡片時都調用一次:

4-22 checkGame

        checkGame函數實現如下:

4-23 checkGame

       至此,游戲的基本框架都已經全部完成,我們將在下一節中介紹分數的保存以及界面的美化。

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