This commit is contained in:
Feast
2026-10-13 20:40:09 +08:00
commit 3237386e00
7 changed files with 2772 additions and 0 deletions
+1973
View File
File diff suppressed because one or more lines are too long
+112
View File
@@ -0,0 +1,112 @@
# 打字练习 · 分关规划
循序渐进。卡通界面、打对/打错音效、打错不前进、Backspace 无效、键盘指法高亮。
通关仍按 **正确率 ≥ 门槛**(有的关另加速度)。未达标可重打,达标解锁下一关。
---
## 第 1 章 · 单个字母
把左手、右手每个基准键都练一遍。**每关只打 1 个字母,按 10 遍。** 屏幕上大字显示当前指法。
| 关卡 | 内容 | 指法 | 通关 |
|------|------|------|------|
| 1-1 | `A` × 10 | 左手小指 | ≥ 90% |
| 1-2 | `S` × 10 | 左手无名指 | ≥ 90% |
| 1-3 | `D` × 10 | 左手中指 | ≥ 90% |
| 1-4 | `F` × 10 | 左手食指 | ≥ 90% |
| 1-5 | `J` × 10 | 右手食指 | ≥ 90% |
| 1-6 | `K` × 10 | 右手中指 | ≥ 90% |
| 1-7 | `L` × 10 | 右手无名指 | ≥ 90% |
| 1-8 | `;` × 10 | 右手小指 | ≥ 90% |
---
## 第 2 章 · 慢慢连起来
先右手(j k l 和分号),再左手同理。全部乱序,不按固定顺序。
| 关卡 | 内容 | 题长 | 通关 |
|------|------|------|------|
| 2-1 | `j k` 乱序 | 20 | ≥ 92% |
| 2-2 | `j k l` 乱序 | 30 | ≥ 92% |
| 2-3 | `j k l ;` 乱序 | 40 | ≥ 92% |
| 2-4 | `a s` 乱序 | 20 | ≥ 92% |
| 2-5 | `a s d` 乱序 | 30 | ≥ 92% |
| 2-6 | `a s d f` 乱序 | 40 | ≥ 92% |
---
## 第 3 章 · 连右手
| 关卡 | 内容 | 题长 | 通关 |
|------|------|------|------|
| 3-1 | `j k` 随机 | 30 | ≥ 93% |
| 3-2 | `j k l` 随机 | 40 | ≥ 94% |
| 3-3 | `j k l ;` 随机 | 50 | ≥ 94% |
| 3-4 | `j k l ;` 随机加长 | 60 | ≥ 95% |
---
## 第 4 章 · 连左手
| 关卡 | 内容 | 题长 | 通关 |
|------|------|------|------|
| 4-1 | `a s` 随机 | 30 | ≥ 93% |
| 4-2 | `a s d` 随机 | 40 | ≥ 94% |
| 4-3 | `a s d f` 随机 | 50 | ≥ 94% |
| 4-4 | `a s d f` 随机加长 | 60 | ≥ 95% |
---
## 第 5 章 · 右手加左手
从已经练熟的右手出发,一次只加一个左手键:先 F,再 FD,再 FDS,最后 A。
| 关卡 | 内容 | 题长 | 通关 |
|------|------|------|------|
| 5-1 | 右手 `j k l ;` + `f` | 50 | ≥ 95% |
| 5-2 | 右手 + `f d` | 60 | ≥ 95% |
| 5-3 | 右手 + `f d s` | 70 | ≥ 96% |
| 5-4 | 右手 + `f d s a`(八键) | 80 | ≥ 96%,≥ 40 键/分 |
---
## 第 6 章 · 上排键
每练一个上排键,先单独打 10 遍,再立刻和已经学过的 `A S D F J K L ;` **乱序**合打一遍。不要固定顺序。
| 关卡 | 内容 | 通关 |
|------|------|------|
| 6-1 | `Q` × 10 | ≥ 90% |
| 6-2 | `Q` + ASDF JKL; 乱序 | ≥ 92% |
| 6-3 | `W` × 10 | ≥ 90% |
| 6-4 | `W` + ASDF JKL; 乱序 | ≥ 92% |
| 6-5 | `E` × 10 | ≥ 90% |
| 6-6 | `E` + ASDF JKL; 乱序 | ≥ 92% |
| 6-7 | `R` × 10 | ≥ 90% |
| 6-8 | `R` + ASDF JKL; 乱序 | ≥ 92% |
| 6-9 | `T` × 10 | ≥ 90% |
| 6-10 | `T` + ASDF JKL; 乱序 | ≥ 92% |
| 6-11 | `Y` × 10 | ≥ 90% |
| 6-12 | `Y` + ASDF JKL; 乱序 | ≥ 92% |
| 6-13 | `U` × 10 | ≥ 90% |
| 6-14 | `U` + ASDF JKL; 乱序 | ≥ 92% |
| 6-15 | `I` × 10 | ≥ 90% |
| 6-16 | `I` + ASDF JKL; 乱序 | ≥ 92% |
| 6-17 | `O` × 10 | ≥ 90% |
| 6-18 | `O` + ASDF JKL; 乱序 | ≥ 92% |
| 6-19 | `P` × 10 | ≥ 90% |
| 6-20 | `P` + ASDF JKL; 乱序 | ≥ 92% |
| 6-21 | 上排十键 + 基准键乱序 | ≥ 95% |
| 6-22 | 再加空格,全部乱序 | ≥ 96%,≥ 40 键/分 |
---
## 原则
1. 一次只加一点新东西。
2. 正确率门槛逐步提高。
3. 当前该打的键,始终显示对应手指。
4. 空格用大拇指,按词插入,不连续空格。
+145
View File
@@ -0,0 +1,145 @@
# 打字训练 · 分关难度规划
对标金山打字通的核心训练路径,采用「6 大模式 + 主线闯关」结构。
通关条件统一为:**正确率 ≥ 门槛** 且 **速度 ≥ 门槛**。未达标可重打,达标后解锁下一关。
---
## 一、整体结构
| 模式 | 作用 | 闯关方式 |
|------|------|----------|
| 指法练习 | 建立正确指位 | 按键位分区逐关解锁 |
| 按键练习 | 单键、组合键熟练度 | 按键区逐关 |
| 单词练习 | 英文单词连打 | 按词长 / 词频逐关 |
| 文章练习 | 连续文本、真实场景 | 按篇幅与复杂度逐关 |
| 拼音练习 | 中文拼音输入 | 按字 → 词 → 句 → 篇逐关 |
| 速度测试 | 综合测速(不闯关) | 1 / 3 / 5 分钟自由测 |
另设 **综合闯关(主线)**:把上述模式串成一条从入门到精通的关卡线。
自由练习:不走闯关,可自选模式。
---
## 二、主线闯关(8 章)
### 第 1 章 · 基准键入门(完全新手)
只打 `A S D F` 和 `J K L ;`,强制显示键盘指法图。
| 关卡 | 内容 | 时长 / 字数 | 通关条件 |
|------|------|-------------|----------|
| 1-1 | 左手基准键 ASDF | 约 40 键 | 正确率 ≥ 90% |
| 1-2 | 右手基准键 JKL; | 约 40 键 | 正确率 ≥ 90% |
| 1-3 | 左右交替(不含空格) | 约 60 键 | 正确率 ≥ 92% |
| 1-4 | 加入空格,形成「词」感 | 约 80 键 | 正确率 ≥ 92%,≥ 40 键/分 |
### 第 2 章 · 食指扩展
加入 `G H R U V N`(食指上下左右)。
| 关卡 | 内容 | 通关条件 |
|------|------|----------|
| 2-1 | G / H(基准键左右) | 正确率 ≥ 92% |
| 2-2 | R / U(上排食指) | 正确率 ≥ 92% |
| 2-3 | V / N(下排食指) | 正确率 ≥ 92% |
| 2-4 | 基准键 + 食指综合 | 正确率 ≥ 93%,≥ 60 键/分 |
### 第 3 章 · 中指、无名指、小指
按手指逐步加键,避免一次铺开整键盘。
| 关卡 | 内容 | 通关条件 |
|------|------|----------|
| 3-1 | 中指:E I C , | 正确率 ≥ 92% |
| 3-2 | 无名指:W O X . | 正确率 ≥ 92% |
| 3-3 | 小指:Q P Z / | 正确率 ≥ 90%(小指最难,门槛略低) |
| 3-4 | 全字母小写综合 | 正确率 ≥ 93%,≥ 80 键/分 |
### 第 4 章 · 数字与大写
| 关卡 | 内容 | 通关条件 |
|------|------|----------|
| 4-1 | 数字键 1–0 | 正确率 ≥ 92% |
| 4-2 | Shift + 字母(大写) | 正确率 ≥ 92% |
| 4-3 | 常用符号:`, . ; ' -` | 正确率 ≥ 90% |
| 4-4 | 字母 + 数字 + 基础符号 | 正确率 ≥ 93%,≥ 100 键/分 |
### 第 5 章 · 英文单词
从高频短词到较长单词,开始按 **WPM** 计速。
| 关卡 | 内容 | 通关条件 |
|------|------|----------|
| 5-1 | 3–4 字母高频词(the, and, for…) | 正确率 ≥ 95%,≥ 25 WPM |
| 5-2 | 5–6 字母常用词 | 正确率 ≥ 95%,≥ 30 WPM |
| 5-3 | 7+ 字母词 | 正确率 ≥ 94%,≥ 32 WPM |
| 5-4 | 混合词长,含大小写 | 正确率 ≥ 95%,≥ 35 WPM |
### 第 6 章 · 英文句子 / 短文
| 关卡 | 内容 | 通关条件 |
|------|------|----------|
| 6-1 | 短句(标点少) | 正确率 ≥ 96%,≥ 35 WPM |
| 6-2 | 段落(逗号、句号、问号) | 正确率 ≥ 96%,≥ 40 WPM |
| 6-3 | 较长文章(200–300 词) | 正确率 ≥ 97%,≥ 45 WPM |
| 6-4 | 编程常见片段(变量名、符号) | 正确率 ≥ 95%,≥ 40 WPM |
### 第 7 章 · 中文拼音
按「字 → 词 → 句 → 篇」递进。
| 关卡 | 内容 | 通关条件 |
|------|------|----------|
| 7-1 | 单字(高频 100 字) | 正确率 ≥ 95%,≥ 40 字/分 |
| 7-2 | 双字词 | 正确率 ≥ 95%,≥ 50 字/分 |
| 7-3 | 短句 | 正确率 ≥ 96%,≥ 55 字/分 |
| 7-4 | 短文(新闻 / 散文节选) | 正确率 ≥ 97%,≥ 60 字/分 |
### 第 8 章 · 综合挑战(Boss)
| 关卡 | 内容 | 通关条件 |
|------|------|----------|
| 8-1 | 中英混排 | 正确率 ≥ 97% |
| 8-2 | 限时 3 分钟冲刺 | 英文 ≥ 50 WPM 或 中文 ≥ 70 字/分 |
| 8-3 | 全键盘极限(符号 + 数字 + 大小写) | 正确率 ≥ 96%,≥ 45 WPM |
| 8-4 | 毕业考:随机抽一篇长文 | 正确率 ≥ 98%,速度达本章门槛 |
---
## 三、难度曲线原则
1. **一次只加一类新键**,避免突然全键盘。
2. **正确率优先于速度**:前 3 章几乎不卡速度,先养成指法。
3. **小指、数字、Shift 单独成关**,这是大多数人的瓶颈。
4. **中英文分轨**:第 1–6 章走英文指法,第 7 章走拼音,第 8 章合流。
5. **失败可重打,不扣进度**;每关记录历史最好成绩。
---
## 四、每关通用功能(对标金山打字通)
- 键盘热力图 / 指法示意图(当前应击键高亮)
- 实时速度、正确率、进度条
- 错键标红、正确标绿
- 关卡选择地图(未解锁置灰)
- 练习结束结算:速度、正确率、击键数、错键分布
- 自由练习:不走闯关,自选模式
---
## 五、关卡总览
| 章节 | 主题 | 关卡数 | 训练重点 |
|------|------|--------|----------|
| 第 1 章 | 基准键入门 | 4 | ASDF / JKL; + 空格 |
| 第 2 章 | 食指扩展 | 4 | G H R U V N |
| 第 3 章 | 其余手指 | 4 | 中指 / 无名指 / 小指 → 全字母 |
| 第 4 章 | 数字与大写 | 4 | 数字、Shift、常用符号 |
| 第 5 章 | 英文单词 | 4 | 词长递进,开始计 WPM |
| 第 6 章 | 英文句子 / 短文 | 4 | 标点、长文、代码片段 |
| 第 7 章 | 中文拼音 | 4 | 字 → 词 → 句 → 篇 |
| 第 8 章 | 综合挑战 | 4 | 混排、限时、极限、毕业考 |
**合计:8 章 × 4 关 = 32 关。**
+363
View File
@@ -0,0 +1,363 @@
# 第 1 关开发文档:1-1 左手基准键 ASDF
对应规划:`分关难度规划.md` → 第 1 章 · 基准键入门 → **1-1**。
本文只覆盖第 1 关的实现范围,作为后续关卡的模板。第 1 关同时要搭好练习页的通用骨架,后关复用,不重做。
---
## 1. 目标
让完全新手在不看键盘的情况下,用正确指法打出左手四个基准键:
| 键 | 手指 |
|----|------|
| `A` | 左手小指 |
| `S` | 左手无名指 |
| `D` | 左手中指 |
| `F` | 左手食指 |
本关**不考速度**,只考正确率和指法习惯。
通关条件:**正确率 ≥ 90%**(无速度门槛)。
---
## 2. 范围
### 2.1 本关要做
- 关卡选择页中,1-1 默认解锁,可进入
- 练习页:待打文本、实时对错着色、键盘指法图、实时数据条
- 约 40 个目标键,字符集仅 `a s d f`(小写)
- 击键判定、正确率、键/分、进度
- 结束结算:通过 / 未通过,可重打
- 通过后解锁 **1-2**
- 记录本关历史最好正确率(本地存储)
### 2.2 本关不做
- 右手键 `j k l ;`、空格、大写、数字、符号
- 速度门槛、限时模式
- 中文拼音、单词、文章
- 热力图统计(可先预留数据结构,本关不展示)
- 账号 / 云同步
---
## 3. 页面与信息架构
建议单页 HTML,用视图切换,不必多文件路由。
```
启动
└─ 关卡选择(第 1 章四关列表)
└─ 练习中(1-1)
└─ 结算弹层
├─ 再打一次 → 回到练习中(重新抽题)
└─ 返回选关 → 关卡选择
```
### 3.1 关卡选择页(本关相关)
| 元素 | 说明 |
|------|------|
| 章标题 | 第 1 章 · 基准键入门 |
| 关卡卡片 1-1 | 标题「左手基准键 ASDF」;状态:已解锁 / 已通关 |
| 关卡卡片 1-2~1-4 | 未通关 1-1 前置灰,不可点 |
| 最佳成绩 | 若打过 1-1,显示历史最高正确率 |
### 3.2 练习页布局(自上而下)
1. **顶栏**:关卡名「1-1 左手基准键」、返回选关
2. **数据条**:进度 `已打/总数`、正确率、速度(键/分)、用时
3. **文本区**:一行待打字符,当前目标键放大/下划线,已打正确为绿、错误为红
4. **键盘区**:QWERTY 示意图,强制显示;当前目标键高亮;四指提示
5. **提示文案**:「食指放在 F,小指放在 A,不要看键盘」
结算用遮罩弹层盖在练习页上,不跳新页。
---
## 4. 关卡配置
实现时用一份配置驱动,后关只改配置、少改逻辑。
```js
{
id: "1-1",
chapter: 1,
title: "左手基准键 ASDF",
charset: ["a", "s", "d", "f"],
length: 40,
allowSpace: false,
caseSensitive: false, // 本关只产生小写;Shift+A 视为错误
passAccuracy: 0.90,
passKpm: null, // 本关不卡速度
unlockNext: "1-2",
showKeyboard: true, // 强制显示,不可关
generate: "random-from-charset"
}
```
### 4.1 题目生成规则
- 从 `charset` 均匀随机抽取 `length` 个字符,连成一串,例如:`asdfafsdasfd...`
- **不要**出现空格、换行
- 建议约束:同一字符连续不超过 3 次(避免 `aaaa` 失去指法切换训练)
- 每次进入或「再打一次」都重新生成,不固定题库
### 4.2 允许输入
| 按键 | 行为 |
|------|------|
| `a` `s` `d` `f` | 有效击键,进入对错判定 |
| 其他字母 / 数字 / 符号 | 记为一次错误击键,不前进光标(卡住当前目标,直到打对) |
| `Shift` / `CapsLock` 产生的 `A` 等 | 视为错误(本关只认小写) |
| `Backspace` | **忽略**,本关不允许改错(对标金山打字通初级指法:打错就记错,必须打对当前键才继续) |
| `Enter` `Tab` `Esc` | 忽略,不计入对错 |
| `Alt` `Meta` `Ctrl` 组合 | 忽略 |
采用「必须打对才前进」:错了标红提示,光标停在当前目标,直到按下正确键。
正确率分母按「总击键次数(含错键)」计算,而不是按「已完成字符数」。见第 6 节。
---
## 5. 指法与键盘 UI
### 5.1 手指映射(本关只用左手)
| 键 | 手指 | 建议高亮色 |
|----|------|------------|
| A | 小指 | 橙 |
| S | 无名指 | 黄 |
| D | 中指 | 绿 |
| F | 食指 | 蓝 |
其余键绘制出来但呈禁用态(降低透明度),避免误导用户去打。
### 5.2 键盘交互
- 当前目标键:描边 + 放大/脉冲
- 按下正确键:该键闪绿后熄灭,切到下一目标
- 按下错误键:目标键闪红,可加轻微震动(CSS)
- 键盘图下方固定文案:
「左手:小指 A · 无名指 S · 中指 D · 食指 F」
### 5.3 文本区表现
假设目标串为 `asdf`,用户先打对 `a` `s`,第三个该打 `d` 却打了 `f`:
```
[a] [s] [d] [f]
绿 绿 当前(红闪) 灰
```
- 已正确:绿色
- 当前目标:深色底 + 下划线;若刚打错则红框
- 未打到:灰色
- 不把错误字符插入文本(文本始终是标准答案,只改颜色/状态)
---
## 6. 判定与统计
从**第一次有效击键**开始计时(`a/s/d/f` 或其他会记错的可见字符)。纯功能键不开始计时。
### 6.1 字段
| 字段 | 定义 |
|------|------|
| `targetLength` | 40 |
| `cursor` | 当前待打下标,0~40;到 40 结束 |
| `correctHits` | 打对次数(每前进一格 +1,最大 40) |
| `wrongHits` | 打错次数(每次错误按键 +1,可大于 40) |
| `totalHits` | `correctHits + wrongHits` |
| `elapsedMs` | 从首次有效击键到结束(或当前)的毫秒 |
### 6.2 公式
```
正确率 accuracy = correctHits / totalHits
进度 percent = cursor / targetLength
速度 kpm = correctHits / (elapsedMs / 60000)
用时 time = elapsedMs
```
展示:
- 正确率:百分数,保留 1 位小数,如 `92.5%`
- 速度:整数「键/分」,未开始时显示 `--`
- 进度:`12 / 40` + 进度条
- 用时:`mm:ss`
### 6.3 通关判定(结束时一次性算)
```
passed = accuracy >= 0.90
```
本关 `passKpm` 为空,不判断速度。
`totalHits` 为 0 时(理论上不会结束)正确率按 0。
### 6.4 结束时机
`cursor === targetLength` 立即结束,弹出结算。不再接收击键。
---
## 7. 结算
### 7.1 展示
| 项 | 说明 |
|----|------|
| 结果标题 | 「通关」或「未通关」 |
| 正确率 | 实际值,并标明门槛「≥ 90%」 |
| 速度 | 键/分(仅展示,不影响通关) |
| 用时 | mm:ss |
| 击键 | 正确 / 错误 / 总计 |
| 操作 | 「再打一次」「返回选关」 |
通关时额外一行:「已解锁 1-2 右手基准键」。
### 7.2 进度写入
使用 `localStorage`,键名建议:`typing-progress-v1`。
```js
{
unlocked: ["1-1", "1-2"], // 通关 1-1 后写入 1-2
records: {
"1-1": {
bestAccuracy: 0.95,
bestKpm: 62,
passed: true,
lastPlayedAt: "2026-08-13T15:30:00+08:00"
}
}
}
```
规则:
- 初始 `unlocked` 含 `1-1`
- 通关才把 `unlockNext` 加入 `unlocked`
- `bestAccuracy` / `bestKpm` 只升不降
- 未通关也写入 `lastPlayedAt` 和当前成绩,但不把 `passed` 从 true 改回 false
- 重打失败不锁回 1-2
---
## 8. 状态机
```
idle 进入练习页,题目已生成,等待第一击
playing 已开始计时,接收击键
finished 40 键打完,弹出结算,忽略击键
```
转移:
- `idle` → `playing`:第一次有效/错误可见击键
- `playing` → `finished`:`cursor` 达到 40
- `finished` → `idle`:点「再打一次」(新题、清零统计)
- 任意 → 选关:点返回(练习中途返回不保存通关,可选择是否写入 lastPlayedAt;本关规定:**中途退出不记成绩**)
---
## 9. 技术约定
| 项 | 约定 |
|----|------|
| 形态 | 单文件或「HTML + CSS + JS」,先保证双击即可打开 |
| 输入 | `window` 上 `keydown`;用 `event.key` 判定字符 |
| 防干扰 | 练习中 `preventDefault` 掉会滚动/选中的键;不要用隐藏 `<input>` 抢焦点(避免 IME) |
| 本关 IME | 不需要中文输入;若系统处于中文输入法,提示「请切换到英文」 |
| 样式 | 深色背景、大字号文本区,适合全屏练习 |
| 兼容 | 现代桌面 Chrome / Edge / Safari;本关按物理键盘设计,不做触屏键盘 |
### 9.1 建议模块划分(同一文件内亦可)
1. `config`:关卡配置
2. `progress`:读写 localStorage
3. `generator`:按 charset 生成题目
4. `engine`:状态机、击键、统计
5. `keyboardView`:键盘高亮
6. `textView`:文本着色
7. `hud`:数据条
8. `resultModal`:结算
9. `stageSelect`:选关
第 1 关实现时就把 1~8 做成可复用,选关先只列第 1 章四关。
---
## 10. 文案
| 位置 | 文案 |
|------|------|
| 选关卡片标题 | 1-1 左手基准键 |
| 选关卡片副标 | 只打 A S D F,正确率 90% 即可通关 |
| 练习顶栏 | 第 1 关 · 左手基准键 ASDF |
| 指法提示 | 食指放 F,小指放 A。请看着屏幕,不要看键盘。 |
| 通关 | 通关!基准键已经记住了。 |
| 未通关 | 再练一次。先求正确,再求速度。 |
| 输入法提示 | 请切换到英文输入法后再开始。 |
---
## 11. 验收标准
- [ ] 打开页面即可进入 1-1,无需登录
- [ ] 题目长度为 40,仅含 `a s d f`,无空格
- [ ] 同一字符连续不超过 3 次
- [ ] 打对前进一格,打错不前进并记一次错误
- [ ] Backspace 不影响进度与统计
- [ ] 正确率按 `正确 / (正确+错误)` 计算,≥ 90% 判定通关
- [ ] 无速度门槛;结算仍显示键/分
- [ ] 键盘图始终显示,当前键高亮,非 ASDF 键呈禁用态
- [ ] 通关后 1-2 可点;未通关 1-2 仍锁
- [ ] 刷新页面后解锁状态仍在
- [ ] 中途返回选关不记本局成绩
- [ ] 「再打一次」重新抽题并清零
---
## 12. 测试用例
| 编号 | 操作 | 期望 |
|------|------|------|
| T1 | 40 次全对 | 正确率 100%,通关,解锁 1-2 |
| T2 | 打对 36、打错 4(错键后补对) | 总击键 44,正确率 ≈ 81.8%,未通关 |
| T3 | 打对 36、打错 4 之外再算:正确 36 / 总击键 40 | 注意:因打错不前进,40 个正确键必须打满;未通关局 `correctHits` 仍为 40,`wrongHits` > 0。例如错 5 次则正确率 = 40/45 ≈ 88.9%,未通关 |
| T4 | 正确率刚好 90%(40 对 + 约 4.44 错不可整除) | 用 40 对 + 5 错 = 88.9% 未过;40 对 + 4 错 = 90.9% 通过。门槛按 `>= 0.90` |
| T5 | 练习中按 Backspace、方向键 | 无效果 |
| T6 | 打 `g` 或其他非 charset 键 | 错误 +1,光标不动 |
| T7 | 通关后刷新 | 1-2 仍解锁 |
| T8 | 通关后再打失败 | 1-2 保持解锁 |
| T9 | 第一键前等待 | 速度显示 `--`,用时 00:00 |
| T10 | 中途点返回 | 无结算、不改 best、不解锁 |
**正确率要点(务必实现一致):**
本关结束时 `correctHits` 恒为 40。通关只取决于错了多少次:
```
accuracy = 40 / (40 + wrongHits)
90% 通关 ⇒ 40 / (40 + wrongHits) >= 0.90 ⇒ wrongHits <= 4
```
即:全程最多允许打错 4 次。
---
## 13. 后续关卡复用说明
第 1 关落地后,1-2 只需改配置:
| 项 | 1-1 | 1-2(预告,不在本文实现) |
|----|-----|---------------------------|
| charset | a s d f | j k l ; |
| 手指 | 左手四指 | 右手四指 |
| 通关 | 正确率 ≥ 90% | 同 1-1 |
| 键盘禁用态 | 非 ASDF | 非 JKL; |
不要为 1-2 另写一套引擎。
+89
View File
@@ -0,0 +1,89 @@
# 第 2 关开发文档:1-2 右手基准键 JKL;
对应规划:`分关难度规划.md` → 第 1 章 · 基准键入门 → **1-2**。
完全复用第 1 关引擎、页面、判定、音效与进度存储。**只改键位与文案。**
细则见 `开发文档-第1关.md`,本文只写差异。
---
## 1. 与 1-1 的差异
| 项 | 1-1 | 1-2 |
|----|-----|-----|
| 字符集 | `a s d f` | `j k l ;` |
| 手 | 左手 | 右手 |
| 键盘启用键 | ASDF | JKL; |
| 通关后解锁 | 1-2 | 1-3 |
其余全部相同:40 键、连续同一字符不超过 3 次、打错不前进、Backspace 无效、正确率 ≥ 90%(最多错 4 次)、不卡速度、强制显示键盘、卡通配色、打对/打错音效、`localStorage` 键名 `typing-progress-v1`。
---
## 2. 指法映射
与左手镜像,同色表示同一根手指类型:
| 键 | 手指 | 颜色(与 1-1 对应) |
|----|------|---------------------|
| `J` | 右手食指 | 蓝(同 F) |
| `K` | 右手中指 | 绿(同 D) |
| `L` | 右手无名指 | 黄(同 S) |
| `;` | 右手小指 | 橙(同 A) |
---
## 3. 关卡配置
```js
{
id: "1-2",
chapter: 1,
title: "右手基准键 JKL;",
charset: ["j", "k", "l", ";"],
length: 40,
allowSpace: false,
caseSensitive: true,
passAccuracy: 0.90,
passKpm: null,
unlockNext: "1-3",
showKeyboard: true,
generate: "random-from-charset",
playable: true
}
```
`;` 使用 `event.key === ";"`。Shift 产生的 `:` 视为错误。
---
## 4. 文案
| 位置 | 文案 |
|------|------|
| 选关卡片标题 | 1-2 右手基准键 |
| 选关卡片副标 | 只打 J K L ;,正确率 90% 即可通关 |
| 练习顶栏 | 第 2 关 · 右手基准键 JKL; |
| 指法提示 | 食指放 J,小指放分号。请看着屏幕,不要看键盘。 |
| 键盘下方 | 右手:食指 J · 中指 K · 无名指 L · 小指 ; |
| 通关 | 通关!右手基准键已经记住了。 |
| 未通关 | 再练一次。先求正确,再求速度。 |
| 解锁提示 | 已解锁 1-3 左右交替 |
---
## 5. 解锁
- 通关 1-1 后 1-2 可进入(已有逻辑)
- 通关 1-2 后写入 `unlocked: 1-3`;1-3 本关仍不实现玩法,仅解锁外观
- 重打失败不锁回
---
## 6. 验收(相对 1-1 增量)
- [ ] 题目仅含 `j k l ;`,长度 40
- [ ] 键盘仅 JKL; 高亮可用,其余禁用
- [ ] 通关 1-1 后可点进 1-2
- [ ] 正确率 ≥ 90% 通关并解锁 1-3
- [ ] 判定、音效、结算与 1-1 一致
+85
View File
@@ -0,0 +1,85 @@
# 第 3 关开发文档:1-3 左右交替
对应规划:`分关难度规划.md` → 第 1 章 · 基准键入门 → **1-3**。
完全复用第 1、2 关引擎、页面、判定、音效与进度存储。本文只写差异。
---
## 1. 与前两关的差异
| 项 | 1-1 / 1-2 | 1-3 |
|----|-----------|-----|
| 字符集 | 单手 4 键 | `a s d f j k l ;` |
| 出题 | 字符集内随机 | **左右手严格交替**,不含空格 |
| 题长 | 40 | 60 |
| 通关正确率 | ≥ 90% | ≥ 92%(最多错 5 次) |
| 速度门槛 | 无 | 无 |
| 通关后解锁 | 下一关 | 1-4 |
判定、打错不前进、Backspace 无效、键盘图、卡通配色、音效均不变。
---
## 2. 出题规则
- 左手池:`a s d f`;右手池:`j k l ;`
- 序列为「左、右、左、右…」或「右、左、右、左…」(开局随机选一侧)
- 不要空格
- 避免隔一个键重复同一字符(减少 `ajaj`)
---
## 3. 关卡配置
```js
{
id: "1-3",
chapter: 1,
title: "左右交替",
charset: ["a", "s", "d", "f", "j", "k", "l", ";"],
length: 60,
allowSpace: false,
caseSensitive: true,
passAccuracy: 0.92,
passKpm: null,
unlockNext: "1-4",
showKeyboard: true,
generate: "alternate-hands",
playable: true
}
```
正确率公式仍为 `60 / (60 + wrongHits) >= 0.92` ⇒ `wrongHits <= 5`。
---
## 4. 文案
| 位置 | 文案 |
|------|------|
| 选关卡片标题 | 1-3 左右交替 |
| 选关卡片副标 | 基准键左右手交替,正确率 92% 即可通关 |
| 练习顶栏 | 第 3 关 · 左右交替 |
| 指法提示 | 双手放在 ASDF 和 JKL; 上,左右交替打,不要看键盘。 |
| 键盘下方 | 左手 ASDF · 右手 JKL; |
| 通关 | 通关!双手基准键可以配合了。 |
| 未通关 | 再练一次。先求正确,再求速度。 |
| 解锁提示 | 已解锁 1-4 加入空格 |
---
## 5. 解锁
- 通关 1-2 后可进入 1-3
- 通关 1-3 后解锁 1-4(1-4 本关仍不实现玩法)
- 重打失败不锁回
---
## 6. 验收
- [ ] 题目长度 60,仅含 `a s d f j k l ;`,无空格
- [ ] 相邻两键分属左右手
- [ ] 键盘八个基准键全部启用
- [ ] 正确率 ≥ 92% 通关并解锁 1-4
- [ ] 结算门槛文案显示 ≥ 92%
+5
View File
@@ -0,0 +1,5 @@
# 打字练习
根目录 `index.html` 就是练习页,不再分版本。
当前内容:第 1–5 章练基准键(ASDF / JKL;),第 6 章练上排键 QWERTYUIOP,先单独打,再加空格,再连上基准键。