尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A gravity snake puzzle for the family. Eat apples to grow; the longer you are, the higher you can climb. Hand-made tutorials, bridging levels, solver-verified main levels and a bonus level, family faces, a shared leaderboard, sound, and it works offline.
index.html — the whole family game (levels, faces and rules are embedded). Built; do not edit by hand.open/index.html — the public version with generic avatars and its own leaderboard. Built.sw.js — the service worker (offline play, installable). Built; its cache version follows the page content.supabase/orchard_climber_scores.sql — the leaderboard table. Run once in the Quotal Supabase project.main go live.Move one cell at a time (one swipe = one move). After every move, if no part of the snake is resting on something solid, the whole snake falls. Eating an apple adds a segment. Mechanics: push crates and stand on them; bombs explode when they land after a fall, blowing out the rock beneath (stay out of the way); spikes kill on contact (a crate can cover them); on detonator levels (test map only for now) bombs wait instead of going off when they land, and a red Boom button on screen sets every bomb off where it sits, counting as one move; when a level has a door, eat every apple and then reach it. On the test map, five power-ups can be picked up: a sword (swipe into rock to cut one block), a sour apple (shrink by one), a seed (tap Plant to grow a block in front of your head), a golden apple (grow by two) and honey (cling to rock beside or above you for six moves). Only the red apples are needed to win. Falling off the bottom, spikes or a blast ends the attempt: the first death on a level shows the Splat card, later ones rewind one move automatically. Undo is free.
Every clear earns stars from the move count: three within about a fifth of the shortest solution (ceil(par*1.2)+2 moves), two within about three fifths (ceil(par*1.6)+4), one for any clear. Matching the shortest solution (the stored par) earns a gold apple stamp on top. The leaderboard ranks by levels cleared, then stars, then stamps, then total moves. Hint costs 3 moves in two stages: the first tap (−1) marks the apple (or door) the shortest solution goes for next, the second (−2) shows the move. Hints are solved in a Web Worker so the phone never freezes.
A 100-level review map (opened from the home screen, fully unlocked, progress kept apart from the board). Ten chapters of ten: basics, bombs, sword, sour apple, seed, golden apple, honey, detonator, then two chapters with everything. Boards grow from 14x12 to 20x18 through the chapters, each chapter rises by difficulty, and its 5th and 10th levels are the two hardest. Built by tools/gen4.js (chapter-aware mutation: allowed mechanics, a featured power-up the shortest solution must use and that must matter) and tools/assemble-valley.js.
Splash (tap to start; also unlocks audio on iOS) → Home (player tiles, Play, Family Board, The Valley, Test map) → The Orchard (a winding path of level nodes, current level marked with your face, per-level best holder from the board) → Game (cream strip with Moves / par / Length and Undo / Restart / Hint / mute, board edge to edge, tutorial tip card under it) → Level clear / Splat / Orchard cleared cards. Adding a player whose name already has scores on the board from another phone offers to restore that progress.
tools/template.html is the page without the embedded faces and levels; python3 tools/build.py (run inside tools/) assembles index.html, open/index.html and sw.js from it plus tools/rules.js (the single source of the rules), tools/levels50.json (the level set, in play order; entries are {name, tip?, rows, par, bonus?}), tools/faces.js (family photos as data URIs; git-ignored, recover it with grep -m1 '^const FACES=' index.html > tools/faces.js) and tools/level-map.json (old → new level index for leaderboard rows and local progress written before the current set).
tools/test-rules.js checks the mechanics, every tutorial and bridging level's par, and that each tutorial actually needs its mechanic. tools/review.js audits every level: par, trap ratio (share of reachable positions that can no longer be won), whether spikes/exit change the answer, whether crates are pushed and bombs detonated in the shortest solution. tools/gen2.js <seed> <n> [bridge] generates candidates that pass the acceptance tests (objects needed, crates pushed at least twice, bombs detonated, a trap-ratio floor for main levels; bridge mode makes short single-mechanic levels). tools/levels-v2.js holds the hand-made tutorials.
Older tools from the v1 engine (core.js, levels.js, gen.js, solve.js, pick.js) are kept for reference.