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

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

搬運工推著箱子走

本文描述推箱子游戲開發的第六步(上面的第十一步是加上前面的準備步驟)。

本文目標
  本文描述如何實現搬運工推著箱子走的功能。如圖1-a所示,在遊戲介面上,當玩家用手指按下搬運工右側單元格時,搬運工將推著箱子往右走動一步。走一步之後的效果如1-b所示。

這裡寫圖片描述
  
  本文用到的Android知識內容在前面都已經介紹過了。我們將複習:
  1. 繪製圖片的方法。
  2. 矩形類Rect的用法。

實現思路和步驟

  • 思路
      什麼時候會發生搬運工推著箱子走呢?答案是,玩家指揮搬運工向上(下、左、右)走一步,而上方(下方、左側、右側)正好放著一個箱子。要注意的是,箱子在移動後不能出界。
    《編寫推箱子游戲程式(第五步)》一文講到,玩家在遊戲介面上用手指觸控的方式指揮搬運工走動。這個時候,Android系統將呼叫onTouchEvent()回撥函式,在該回調函式內執行搬運工走動的功能。以向下走一步為例,回撥函式內執行的程式碼邏輯是:
  if (觸控點落在搬運工下方單元格內) {
        if (搬運工向下走一步沒有出界)
            搬運工向下走一步;
  }

  我們將在上述程式碼邏輯內加入推著箱子走的功能。繼續以向下走一步為例,回撥函式內執行的程式碼邏輯變為:

        if (觸控點落在搬運工下方單元格內) {
            if (箱子處在搬運工正下方){
                if (箱子向下移動一步沒有出界){
             箱子向下移動一步;
             搬運工向下走一步;
          }
       } 
          else
if (搬運工向下走一步沒有出界) //箱子沒有在搬運工正下方的情形 搬運工向下走一步;      }

  上述修改後的程式碼邏輯分兩種情形來處理,一種是箱子在搬運工正下方的情形,另一種是箱子不在搬運工正下方的情形。

  • 步驟
    1. 實現搬運工推著箱子向下走一步的功能。
    2. 搬運工推著箱子向上、向左、向右走一步的功能實現,留作作業。

實現搬運工推著箱子向下走一步
  有了上面的思路,我們要回答以下問題:
   1. 如何知道箱子是否處在搬運工正下方?
   2. 如何判別箱子向下移動後會不會出界?
   3. 對於箱子向下走一步,程式碼該怎麼寫?

  1. 點選以上超連結,訪問moveboxgame專案。再在顯示的網頁(見圖2)上點選用黑色橢圓圈起來的“16 commits”。(16 commits是指我提交了16個版本,推箱子游戲開發實戰的每一步至少有一個版本。)

      這裡寫圖片描述
      圖2 GitHub上的moveboxgame專案

  2. 圖3顯示了我提交的版本,提交日期越晚的版本,實現的功能越多。對於推箱子游戲程式的第六步實現的原始碼,請見紅色方框圈起來的連結(即Commits on Aug 14, 2016)。點選該連結,將列出該版本的原始碼,你可以下載使用。
    這裡寫圖片描述
    圖3 推箱子游戲程式的第六步的提交版本

      BTW: 由於準備學生的期末考試,加上別的事情,“推箱子游戲開發實戰(十一)”的釋出耽擱了蠻久。有一位網友給我發私信催促了。謝謝,這對我是一個小鼓勵呢。另外,也向該網友表示抱歉,我沒有注意到CSDN私信,沒能及時回覆。