1. 程式人生 > >Android開發入門——推箱子游戲開發實戰(十二)

Android開發入門——推箱子游戲開發實戰(十二)

繪製遊戲局面

  本文是推箱子游戲程式開發的第七步。系列文章前五篇描述準備工作,故本文編號是(十二)。本文講解如何繪製遊戲局面。

本文目標
  本文講解如何繪製遊戲局面。遊戲局面的示例如圖1,圖2所示。這兩幅圖中,紅旗代表箱子的目的地。在任一關卡,玩家把全部箱子推到各個標有紅旗的單元格上,就過了這一關。
  這裡寫圖片描述

  實現繪製遊戲局面這一任務,要解決兩個子問題:
  1. 如何在程式中儲存遊戲局面?
  2. 如何讀取遊戲局面的儲存資料,顯示到手機螢幕上?
  第1個問題是本文的關鍵。我們知道,不僅每一關的遊戲局面不一樣,而且由於搬運工或箱子的移動,遊戲局面是不斷變化的。因此,我們要用一個“變數”來儲存遊戲局面。
  通過本文,你將學習到:
  1. 用資料類儲存遊戲局面的方法。
  2. 靜態資料成員的用法。

實現思路
  解決第一個子問題,即“如何在程式中儲存遊戲局面”,的思路是,採用矩陣來儲存遊戲局面,用字元來表示單元格的內容(例如,字元B (Box) 表示箱子;字元W (Wall) 表示牆體)。矩陣的元素與遊戲局面上的單元格一一對應,如下一節的圖3所示。矩陣的元素是字元型的。
  解決第二個子問題的思路是,依次讀取矩陣的元素,根據元素的字元值在相應的單元格內繪製圖像。例如,如果矩陣元素值為’B’,則繪製箱子;如果矩陣元素值為’W’,則繪製牆體。
  我們約定,遊戲局面固定為12行12列。這一約定是為了減少次要的細節,使我們聚焦於核心內容。
  
實現步驟
  我們要區分遊戲開局和遊戲局面這兩個概念。

  • 開局。推箱子游戲的每一關,都有一個開局。這是玩家第一次玩(或者重頭玩)這一關,最開始看到的遊戲局面,也就是這一關的初始局面——搬運工和箱子都沒有移動過的局面。各個關卡的開局資料始終要存在。這是說,推箱子游戲程式執行期間,開局資料要存在;程式下一次、下下次執行,開局資料還是要存在。這是因為,即使以前玩家一個玩過關卡,在以後玩家都有可能重頭玩這一關。還有一點,開局是不會變化的。
  • 局面。玩家在玩一個關卡期間,這個玩家在遊戲介面所看到狀態叫做局面。一個關卡的開局是這一關的初始局面。搬運工或箱子移動後,都將導致狀態變化,形成新的局面。可見,局面是不斷變化的。

下文中,首先詳細講解儲存遊戲局面的方法。在程式碼實現上,我們將講解:
1. 如何儲存遊戲關卡的開局?
2. 如何從關卡號得到該關卡的開局?
3. 如何儲存和繪製遊戲關卡的局面?

學習Android開發,要做的就是實踐、實踐、再實踐。祝好運!