Android开发入门——推箱子游戏开发实战(十二)
繪制游戲局面
本文是推箱子游戲程序開發的第七步。系列文章前五篇描述準備工作,故本文編號是(十二)。本文講解如何繪制游戲局面。
本文目標
本文講解如何繪制游戲局面。游戲局面的示例如圖1,圖2所示。這兩幅圖中,紅旗代表箱子的目的地。在任一關卡,玩家把全部箱子推到各個標有紅旗的單元格上,就過了這一關。
實現繪制游戲局面這一任務,要解決兩個子問題:
1. 如何在程序中存儲游戲局面?
2. 如何讀取游戲局面的存儲數據,顯示到手機屏幕上?
第1個問題是本文的關鍵。我們知道,不僅每一關的游戲局面不一樣,而且由于搬運工或箱子的移動,游戲局面是不斷變化的。因此,我們要用一個“變量”來存儲游戲局面。
通過本文,你將學習到:
1. 用數據類存儲游戲局面的方法。
2. 靜態數據成員的用法。
實現思路
解決第一個子問題,即“如何在程序中存儲游戲局面”,的思路是,采用矩陣來存儲游戲局面,用字符來表示單元格的內容(例如,字符B (Box) 表示箱子;字符W (Wall) 表示墻體)。矩陣的元素與游戲局面上的單元格一一對應,如下一節的圖3所示。矩陣的元素是字符型的。
解決第二個子問題的思路是,依次讀取矩陣的元素,根據元素的字符值在相應的單元格內繪制圖像。例如,如果矩陣元素值為’B’,則繪制箱子;如果矩陣元素值為’W’,則繪制墻體。
我們約定,游戲局面固定為12行12列。這一約定是為了減少次要的細節,使我們聚焦于核心內容。
實現步驟
我們要區分游戲開局和游戲局面這兩個概念。
- 開局。推箱子游戲的每一關,都有一個開局。這是玩家第一次玩(或者重頭玩)這一關,最開始看到的游戲局面,也就是這一關的初始局面——搬運工和箱子都沒有移動過的局面。各個關卡的開局數據始終要存在。這是說,推箱子游戲程序運行期間,開局數據要存在;程序下一次、下下次運行,開局數據還是要存在。這是因為,即使以前玩家一個玩過關卡,在以后玩家都有可能重頭玩這一關。還有一點,開局是不會變化的。
- 局面。玩家在玩一個關卡期間,這個玩家在游戲界面所看到狀態叫做局面。一個關卡的開局是這一關的初始局面。搬運工或箱子移動后,都將導致狀態變化,形成新的局面。可見,局面是不斷變化的。
下文中,首先詳細講解存儲游戲局面的方法。在代碼實現上,我們將講解:
1. 如何存儲游戲關卡的開局?
2. 如何從關卡號得到該關卡的開局?
3. 如何存儲和繪制游戲關卡的局面?
具體的做法在《編寫推箱子游戲程序(第七步)——繪制游戲局面》一文(Word格式,13頁)中有詳細闡述,敬請下載閱讀。
代碼可從GitHub網站下載,鏈接是https://github.com/yeahatgithub/moveboxgame。本文對應的提交版本是Commits on Aug 15, 2016。你可以點擊網頁上的“16 commits”查看各個提交版本。Android開發入門——推箱子游戲開發實戰(十一)文末介紹了如何獲取某個提交版本。
學習Android開發,要做的就是實踐、實踐、再實踐。祝好運!
總結
以上是生活随笔為你收集整理的Android开发入门——推箱子游戏开发实战(十二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络技术 英语 文章,计算机网络故
- 下一篇: 配合cat.jsp批量下载脚本