Skip to content

Repository files navigation

竹知了网页版 / Zhuzhiliao Web

XBSTACK 童玩实验室:竹知了网页版

把最近全网都在玩的竹知了,做成一个可以直接在浏览器里甩响的开源版本。

立即在线体验竹知了 · 访问 XBSTACK · 微信公众号:贵州户外

A browser-based, open-source simulation of the traditional Chinese bamboo whirring toy, built with React, TypeScript, Canvas 2D and Web Audio.

先玩,再看代码

唯一官方体验地址:

https://www.xbstack.com/tools/toy-lab/zhuzhiliao/

本仓库不单独运营 GitHub Pages 体验站。所有试玩、分享和推广流量统一回到 XBSTACK,避免产生多个版本和分散搜索权重。

打开页面后可以直接:

  • 快速连续点击,提高转速;
  • 长按持续加速;
  • 拖动鼠标或手指改变甩动轨迹;
  • 在支持的手机上开启体感模式;
  • 听到由运动能量驱动的“哇—哇—哇”合成音;
  • 查看得分、转数、转速和连续响动时间;
  • 生成 1080 × 1920 成绩海报并分享。

线上版本还包含竹知了的玩法说明、物理结构、发声原理、常见问题以及童玩实验室的后续项目。

进入 XBSTACK 线上完整版 →

关于 XBSTACK

XBSTACK 是一个面向开发者与独立产品实践的个人网站,持续记录和发布:

  • AI Agent、LangGraph、MCP、n8n 等开发实战;
  • 可直接使用的在线工具与独立产品;
  • 传统玩具数字化、互动网页与实验项目;
  • 户外、摄影、阅读和长期个人资产建设。

竹知了是 XBSTACK 童玩实验室(Toy Folk Laboratory) 的第 001 号作品。网站负责提供完整在线体验、玩法说明和后续系列;本仓库负责公开可复用的游戏实现。

浏览 XBSTACK 更多项目 →

微信公众号:贵州户外

竹知了的新版本、下一件传统玩具,以及贵州户外、徒步、旅行和山野生活内容,会同步发布在微信公众号 「贵州户外」

微信公众号贵州户外二维码

JOIN THE JOURNEY

一起探索 · 一起成长

户外探索 · 独立开发 · 投资思考

贵州徒步与路线实测
AI 工具与独立产品
投资体系与长期复盘

点击进入 XBSTACK 完整名片与网站 →

微信扫码关注「贵州户外」

为什么开源

竹知了重新进入大众视野后,互联网上大量内容集中在实物展示、制作教程和商品视频。这个项目尝试补上另一种形式:

  • 不需要购买或安装,打开网页就能玩;
  • 不只是播放动画,而是用物理状态驱动画面、声音和计分;
  • 核心实现可以被学习、修改和迁移;
  • 为传统玩具数字化、儿童互动网页和微信小游戏提供一个可复用起点。

功能

  • 固定时间步绳摆物理与绳长约束;
  • 快速连点叠加切向冲量;
  • 长按持续施加驱动力;
  • 鼠标、触摸与键盘控制;
  • iOS / Android DeviceMotion 体感模式;
  • Web Audio 原创“哇—哇—哇”合成音;
  • Canvas 2D 原创绘制与运动轨迹;
  • 本地最高分、转数、转速和连续响动统计;
  • 1080 × 1920 本地分享海报;
  • Web Share API 与剪贴板回退;
  • 无后端、无账号、无默认第三方统计服务。

技术结构

src/game/
├── core/       # 无 DOM 的物理、计分、共享类型与自动化测试
├── audio/      # Web Audio 合成器
├── input/      # DeviceMotion 适配
├── render/     # Canvas 2D 绘制
├── share/      # 本地成绩海报
└── components/ # React 交互外壳

core/ 不依赖 React、DOM、Canvas 或 Web Audio,可进一步迁移到微信小游戏、其他前端框架或原生运行时。

本地运行

npm install
npm run dev

生产检查:

npm run test
npm run check
npm run build

当前核心测试覆盖:

  • 绳长约束;
  • 大帧间隔数值稳定性;
  • 重置状态;
  • 点击冲量与持续加速;
  • 计分、连续响动与最高分;
  • 分享文案与转数格式化。

部署

这是一个标准 Vite 静态项目,执行 npm run build 后可将 dist/ 部署到:

  • GitHub Pages;
  • Cloudflare Pages;
  • Vercel;
  • Netlify;
  • 任意静态服务器。

正式产品体验仍建议使用 XBSTACK 线上版本:

https://www.xbstack.com/tools/toy-lab/zhuzhiliao/

产品事件

开源版本不内置 GA4、百度统计或其他第三方分析。需要埋点时可以监听自定义事件:

window.addEventListener("zhuzhiliao:event", (event) => {
  console.log((event as CustomEvent).detail);
});

可监听的事件包括开始游戏、重置、声音开关、体感模式、生成海报、保存、分享和达到高分等。

隐私

鼠标、触摸、键盘、传感器、成绩和海报均在浏览器本地处理。本仓库不包含用户系统、排行榜或服务端数据上传。

XBSTACK 线上版本只记录匿名产品事件,不上传原始动作轨迹或设备姿态。

贡献

欢迎提交 Issue 和 Pull Request。适合继续推进的方向包括:

  • 更接近实物的自采样声音;
  • 不同地区的竹知了结构与皮肤;
  • PWA 与离线模式;
  • 微信小游戏适配器;
  • 物理参数可视化;
  • 可访问性和多语言;
  • 更多中国传统玩具互动实现。

提交前请运行:

npm run test
npm run check
npm run build

相关入口

License

MIT License。

Original implementation by XBSTACK.

About

Open-source browser simulation of the traditional Chinese bamboo whirring toy by XBSTACK

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages