高考真题刷题闯关 · 模式设计速查手册
题库底座:34 专题 / 2055 题(2017–2026)· 配套可交互原型已实现全套规则 · v1.0
三条底线(防游戏化反噬学习):① 审题区零干扰——题干/选项区不做任何动效,动画只出现在提交后的反馈层且 ≤0.6s 自动收起;② 不惩罚——答错也给保底经验与金币,不设体力、不扣星、断签不清零;③ 不诱导沉迷——连续 30 分钟弹休息提醒。
① 核心流程状态机
单题内部循环
QUESTION_SHOWN(题干渲染,开始计时)
├─ 选择题:点选选项 → ANSWERING(高亮,可改选)
├─ 填空题:输入 + 数学符号面板 → ANSWERING
└─ 解答题:勾选关键步骤 + 自评(对 / 半对 / 错) → ANSWERING
▼ 提交(⚠️ 默认「点选即提交」,设置可切换为双段确认)
SUBMITTED(0.3s:按钮锁定 + 缩放反馈)
▼ 判题引擎
JUDGED
├─ 正确 → 绿横幅 + 上扬音 + Combo+1 + 掉落 EXP/金币(≤0.6s)
└─ 错误 → 红横幅 + 低沉音 + Combo 归零 + 高亮正确项
▼ 「看解析」展开(计时暂停)· 「加入错题本」· 「下一题」
② 开局设定
三维选关
| 维度 | 选项 |
| 范围 | 34 专题 / 考点 / 老师预设包(可多选) |
| 难度 | 简单 ★-★★ · 中等 ★★★ · 困难 ★★★★+ · 混合(默认,3:5:2 配比) |
| 题量 | 热身 5 · 标准 10(默认) · 加练 20 · 自定义 1–50 |
五种开局模式
| 模式 | 规则 |
| ⚡ 快速闯关 | 按筛选随机抽,无计时,可续答 |
| 🎯 专题攻坚 | 锁定 1 专题,星级递增;通关(≥80%)解锁下个专题 |
| 📕 错题重刷 | 只抽到期错题,不受冷却限制,连对 3 次毕业 |
| ⏱ 限时模拟 | 按高考结构组卷,倒计时,交卷后统一判定 |
| 🌟 每日一关 | 全库随机 10 题,难度自适应 ±0.5 星,金币 ×2 |
抽题算法(防短期重复)
候选池 = 满足筛选 且 status=online 且 clean_level ≤ 1
排除三重:① 近 7 天已作答(冷却池)
② 本轮已抽
③ 当日已抽(跨轮次防重复)
不足时依次放宽:解除冷却 → 解除当日去重 → 难度 ±1 星 → 补「最久未做」
(每次放宽在页面顶部提示「已补充 N 道同类题」)
加权随机(非纯随机,避免连续同难度):
weight = 0.5×难度匹配度 + 0.3×未做时长 + 0.2×薄弱专题加成
其中 薄弱专题加成 = 该专题正确率 < 60% 则 +0.3
⚠️ 默认假设:冷却期 7 天(可改 30 天);错题重刷不受冷却限制;抽题不做知识点去重(真题本身混合);每日去重当日 0 点清空。
③ 答题交互与判题规则
| 题型 | 交互 | 判定 | 计分 |
| 单选题 | 4 张选项卡片点选 | 精确匹配 | 对=1,错=0 |
| 多选题 | 多选卡片,可反选 | 集合相等 | 全对=1,漏选=0.5,含错选=0 |
| 填空题 | 输入框 + 数学符号面板,多空多框 | 归一化等价判定 | 按空给分 对空数/总空数 |
| 解答题 | 勾选关键步骤 + 自评(对/半对/错) | 学生自评 | 按小问加权 |
填空题归一化流水线(判题核心)
1. 去首尾空白;全角转半角 2. 删除空格、$,统一 ×·∗ → *
3. 删除千分位逗号 4. \frac{a}{b} ≡ a/b ≡ a÷b
5. √[n]{a} ≡ a^(1/n) 6. 大小写统一小写
7. 集合/区间元素排序后比较({2,1} ≡ {1,2})
8. 双通道比较,满足任一即判对:
通道A 字符串等价(归一化后) 通道B 数值近似(相对误差 < 1e-6)
9. 多空按顺序比较;order_insensitive=1 时允许乱序
10. 备选答案 answer_alt 数组,任一命中即判对
已实测通过的等价判定:1/2 ≡ 0.5 · 36π ≡ 36pi ≡ 36*π · √12 ≡ 2√3 · 全角1/2 ≡ 1/2 · {1,2} ≡ {2,1} · -1/2 ≡ -0.5
判错后展示顺序(固定)
① 对错横幅(0.6s,含音效)→ ② 你的答案 vs 正确答案(并排)→ ③ 解析抽屉(默认收起,展开时暂停计时)→ ④ 考点标签 +「再来一道同类题」
④ 奖励机制(数值)
经验值 EXP
基础 EXP = 10 × 难度系数 × 题型系数
难度系数 ★0.8 ★★1.0 ★★★1.3 ★★★★1.7 ★★★★★2.2
题型系数 选择 1.0 · 填空 1.2 · 解答 1.5
连击加成 ×1.0 / 1.1 / 1.2 / 1.3 / 1.5(5-7) / 1.8(8-11) / 2.0(12+封顶)
首答加成 首次作答且答对 ×1.5 订正加成 错题重刷答对 ×0.5
答错 EXP = 基础 × 0.3(保底 3 分,不因难度归零)
示例:3 星填空题 · 连击 5 · 首答答对 → 10 × 1.3 × 1.2 × 1.5 × 1.5 = 35 EXP
等级表(升到 Lv(n+1) 所需 = 100 + 50(n-1) + 5(n-1)²)
| 升级 | 本级所需 | 累计 EXP | 参考轮次* |
升级 | 本级所需 | 累计 EXP | 参考轮次* |
| Lv1→2 | 100 | 100 | <1 轮 | Lv14→15 | 1,595 | 10,045 | 39 轮 |
| Lv2→3 | 155 | 255 | 1 轮 | Lv19→20 | 2,620 | 20,995 | 81 轮 |
| Lv3→4 | 220 | 475 | 2 轮 | Lv24→25 | 3,895 | 37,820 | 145 轮 |
| Lv5→6 | 380 | 1,150 | 4 轮 | Lv29→30 满级 | 5,420 | 61,770 | 238 轮 |
| Lv9→10 | 820 | 3,720 | 14 轮 | * 每轮 10 题 / 平均 3 星 / 正确率 70% / 带连击 ≈ 260 EXP |
按每天 1 轮 + 错题重刷,一学期(120 天)约到 Lv22–26。嫌慢可把系数整体 ×0.7(满级累计降至约 43,000)。
金币 Coin
金币 = 5 × 难度系数 × 题型系数 × 连击加成(不乘首答 1.5)
答错 = 2 金币(参与奖) 每日首胜(正确率 ≥60%)= +30 金币
| 道具 | 价格 | 效果 |
| 提示卡 | 15 | 排除一个错误选项,本题 EXP ×0.6 |
| 解析提前解锁 | 20 | 结算前即可看解析 |
| 连击保护卡 | 30 | 抵消一次 Combo 归零 |
| 补签卡 | 50 | 补一次断签 |
| 错题加速券 | 40 | 重置一道错题的复习间隔 |
| 头像框 / 皮肤 | 80–300 | 纯外观 |
连击 Combo 里程碑
| 连击 | 称号 | 即时奖励 | 特效强度 |
| 3 | 手感来了 | +5 金币 | 轻微(文字飘出) |
| 5 | 状态火热 | +15 金币 | 中等(火焰边框 0.5s) |
| 8 | 势不可挡 | +30 金币 | 中等(数字放大+光晕) |
| 12 | 无人能挡 | +60 金币 + 保护卡×1 | 强(边缘流光 0.8s) |
| 20 | 二十连斩 | +150 金币 + 勋章 | 极强(全屏粒子 1.0s,可降级) |
⚠️ 连击不跨轮次(每轮重置),避免攒连击变成负担。
段位(赛季制,与等级并行)
赛季积分 = Σ(答对题数 × 难度系数 × 10) + 满分轮奖励(每轮 +200) ⚠️ 赛季 4 周重置
| 段位 | 积分 | 段位 | 积分 | 段位 | 积分 |
| 🟤 青铜 | 0–499 | 🔵 铂金 | 3,000–4,999 | 🟣 星耀 | 8,000–11,999 |
| ⚪ 白银 | 500–1,499 | 💠 钻石 | 5,000–7,999 | 👑 王者 | 12,000+ |
| 🟡 黄金 | 1,500–2,999 | |
签到 · 每日任务 · 勋章
| 连续天数 | 奖励 |
| 1 / 2 / 3 天 | 5 / 8 / 12 金币 |
| 4 / 5 / 6 天 | 18 / 25 / 35 金币 |
| 第 7 天 | 50 金币 + 宝箱(10–100 金币 / 保护卡 / 提示卡×3) |
7 天循环;断签不清历史,只重置连续天数;50 金币补签(每周 1 次)。签到当天完成每日一关,金币 ×2。
| 每日任务 | 奖励 |
| 完成 1 轮(≥10 题) | +20 EXP +10 金币 |
| 订正 5 道错题 | +30 EXP +15 金币 |
| 本日正确率 ≥70% | +10 金币 |
| 全部完成 | 宝箱 +50 EXP +30 金币 |
| 勋章(首期 12 枚) | 条件 | 稀有度 |
| 🌱 初露锋芒 | 完成第 1 轮 | 普通 |
| 💯 百题斩 | 累计 100 题 | 普通 |
| 🔥 千题斩 | 累计 1000 题 | 史诗 |
| 🎯 全对一轮 | 单轮 10 题全对 | 稀有 |
| ⚔️ 二十连斩 | 单轮连击 20 | 史诗 |
| 🏅 专题征服者 | 某专题 30 题且 ≥85% | 稀有 |
| 📅 签到 7 天 | 连续签到 7 天 | 普通 |
| 🗓️ 签到 30 天 | 连续签到 30 天 | 稀有 |
| ✨ 错题终结者 | 错题本清空 | 史诗 |
| 👑 压轴克星 | 答对 50 道 4 星+ | 史诗 |
| 🌅 早起鸟 | 6–8 点完成一轮 | 普通 |
| 🏮 十年贯通 | 10 个年份均有作答 | 传说 |
稀有度:普通=灰 稀有=蓝 史诗=紫 传说=金。只有史诗及以上才触发全屏动画,其余仅右下角 toast。
⑤ 留存与复盘
错题本间隔重刷(SM-2 简化版)
新增错题:interval = 1 天,wrong_count = 1,right_streak = 0
重做答对 → right_streak +1,interval 沿序列前进:
1 → 2 → 4 → 7 → 15 → 30 → 60(封顶)
right_streak 达到 3 → 错题「毕业」,移出活跃本(保留归档)
重做答错 → right_streak 归零,wrong_count +1,interval 重置为 1 天
wrong_count ≥ 3 → 标记「顽固错题」
顽固错题:不受间隔限制,每天必出现在「今日必刷」,直到连续答对 2 次解除
到期判定:next_review_at = last_review_at + interval_days;首页红点显示待复习数
⚠️ 默认假设:毕业 = 连续答对 3 次;每日错题重刷上限 20 题;错题重刷不受冷却期限制。
正确率看板维度
- 总体 大数字 + 近 30 天折线
- 专题雷达 34 专题(默认只显示作答 ≥5 题的)
- 题型 选择/填空/解答 三柱
- 难度 ★1–★5 五段柱状
- 年份 2017–2026 折线(发现"某年特别难")
- 薄弱提醒 正确率 <60% 的专题首页置顶,点击直接生成 10 题专项
长期目标
- 等级进度条 首页常驻 Lv + EXP/本级所需
- 专题征服进度 ≥30 题且 ≥85% 点亮徽章
- 段位 赛季 4 周,保级/晋级提示
- 勋章墙 已解锁彩色,未解锁灰色剪影(保留悬念)
- 十年年鉴 每年份答题数,集齐 10 年得勋章
- 排行榜 班级榜(本周 EXP)+ 全校榜(赛季积分),⚠️ 默认关闭
⑥ 页面结构(9 个页面)
P1 营地
等级条 · 签到 · 今日任务 · 4 大入口 · 薄弱提醒 · 待复习红点 · 最近战绩
P2 选关
范围 chips / 难度三档 / 题量四档,右侧实时显示可用题量
P3 答题
进度条 + 连击 + 计时;题干纯白卡片;选项卡/输入框;提交
P4 判定层
覆盖题干下方的横幅(非全屏):对错 + 正确答案 + 看解析
P5 结算
星级动画 + 正确率 + EXP/金币滚动 + 勋章 + 错题清单
P7 错题本
待复习 / 顽固 / 全部 / 已毕业,批量重刷
P8 成长
正确率看板 + 难度分布 + 勋章墙 + 设置
P9 排行榜
班级/全校 Tab,昵称脱敏,我的排名悬浮
关键交互
| 元素 | 规则 |
| 题干区 | 纯白卡片、圆角 12px、字号 17px、行高 1.8、零动效;公式 KaTeX 渲染字号 +1 |
| 选项卡片 | 高 56px、间距 10px;选中用 2px 主色边框 + 淡蓝底 #EEF2FF,不用阴影跳动 |
| 提交按钮 | 未答时置灰不可点;已答主色实心 |
| 计时 | ⚠️ 单题默认不计时(可选 90s/题);整轮计时仅用于统计 |
| 退出 | 二次确认「已答 N 题,退出后本轮作废?」→ 保存进度 / 退出 |
| 深浅色 | ⚠️ 默认浅色,提供深色(晚自习);深色下题干区为 #1E1E1E 而非纯黑 |
⑦ 数据结构
题库表 questions(已产出 2055 题,见 questions.json / .csv)
| 字段 | 类型 | 说明 | 示例 |
| qid | string | 唯一 ID:专题-考点-题序 | 08-01-003 |
| topic / topic_name | string | 专题号 / 专题名 | 08 / 专题08 数列小题综合 |
| knowledge / knowledge_name | string | 考点编号+名 | 考点01 数列的概念 |
| year | int | 年份 | 2025 |
| paper / paper_series | string | 卷种 / 卷系 | 全国一卷 / 新高考卷 |
| qtype | string | 选择题 / 填空题 / 解答题 | 选择题 |
| multi | bool | 是否多选 | false |
| star | int | 难度星级 1–5 | 3 |
| difficulty | float | 难度分 0–1(连续值,用于加权抽题) | 0.3732 |
| stem / stem_latex | string | 题干原文 / LaTeX 版(🔧 待清洗) | — |
| options | object | {A,B,C,D} | {A:"{0,1}",...} |
| answer / answer_norm | string | 原始答案 / 规范化答案(判题用) | C |
| answer_alt | array | 等价答案列表(填空题) | ["1/2","0.5"] |
| blank_count / subq_count | int | 填空空位数 / 解答题小问数 | 2 |
| analysis / solution / tip | string | 【分析】/【详解】/【点睛】 | — |
| tags | array | 方法标签 | ["裂项","累乘"] |
| order_insensitive | bool | 多空是否乱序匹配 | false |
| clean_level | int | 0 可直接用 / 1 轻度 / 2 需人工 | 0 |
| status / version / source_file | — | online/draft/disabled,修订版本,来源 | — |
当前题库体检:2055 题 / 34 专题 / 2017–2026 年;选择 837 · 填空 509 · 解答 709;多选 64 道;难度分覆盖 100%;答案覆盖 2051;837 道选择题全部有 options 结构。
答题记录 attempts
| 字段 | 说明 | 字段 | 说明 |
| attempt_id | UUID | score | 0–1(漏选 0.5) |
| user_id / qid / session_id | 关联 | time_used_ms | 本题耗时 |
| mode | quick/topic/wrong/timed/daily | used_hint / used_protect | 是否用提示/保护卡 |
| seq_in_round | 本轮第几题 | combo_at_time | 作答时连击 |
| user_answer / _norm | 作答原文 / 归一化 | exp_gain / coin_gain | 获得数值 |
| correct | 是否判对 | submitted_at / is_first_attempt | 时间 / 是否首答 |
| review_source | new / wrongbook / retry |
轮次 sessions
session_id · user_id · mode · filters{topics,knowledge,stars,qtypes,count} · started_at · finished_at · total · correct_cnt · accuracy · max_combo · exp_gain · coin_gain · duration_ms · stars · passed · state(battling/settled/paused/aborted) · progress
星级规则:正确率 ≥90% → 3 星;≥70% → 2 星;≥60% → 1 星;<60% → 0 星(仍给奖励)
用户 user_profile 与错题本 wrongbook
user_id · nickname · avatar · class_code · exp · exp_total · level · coins · total_answered · total_correct · accuracy · max_combo_ever · streak_days · last_checkin · season_score · rank_tier · settings{sound,reduceMotion,theme,clickToSubmit,rankVisible} · created_at
qid · user_id · first_wrong_at · last_wrong_at · last_review_at · wrong_count · right_streak · interval_days · next_review_at · stubborn · graduated · marked · wrong_answers[]
其他表
medals(code/name/rarity/category/condition_json/icon)· user_medals(got_at/seen)· checkin(date/day_index/reward/is_makeup)· daily_tasks(progress/target/done/claimed)· shop_items / inventory · leaderboard(视图:scope/nickname_masked/level/week_exp/season_score/rank)
| 阶段 | 存储方案 |
| MVP 单机 | localStorage(单用户约 2 万条 ≈ 5MB 够用),题库 JSON 打包进前端 |
| V1 班级 | IndexedDB + 后端 API,题库走 CDN 静态 JSON |
| V2 多班级 | 题目表 + 记录表分库,题库建 ES 索引(支持题干搜索) |
⑧ 视觉与音效
配色
| 用途 | 色值 |
| 主色(专注/按钮) | #4F6EF7 靛蓝 |
| 辅助(奖励/金币) | #FF7A45 珊瑚橙 |
| 成功 / 错误 / 警告 | #22C55E / #EF4444 / #F59E0B |
| 背景 / 卡片 / 正文 | #F7F8FC / #FFFFFF / #1F2937 |
圆角:卡片 12 / 按钮 10 / 标签 6;正文 15px、题干 17px、标题 20px;动效默认 cubic-bezier(.4,0,.2,1)。
反馈清单
| 事件 | 视觉 / 音效 | 时长 |
| 判对 | 绿横幅滑入 + 单音 C5→E5 | 0.4s |
| 判错 | 红横幅 + 正确项闪 2 次 + 低音 G3 | 0.5s |
| 连击 +1 | Combo 弹跳 + "ding"(音高递增) | 0.2s |
| EXP/金币 | 数字滚动 + 金币飞入钱包 | 0.8s |
| 升级 | 徽章放大 + 光环 + 上行琶音 | 1.2s(唯一 >1s) |
| 得勋章 | 卡片 3D 翻转 + 金属敲击 | 1.0s |
⚠️ 首次进入默认静音,顶部常驻喇叭开关;支持系统 prefers-reduced-motion 自动减弱动效。
「年轻活泼但不干扰审题」的落地原则:活泼感只放在按钮、等级徽章、连击数字、奖励弹窗、勋章墙;题干、选项、解析一律克制(白底黑字无装饰)。
⑨ 默认假设清单(请逐条确认)
- 1 学科范围:仅数学(已有 2055 题),后续再接其他学科
- 2 终端:手机 H5 优先,兼容 PC 浏览器
- 3 账号:昵称 + 班级码,本地存储,无需注册
- 4 体力系统:不设
- 5 选择题提交方式:点选即提交(可切换双段确认)
- 6 音效:默认静音
- 7 排行榜:默认关闭,学生自主开启
- 8 解答题判定:学生自评(勾步骤 + 对/半对/错)
- 9 多选题漏选:给 0.5 分
- 10 冷却期(防重复):7 天
- 11 满级:Lv30(累计 61,770 EXP)
- 12 赛季长度:4 周
- 13 错题毕业:连续答对 3 次
- 14 每日错题上限:20 题
- 15 单题计时:默认不计时(可开 90s/题)
- 16 题量默认:10 题/轮
- 17 主题:默认浅色,提供深色
- 18 「夜猫子」勋章:保留但降低权重(也可删除,避免鼓励熬夜)
- 19 教师端:MVP 不做,V2 加(布置作业 / 班级看板)
- 20 错题重刷不受冷却期限制(可连刷)
⑩ 落地路线与当前卡点
| 阶段 | 周期 | 交付 |
| MVP | 1 周 | 可玩原型:选关→答题→判定→结算→奖励→错题本;题库用 A 档 300–600 题;localStorage 存档 原型已完成 |
| V1 | 2–3 周 | 接入全量题库(B 档清洗);IndexedDB;本地排行榜;勋章全量;教师导入题包 |
| V2 | 4–6 周 | 后端账号同步;班级/校榜;教师端(布置作业、班级看板);解答题拍照批改 |
| V3 | — | 自适应难度(IRT);知识点掌握度诊断;薄弱点自动组卷;错题同类推荐 |
🔧 当前最大卡点:公式清洗。题库题干来自 PDF 抽取,公式存在断行与乱码,例如 A ={sin ,cos ,tan } + { 6 3 4 } 实为 A={sin(π/6),cos(π/3),tan(π/4)}。
建议三档推进:A 档先上「公式简单」的题(集合、复数、程序框图、统计,约 400–600 题,0.5 天)→ B 档规则批量还原 + 人工抽检(+40%,2–3 天)→ C 档压轴/解答题人工 LaTeX 重排(持续)。
默认建议:先用 A 档做 MVP 上线,同时并行推 B 档。
附:交付文件
| 文件 | 说明 |
闯关原型.html | 可交互原型,全流程可玩(内置 32 道精编真题,覆盖 11 个板块) |
高考真题刷题闯关_模式设计说明书.md | 完整说明书(本页为速查版) |
questions.json / questions.csv | 结构化题库 2055 题 |
build_question_bank.py | 题库结构化脚本(可重复运行) |
_report.md / _test.js | 抽取体检报告 / 核心逻辑冒烟测试(43 项全通过) |