CoOp:Anything
게임을 검색해 협동 플레이 가능한 모드·단계·품질·커뮤니티 평점을 확인합니다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Huarong Road: a Klotski-style sliding-block puzzle with 100 solver-verified levels. It’s a single-file offline PWA in plain HTML/CSS/JS with no dependencies. It has explained hints, a solution viewer, skins, and English/Thai.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗I saw a physical Huarong Road toy on Shopee, the kind with a battery, and wondered if I should buy one to fidget with. Before spending money I wanted to try the puzzle on my PC or phone first. I couldn't find a free game that also worked offline, so I asked Claude to build one. This is the result: a small, no-nonsense version that I can play on the bus, with no ads and no sign-up.
It is a hobby project, written with Claude Code.
The in-app Update button (bottom of the menu) fetches the newest version without touching your progress.
Plain HTML, CSS and JavaScript. No framework, no runtime dependencies. The build inlines everything into one self-contained dist/index.html.
node gen/gen.js # regenerate src/levels.js (~25 s, deterministic)
node test/test.js # must print "OK: 100 levels verified"
node build.js # produce dist/ (page, manifest, service worker)
python3 gen/icons.py # PWA icons into dist/ (needs Pillow; run after build)
python3 gen/shots.py # store screenshots for the manifest (needs Playwright)
node test/pwa_test.js # manifest, icons, screenshots, service-worker list
python3 test/ui_test.py # end-to-end test at a phone viewport (needs Playwright + Chromium)
To try it locally, serve dist/ over localhost or https so the service worker registers (opening the file directly works too, just without the PWA parts).
| Path | What it is |
|---|---|
src/solver.js | Board model and BFS solver (4×5 board, 20 cells) |
src/daily.js | Date-seeded daily puzzle generator, shared with the tests |
src/levels.js | Generated 100 levels ({id, par, g}), do not hand-edit |
src/game.js | All UI logic: setup, play, hints, solution viewer, settings, design stage |
src/index.html, src/style.css | Templates inlined by the build |
gen/ | Level generator, icon generator, store and README screenshot scripts |
build.js | Builds dist/ and stamps a content-hash build id |
test/ | Level verification, PWA checks, UI end-to-end test |
docs/ | Images used by this README (gen/readme_shots.py regenerates them) |
dist/ | Built site, committed and published by the GitHub Pages workflow |
More detail on conventions and rules for changing things is in CLAUDE.md.
dist/ is committed. Pushing to main runs .github/workflows/pages.yml, which publishes dist/ to GitHub Pages, so rebuild (node build.js) before you push.
docs/social-preview.png is 1280×640, GitHub's recommended size. GitHub cannot take it from the repo, so upload it once under Settings → General → Social preview. Regenerate it (and the other README images) with python3 gen/readme_shots.py after node build.js.
LICENSE.NOTICE.md. The app icon, gear, globe and timer icons are original to this project.third_party/OFL-Anuphan.txt), embedded as a Thai-only subset so the game stays a single offline file.?) panel tells the story.