貪吃蛇 ( 分身版 )
這篇文章會介紹,如何在 Scratch 裡使用變數、清單、分身、重複、邏輯判斷、廣播訊息、碰到角色...等積木,實作一個可以用鍵盤控制的貪吃蛇小遊戲。
角色設定
在角色編輯區,刪除貓咪角色,使用繪畫,繪製「蛇」和「蛋」兩個新角色 ( 參考:造型與繪圖 )。
切換到「造型」頁籤,將紅色正方形的「蛇」,對齊中心點,並將尺寸調整為 24x24。
在造型頁籤左側清單的預覽圖,可以看見造型的真實尺寸。
使用同樣的做法,將「蛋」的造型對齊中心點,尺寸調整為 24x24。
貪吃蛇遊戲原理
貪吃蛇的遊戲基本上屬於「清單」( 陣列 ) 的操作,只要明白清單的控制原理,就能輕鬆實現貪吃蛇的遊戲
- 開始時,蛇的清單長度為 1,清單內容是蛇的位置。
- 蛇在移動時,將新的位置加入在第一個項目,並刪除最後一個項目。
- 如果吃到蛋,清單長度增加 1 ( 蛇的長度增加 1 ),將蛋的位置加入在第一個項目。
- 接著就按照上方的邏輯,控制移動和吃蛋的清單內容。
積木程式原理 ( 蛇 )
點擊「蛇」角色,建立「長度、得分、x、y」三個變數以及「listX 和 listY」兩個清單。
- 得分:總共吃到幾顆蛋 ( 勾選顯示在舞台上 )。
- 長度:蛇的長度。
- x:水平移動的方向和距離。
- y:垂直移動的方向和距離。
- listX:記錄蛇身體 x 座標的清單。
- listY:記錄蛇身體 y 座標的清單。
設計點擊綠旗的程式:
- 設定 x 和 y 變數為 0。
- 將蛇根據 x 和 y 變數定位到舞台中心點 (0, 0)。
- 使用重複無限次積木,每隔 0.1 秒執行 x 和 y 的座標改變 ( 如果 x、y 變數有變化,座標就會改變 )。
放入「當向上、向下、向右、向左鍵被按下」的積木,在按下對應鍵盤時,改變 x 和 y 的變數數值,因為角色的尺寸是 24x24,所以 x 和 y 的數值以 25 為一個單位,讓排列或移動時,會有 0.5 的間隔 ( 避免誤觸以及畫面較為好看 )。
鍵盤 | x | y |
---|---|---|
向上 | 0 | 25 |
向下 | 0 | -25 |
向左 | -25 | 0 |
向右 | 25 | 0 |
完成後點擊綠旗,就能用鍵盤控制紅色正方形移動。
修改點擊綠旗程式:
- 將得分設定為 0。
- 將 listX 和 listY 的內容清空。
- 將一開始的 xy 座標,添加到 listX 和 listY 清單裡。
根據貪吃蛇遊戲原理,將「插入清單的第一項」和「刪除清單的最後一項」積木加入重複無限次積木裡,在移動前把 xy 座標插入清單的第一項,並刪除清單的最後一項。
接著設計吃到蛋的程式:
- 放入「長度」設定為 listX 或 listY 的長度。
- 放入「如果...那麼」,判斷如果碰到「蛋」的角色時要做的動作:
- 得分增加 1。
- 插入目前的 xy 座標到 listX 和 listY 的第一項。
- 建立自己的分身。
- 廣播「吃到蛋」的訊息。
設計分身產生 ( 建立蛇的身體 ) 的程式:
- 改變分身的顏色和亮度,使其和蛇的頭有所區隔。
- 使用重複無限次積木,每次重複執行:
- 判斷如果長度大於 1,每次重複讓長度減少 1。
- 依序取出 listX 和 listY 的項目,作為分身的 xy 座標使用。
積木程式原理 ( 蛋 )
點擊「蛋」角色,編輯對應的程式:
- 點擊綠旗時,將蛋定位到 (100, 0),並將圖層移到最上層 ( 避免被蛇蓋住 )
- 當收到「吃到蛋」訊息時,將 xy 座標設定為 25 倍數的隨機數 ( 剛好定位在蛇移動的路徑上 )
完成效果
完成後,點擊綠旗,就可以開始進行貪吃蛇的遊戲。
範例解答
範例解答:貪吃蛇
延伸練習
如果已經熟悉了貪吃蛇的原理,還可以嘗試更多好玩的作法:
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~