編輯:Android游戲開發
上一節中,我們已經成功的將卡牌添加到了游戲中,但只是顯示在了界面上,並沒有保存下來。我們在GameView中定義一個二維數組用來保存游戲界面的卡牌。
接下來,我們需要將初始化時候添加的卡片添加到cardMap數組中,如下圖所示:
這樣一來,我們就將游戲界面記錄下來了。
但是上一節中,我們一下子就生成了16張卡片,這和平時游戲的時候不一致。而且我們只能生成卡片2。為了改進它,我們可以定義一個函數addRandomNumber,表示每次生成的數字(這裡我們設置生成2和4的概率為9:1):
這裡用到了一個emptyPoints變量,我們需要定義如下:
除此之外,我們還看到在上面的程序中,我們使用0表示空點,但是我們並不希望0顯示在我們的游戲中,因此修改Card類的SetNumber函數如下:
同時,我們需要修改GameView中的addCards函數,使得一開始都生成空點:
接下來,我們可以開始游戲了,首先定義一個startGame函數,同時在onSizeChanged事件中調用它,如下圖所示:
同時,定義startGame函數如下圖所示:
運行查看結果,如下圖所示:
接下來,我們需要實現游戲的邏輯,也就是方塊的合並。我們需要操作MoveLeft等四個函數。如下圖所示:
接下來的三個方向的移動只需要對上面的代碼進行稍微修改即可,MoveRight如下圖所示:
MoveUp函數如下圖所示:
MoveDown函數如下圖所示:
至此,我們的移動功能已基本完成,測試如下:
最後,我們來完成積分的模塊,每次操作得分都等於合並方塊的數字之和。切換到MainActivy類,添加以下代碼以獲取tvScore這個標簽:
接下去,為了能夠在外界操作MainActivy中的tvScore,我們修改代碼如下:
最後添加計分變量以及相關的操作函數:
接下去,切換到GameView中,將下面的代碼添加到四個移動操作的相應位置:
接下來,我們需要在開始的時候清空分數:
運行測試:
接下去,我們需要在每次操作後都添加新的卡片:
其它三種情況請讀者自行根據上述代碼進行修改。測試結果如下圖所示:
最後,我們還需要判斷游戲是否結束。游戲結束的條件是沒有空位並且無法繼續合並。定義一個函數checkGame,如下圖所示,並且在所有移動後添加新卡片時都調用一次:
checkGame函數實現如下:
至此,游戲的基本框架都已經全部完成,我們將在下一節中介紹分數的保存以及界面的美化。
1. onKeyDown 方法 onKeyDown 方法是KeyEvent.Callback 接口中的一個抽象方法,重寫onKeyDown 方法可
在教你開發一個簡單的五子棋游戲中分享了五子棋游戲的開發方法,本文開始為大家分享
前言: 看了不少Andriod游戲開發方面的博客,發現大多都是講解某一方面的知識,沒有一個完整的開發教程。 所以我就寫了這樣一個系列的博客,完整
數據庫SQLite介紹 數據庫最經典的四個操作 添加、刪除、修改、查找,在處理大量數據的時候使用