Skip to content

About

方寸 · Cube Tutor:零基础三阶魔方互动课堂,跟着 3D 动画看一遍、动手跟练一遍,学会还原第一颗魔方。Interactive 3D Rubik's Cube tutorial for beginners, built with Three.js.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

方寸 · Cube Tutor

面向零基础新手的三阶魔方互动课堂:跟着 3D 动画看一遍,再动手跟练一遍,一步步还原你的第一颗魔方。

在线体验:https://cube.xxicon.com/

纯前端单页应用(Vite + Three.js),无需账号或后端,桌面与手机均可使用。字体(Noto Sans SC、Outfit)随构建一起打包,不依赖 Google Fonts 等外部服务;中文字体按字符范围分片,浏览器只下载页面用到的部分。

快速开始

需要 Node.js 20.19+ 或 22.12+(推荐 Node.js 22)。

npm install
npm run dev      # 本地开发,打开终端输出的地址
npm test         # 运行转动模型与练习逻辑测试
npm run build    # 生产构建,输出到 dist/

浏览器回归测试首次运行需安装 Chromium:

npx playwright install chromium
npm run test:e2e

测试会自动启动独立的本地服务(4173 端口),覆盖桌面 Chromium 与手机尺寸、触摸输入模拟。失败时截图和跟踪文件保存在 test-results/。GitHub Actions 会在提交和 PR 时运行单元测试、构建及浏览器测试。

课程

章节 内容 核心公式
认识你的魔方 中心块、棱块、角块与转动符号 R U R′ U′
第一步 · 底层十字 小雏菊与侧面对齐 花瓣已对齐示例:F2 R2 B2 L2
第二步 · 底层角块 右手四步法 R U R′ U′
第三步 · 中层棱块 左右插入 U R U′ R′ U′ F′ U F
第四步 · 顶层黄色十字 点 → 拐角 → 一字 → 十字 F R U R′ U′ F′
第五步 · 顶面黄色翻正 小鱼公式(OLL) R U R′ U R U2 R′
第六步 · 顶层角块归位 车灯与角块交换 R′ F R′ B2 R F′ R′ B2 R2
第七步 · 顶层棱块归位 Ua / Ub 三棱换 R U′ R U R U R U′ R′ U′ R2 及逆公式

共有 17 个可切换的教学局面:基础认知、小雏菊与直接对齐、白色角块的三种朝向、左右中层插入、黄色十字的一字/拐角/点态、小鱼/调整朝向/逆小鱼、顶层角块归位,以及 Ua / Ub 三棱换。长公式带有阶段提示,例如点态演示会提示何时做 U2 调整拐角。

白十字演示中的半转顺序只适用于已经对齐的花瓣,不是任意局面的通用解法。

三种模式

  • 动画教学:播放、暂停、逐步前进或后退,点击公式中的任一步直接跳转,支持 0.5× / 1× / 1.5× 速度。
  • 跟我练习:按公式逐步检查你的转动。转错会提示正确的一步,不会改动魔方;半转(如 R2)连转两次同一面即可,顺时针、逆时针都算,转错方向可以反向撤销。
  • 自由练习:随意转动,或一键随机打乱 22 步,重置即恢复六面。

三种模式在魔方上方并排切换。

辅助功能:聚焦目标块(淡化无关色块)、转动指引箭头、自由视角与缩放。箭头、动作标签和文字跟随实际执行的动作,包括回退及半转的逆向输入;整组动作完成后隐藏指引。

界面提供浅色与深色两套主题,默认跟随系统,也可以用右上角的按钮切换。

课程卡片只保留当下需要的信息:目标与达成状态、局面切换、当前局面的说明和公式。本节讲解与技巧收在可展开的「本节讲解与技巧」里;键盘快捷键、转动符号和进度规则放在右上角的帮助里。拖动视角、滑动转层的操作提示只在第一次使用前显示。

操作方式

电脑 手机 / 平板
转动某一层 U D L R F B 键,或在魔方面上拖动 点按转动键,或在魔方面上滑动
逆时针 Shift + 字母,或打开「逆时针」开关 打开「逆时针」开关
换视角 拖动魔方(教学模式)或魔方外的空白处 同左,单指拖动
缩放 滚轮 双指捏合
播放 / 步进 Space,← / → 播放栏按钮

所有顺时针、逆时针都以正对该面的方向为准。在魔方上拖动转层只在「跟我练习」和「自由练习」中生效,中间层暂不支持拖动。

手机上进入练习模式后,转动键盘会停靠在屏幕底部,与魔方同屏显示;连续快速点按会依次执行(最多排队 3 步)。

手机和平板上,顶部的课程栏会一直停留在屏幕上方:左右箭头切换上一节、下一节,点中间的课程名可以打开完整的课程目录。手机上课程栏是唯一的页头(右侧是帮助按钮,主题切换在课程目录里),第一屏即可看到完整的魔方和播放控制。

半转(如 F2)的动画会分成两次 90° 转动播放,每次和单次转动一样长,指引标签会提示「第 1 次」「第 2 次」。

学习进度

每次动作后从 3D 魔方读取块的位置与贴纸朝向,检查当前目标以及已完成层是否保持正确。颜色朝对但块未归位、位置正确但贴纸翻转,都不会误判成功。基础认知以完成四个动作作为目标。

在「跟我练习」中完成本局面全部动作且达到真实目标后,自动保存该局面进度;本节所有局面均通过后标记章节完成。观看演示、访问章节或点击「下一节」不会新增通关记录。旧版本已有的手动完成记录会保留。

当前章节、已完成章节和局面进度保存在浏览器本地(localStorage),不上传任何数据。无痕模式或禁用存储时应用照常可用,只是不会记住进度。

项目结构

src/
  cube.js        转动模型:公式解析、位置旋转、逆转、拖动转层映射、跟练判定(纯函数)
  cube.test.js   node:test 单元测试
  cube-state.js  带贴纸朝向的纯状态模型与课程目标判定
  cube-state.test.js  17 个局面的目标、前置条件和形态断言
  lessons.js     课程数据:多局面、公式、阶段提示、目标类型
  main.js        页面结构、Three.js 场景、动画与交互
  style.css      设计令牌(浅色 / 深色)、样式与响应式布局
e2e/
  cube-tutor.spec.js  播放回退、跟练、主题、移动布局回归测试
playwright.config.js  桌面与手机浏览器测试配置

新增或修改课程局面可编辑 lessons.js 中的 cases。测试除检查公式可逆性外,还验证起始形态、先前层的保持情况,以及执行完整步骤后的实际目标。新增目标类型时同步修改 cube-state.js。

所有颜色都定义为 style.css 顶部的 CSS 变量,3D 场景中的魔方配色、机身与指引箭头也从这些变量读取;调整配色只需修改令牌。

说明

本应用演示选定局面下的公式与手法,不包含任意打乱局面的自动求解器。

许可

MIT

About

方寸 · Cube Tutor:零基础三阶魔方互动课堂,跟着 3D 动画看一遍、动手跟练一遍,学会还原第一颗魔方。Interactive 3D Rubik's Cube tutorial for beginners, built with Three.js.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages