ARCADE ▶ GUAVA SNAKE
毛毛蟲吃芭樂
經典貪食蛇的芭樂版!操控一隻綠色毛毛蟲在草地上吃芭樂,吃越多身體越長、速度越快。小心別撞到牆壁或自己的身體,偶爾出現的金色芭樂要趁它消失前吃掉。
玩法說明
一隻肚子餓的毛毛蟲在芭樂園裡找東西吃。吃到芭樂身體就會變長一節,越吃越長、也越爬越快,看你能撐多久!
怎麼操作
- 手機:在草地上往想去的方向滑,毛毛蟲就會轉彎。手指不用放開,可以連續滑來轉好幾個彎。也可以點下方的四個方向鍵。
- 鍵盤:方向鍵或 W A S D。
- 毛毛蟲不能直接往反方向掉頭。快速連按兩個方向(例如先上再左)會依序執行,方便做 U 字迴轉。
兩種模式
| 模式 | 規則 |
|---|---|
| 經典模式 | 撞到牆壁(棕色邊框)或自己的身體就結束 |
| 穿牆模式 | 從一邊爬出去會從對面鑽出來,只有撞到自己才會結束 |
兩種模式的最高分分開記錄。
分數
| 東西 | 分數 | 效果 |
|---|---|---|
| 芭樂 | +10 | 身體變長 1 節,速度慢慢變快 |
| 金色芭樂 | +40~+90 | 每吃 5 顆芭樂出現一次,6 秒後消失;越早吃到分數越高,身體一次長 3 節 |
金色芭樂快消失的時候會開始閃爍。
全螢幕
遊戲下方的「全螢幕」按鈕可以讓遊戲鋪滿螢幕,再按一次或點右上角的 ✕ 就能退出。
開發筆記
為什麼要做貪食蛇
貪食蛇幾乎是每個人學寫遊戲時的第一個作品,規則簡單到一句話就說得完,卻有很多值得處理的小細節。網站的遊戲廳已經有好幾款比較複雜的遊戲,想補一款「打開就會玩」的經典款,就把主角換成毛毛蟲、食物換成芭樂。
毛毛蟲其實是一個陣列
整隻毛毛蟲就是一串格子座標,第 0 格是頭:
snake.unshift({ x: nx, y: ny }); // 頭往前長一格
if (grow > 0) grow--; else snake.pop(); // 沒吃東西就把尾巴收掉
每走一步,就在前面加一格新的頭,再把最後一格尾巴拿掉,看起來就像在爬。吃到芭樂時把 grow 加 1,下一步就不收尾巴,身體自然變長一節。
撞到自己的判斷
判斷「頭有沒有撞到身體」時有一個容易漏掉的細節:如果這一步沒有吃東西,尾巴會在同一步移開,所以頭往尾巴原本的位置走是安全的。一開始沒處理這點,毛毛蟲繞小圈追著自己尾巴跑就會莫名其妙死掉,後來改成這一步尾巴會移開時,就不檢查最後一節。
輸入佇列
轉彎不是按下去立刻生效,而是等到毛毛蟲走下一步才轉。如果玩家在同一步裡快速按了「上」再按「左」,只記最後一個的話,「上」就被吃掉了,想做 U 字迴轉會變成直接撞死。所以我用一個最多放兩個方向的佇列,每走一步拿出一個,而且會擋掉「直接掉頭」的方向。
手機操作
手機沒有鍵盤,所以做了兩種方式:在草地上滑動,以及下方的方向鍵。滑動的判斷是手指移動超過 10 像素就算一次,而且會把起點重設到目前的位置,這樣手指不放開也能連續轉彎,玩起來比一直點按鈕順手很多。
如果你有破紀錄,歡迎寫信跟我炫耀一下。