尚未检测到更新。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.