繪製地圖 ( 吃東西偵測 )
這篇文章延續「繪製地圖 ( 牆壁碰撞偵測 )」文章,搭配試算表設計超大型地圖,讓地圖上出現需要「吃掉」的蘋果,並透過鍵盤控制角色,讓角色在地圖中探險找到蘋果,將蘋果吃掉。
相關文章參考:
開啟範例
開啟「繪製地圖 ( 牆壁碰撞偵測 )」的範例,從這個範例進行修改。
積木程式原理 ( 更新地圖 )
開啟範例後,先將 source 清單顯示在舞台中,並將 source 的內容清空。
清空的方式可以在積木清單裡,找到「刪除清單的所有項目」積木,下拉選單選擇 source,選擇後點擊該積木,就可以在不使用該積木的狀態下,將 source 的內容清空。
使用試算表編輯地圖的陣列 ( 參考 繪製地圖 ( 二維陣列 ) ),繪製一個非常大的地圖陣列,陣列中除了 1 和 0,額外增加幾個 2 的數字,作為蘋果出現的位置,完成後下載為 CSV,開啟 CSV 檔案,在每一行的前後加上雙引號。
因為地圖的最左側和最右側會連結在一起 ( 左右循環移動 ),,所以作為牆壁的「1」可以往右邊延伸 10 格 ( 寬度總共 20 格,從中間算起往右 10 格 ),往下延伸 7 格,角色在移動時邊緣就不會出現地板的「0」。
CSV 範例:檔案下載
從舞台上,將 CSV 檔案匯入 source 清單。
點擊綠旗,在舞台上可以看到二維陣列產生的地圖,使用鍵盤上下左右就可在地圖中探索。
積木程式原理 ( 加入蘋果 )
點擊正方形 box 角色,切換到造型頁籤,加入一個蘋果造型,將尺寸調整為 24x24,對齊畫布中心。
切換到程式頁籤,在編輯區裡找到「顯示」函式,判斷如果 list 的第 i 項等於 2,就換成蘋果造型。
完成後,點擊綠旗,地圖中 2 的位置就會出現蘋果。
積木程式原理 ( 吃東西 )
編輯角色吃東西的程式:
- 如果座標等於 x 和 y 的數值,表示角色碰到蘋果。
- 將 list 的第 i 項從 2 更換為 0。
- 執行「合併 list 為文字」函式,將 list 由清單轉換成一串文字。
- 將 map 的第 j 項,更新為新的文字。
- 廣播「eat」訊息。
每次執行「顯示」函式時,會將 map 的每個項目取出變成一個 list,所以如果更新了某個 list,要再將 list 的內容更新回 map。
點擊橘色球 ball 的角色,加入收到廣播訊息 eat 後,講出「吃到了!!!!」
完成效果
完成後,點擊綠旗,按下鍵盤的上下左右控制移動,就可以開始進行吃蘋果與地圖探索的遊戲。
範例解答
範例解答:繪製地圖 ( 吃東西偵測 )
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~