ARCADE ▶ GUAVA SNAKE

毛毛蟲吃芭樂

經典貪食蛇的芭樂版!操控一隻綠色毛毛蟲在草地上吃芭樂,吃越多身體越長、速度越快。小心別撞到牆壁或自己的身體,偶爾出現的金色芭樂要趁它消失前吃掉。

  • 手機:在草地上滑動轉彎
  • 或點下方的方向鍵
  • 鍵盤:方向鍵或 W A S D
  • 「全螢幕」按鈕

玩法說明

一隻肚子餓的毛毛蟲在芭樂園裡找東西吃。吃到芭樂身體就會變長一節,越吃越長、也越爬越快,看你能撐多久!

怎麼操作

  • 手機:在草地上往想去的方向滑,毛毛蟲就會轉彎。手指不用放開,可以連續滑來轉好幾個彎。也可以點下方的四個方向鍵。
  • 鍵盤:方向鍵或 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 像素就算一次,而且會把起點重設到目前的位置,這樣手指不放開也能連續轉彎,玩起來比一直點按鈕順手很多。

如果你有破紀錄,歡迎寫信跟我炫耀一下。