AI 创造力大赛 · 学习工作赛道
从人教版知识点到探案剧情,一条完整的技术链条
雾区谜解社是一个纯前端静态网页互动学习系统,将初中物理、化学、数学知识转化为探案解谜游戏。项目由 6 个核心模块 协同工作,形成从"知识点"到"破案体验"的完整闭环。
flowchart TB
subgraph Data["📦 数据层"]
KG["🧠 知识图谱
knowledgeGraph
51个知识点 + 依赖关系 + 案件映射"]
KP["📚 知识面板数据
KNOWLEDGE_DATA
漫画面板 + SVG图表"]
end
subgraph Intelligence["🧠 智能层"]
KS["🎯 知识选择器
MZ_KnowledgeSelector
玩家评估 + 自适应选点"]
CF["🏭 案件工厂
MZ_Factory
配置驱动动态生成案件"]
end
subgraph Engine["🎮 引擎层"]
GE["⚙️ 游戏引擎
game.js
状态机 + 对话树 + 苏格拉底提问"]
end
subgraph Storage["💾 存储层"]
ST["🗄️ 本地存储
MZ_Storage
玩家数据 + 档案 + 案件状态"]
end
KG -->|"知识点映射"| CF
KP -->|"面板渲染"| GE
KS -->|"评估结果"| CF
CF -->|"完整案件脚本"| GE
GE -->|"存档/读档"| ST
ST -->|"历史数据"| KS
GE -->|"最终输出"| UI["🖥️ 用户界面
对话 + 线索墙 + 知识展板 + 结案报告"]
这是整个项目的核心创新。知识图谱不仅是知识点列表,而是一个从国家课程标准到游戏剧情的完整映射系统,由四个层级逐层约束,确保每个案件在知识层面都是严谨、可追溯的。
以人教版初三/高一教材为核心,覆盖物理(运动学、力学)、化学(氧化还原、催化剂)、数学(函数、比例换算)三大主干学科,共 51 个知识点节点
每个节点定义 prerequisites(前置知识)、leadsTo(后续延伸)、lateralExpanse(横向跨学科展开)。当玩家卡住时,系统自动沿横向路径切换学科视角,降低挫败感
每个知识点映射到 高考真题(examQuestions)和 9 项核心素养(建模、计算、分析、实验、综合、提问、迁移、表达、模糊决策),确保游戏能力培养对标真实考试要求
每个知识点通过 caseMap 绑定到具体案件场景,标注角色(core核心/support支撑/analogy类比/cross跨学科等),确保每个剧情设定都有对应的知识依据
| 分区 | 节点数 | 覆盖内容 | 示例节点 |
|---|---|---|---|
| 初中物理 juniorPhysics | 19 | 机械运动、力、压强、浮力、功和机械能、简单机械、热学、电学 | P-J-03 速度概念 P-J-08 摩擦力 |
| 高中物理 seniorPhysics | 20 | 运动的描述、匀变速直线运动、相互作用、牛顿运动定律、抛体运动、圆周运动、机械能守恒 | P-G1-03 匀变速直线运动 P-G1-22 向心力 |
| 化学 chemistry | 4 | 物质分类、能量变化、氧化还原反应、催化剂 | C-G1-03 氧化还原反应 |
| 数学工具链 mathTools | 8 | 有效数字、比例换算、二次函数、三角函数、方程组、参数方程、弧度、向量 | M-J-02 比例与单位换算 |
| 能力维度 abilities | 9 | 建模能力、计算能力、分析能力、实验操作、综合能力、提问力、迁移力、表达力、模糊决策力 | 每项含3级细化描述 |
| 案件知识路径 caseKnowledgePaths | 3条 | case-001(霓虹街区飞车·6步)、case-002(悬空摩天轮·7步)、case-003(基因实验室爆炸·8步跨学科) | 每条含横向展开路径 + 高考真题参考 |
知识图谱的核心设计理念是纵向循序渐进,卡住时横向展开。当玩家在物理推理中遇到数学障碍,系统通过 lateralExpanse 字段自动切换到数学工具链;当纯物理思维无法解释实验现象,系统引入化学视角。
graph LR
subgraph Physics["物理"]
PJ03["P-J-03
速度概念"] --> PJ04["P-J-04
速度测量实验"]
PJ08["P-J-08
摩擦力"] --> PG09["P-G1-09
牛顿第二定律"]
PJ20["P-J-20
内能·热传递"] -->|"跨学科"| CG03["C-G1-03
氧化还原反应"]
end
subgraph Math["数学"]
MJ01["M-J-01
有效数字"]
MJ02["M-J-02
比例换算"]
MJ03["M-J-03
二次函数"]
end
subgraph Chemistry["化学"]
CG02["C-G1-02
化学能与热能"]
CG03["C-G1-03
氧化还原反应"]
end
PJ01["P-J-01
长度测量"] -.->|"横向展开"| MJ01
PJ03 -.->|"横向展开"| MJ02
PG03["P-G1-03
匀变速运动"] -.->|"横向展开"| MJ03
PG01["P-G1-01
质点参考系"] -.->|"前置"| PG03
PG03 -.->|"后续"| PG19["P-G1-19
抛体运动"]
MZ_KnowledgeSelector 模块(knowledge-selector.js)负责根据玩家历史表现,自动评估水平并推荐合适难度的知识点。它管理一个包含 20 个知识点的 KNOWLEDGE_POOL(KP-11 至 KP-30),覆盖物理、化学、数学三科,每个知识点标注了难度等级(1-3)和学科分类。
从 localStorage 档案中提取已掌握知识点,计算各学科统计和综合难度等级。玩家等级 ≥ 2 或破案 ≥ 3 自动提升难度上限。
根据玩家薄弱学科、案件口味偏好(都市→物理 / 科幻→物理 / 校园→数学 / 实验室→化学)、难度匹配度,自动筛选 5 个知识点,确保至少包含 1 个跨学科交叉。
不同案件口味自动匹配不同主学科,确保知识覆盖的多样性
MZ_Factory 模块(case-factory.js,约 1400 行)是整个项目的内容生产中枢。它接收一份 JSON 配置(caseConfig),自动生成案件所需的全部内容:案件信息、线索列表、场景引入对话、知识面板、结案报告问题、侦探手记。
一次性构建完整的游戏脚本对象,包括:
| 口味 | 场景引入风格 | 主学科 | 示例开场 |
|---|---|---|---|
| urban 都市 | 新闻播报 | 物理 | "紧急插播一条新闻…" |
| scifi 科幻 | 基地日志 | 物理 | "[空间站日志 #2047]…" |
| campus 校园 | 社团广播 | 数学 | "各位同学请注意…" |
| disaster 灾难 | 紧急通报 | 物理 | "⚠ 紧急预警…" |
| lab 实验室 | 实验报告 | 化学 | "[实验记录 #042]…" |
| ancient 古风 | 大理寺卷宗 | 综合 | "大理寺呈…" |
案件工厂还为每个知识点自动生成 赛博风格 SVG 知识图表(260×160px 内联 SVG),统一使用薄荷绿到青色的渐变配色,与项目视觉风格保持一致。同时自动生成线索分析文本、追问问题、干扰条件(红鲱鱼)揭示信息。
game.js 是整个系统的运行时核心,管理从案件进入到结案报告的完整流程。
stateDiagram-v2
[*] --> exploration: 接受案件
exploration --> reasoning: 线索收集完毕
reasoning --> report: 核心问题解答正确
report --> done: 提交结案报告
done --> [*]: 解锁奖励
state exploration {
[*] --> scene_intro: 场景引入
scene_intro --> clue_discussion: 发现线索
clue_discussion --> knowledge_panel: 展开知识展板
knowledge_panel --> scene_intro: 继续勘查
}
state reasoning {
[*] --> socratic_q1: 苏格拉底提问①
socratic_q1 --> socratic_q2: 追问
socratic_q2 --> formula: 公式推导
formula --> conclusion: 得出结论
}
state report {
[*] --> detective_eye: 侦探之眼
detective_eye --> flash: 灵光一闪
flash --> superpower: 超能力解锁
superpower --> [*]
}
不直接给出答案,而是通过层级递进的追问引导玩家自主推理。包含 stuckCheck 卡关检测机制,根据停留时间自动升级提示等级(0→1→2→3),在保持挑战性的同时防止挫败。
通过 userMood 字段识别玩家情绪状态(neutral / frustrated / annoyed / excited / curious / divergent),触发对应角色的个性化回应。发散性回答先肯定再引导,不否定不纠正。
thinkingPath 数组记录玩家推理轨迹(线索收集顺序、卡点位置、突破时刻),结案后生成"思维火花"和"能力亮点"展示。
redHerrings 系统追踪玩家是否被无关线索误导。结案报告中的"干扰条件揭秘"环节帮助玩家理解哪些信息是干扰项,培养批判性思维。
MZ_Storage 模块(storage.js,约 100 行)使用浏览器 localStorage 实现数据持久化,管理三个存储键:
| 存储键 | 内容 | 核心字段 |
|---|---|---|
mz_player |
玩家数据 | name, level, exp, badges[], knowledgePoints, solvedCases |
mz_cases_status |
案件状态 | 每个案件的解锁状态、完成进度、收集线索 |
mz_archive |
档案库 | 已完成案件的完整记录(含知识点、用时、报告答案) |
存储系统提供 addExp() 自动升级检测、unlockBadge() 去重解锁、addToArchive() 时间倒序归档等便捷方法。因为使用纯前端存储,用户数据完全保留在本地浏览器中,无需注册、无隐私风险。
下面以一次完整的案件生成与体验流程为例,展示六大模块如何协同工作:
sequenceDiagram
participant User as 👤 玩家
participant UI as 🖥️ 界面
participant KS as 🎯 知识选择器
participant CF as 🏭 案件工厂
participant KG as 🧠 知识图谱
participant GE as ⚙️ 游戏引擎
participant ST as 💾 存储
User->>UI: 点击"生成案件" / 选择口味
UI->>KS: 请求评估玩家水平
KS->>ST: 读取玩家档案
ST-->>KS: 历史破案记录 + 已掌握知识点
KS->>KS: evaluatePlayer() 计算难度等级
KS->>KS: selectKnowledgePoints() 筛选知识点
KS-->>CF: 返回 {knowledgeIds, assessment, targetSubject}
CF->>KG: 读取知识图谱依赖关系
KG-->>CF: 返回 prerequisites + leadsTo + lateralExpanse
CF->>CF: buildCase() 生成完整案件脚本
CF-->>UI: 返回 {caseInfo, hotspots, dialogue, report}
UI->>GE: 加载案件数据,启动游戏
GE->>GE: 播放场景引入对话
GE->>GE: 线索勘查 → 知识展板展开
GE->>GE: 苏格拉底提问 → 卡关检测
GE->>GE: 完成推理 → 生成结案报告
GE->>ST: 保存案件状态 + 更新档案
ST-->>User: 解锁成就 + 经验值 + 新案件
| 文件 | 大小 | 职责 | 核心输出 |
|---|---|---|---|
data.js | ~2100行 | 数据层:知识图谱 + 案件元数据 + 角色 + 徽章 | MZ_DATA 全局对象 |
knowledge-data.js | ~600行 | 知识展板数据:case-001 的漫画面板 + SVG图表 | KNOWLEDGE_DATA 对象 |
knowledge-selector.js | 225行 | 知识选择器:玩家评估 + 自适应知识点推荐 | MZ_KnowledgeSelector API |
case-factory.js | ~1400行 | 案件工厂:配置驱动的动态案件生成 | MZ_Factory API |
game.js | ~1500行 | 游戏引擎:状态机 + 对话树 + 苏格拉底提问 | gameState 状态管理 |
storage.js | ~100行 | 存储层:localStorage 持久化 | MZ_Storage API |
index.html | 首页 | 案件选择 + 核心成员 + 玩法介绍 | 主页界面 |
game.html | 游戏页 | 对话界面 + 线索墙 + 知识展板 + 结案报告 | 游戏运行时 |
creator.html | 创意工坊 | 极简案件创作界面(关键词填空 + 弹窗式选项) | 用户自定义案件 |
cases.html | 案件库 | 案件列表 + 火星基地翻页看板 | 案件浏览 |
从课程标准→知识依赖→题型能力→案件剧情的完整映射,确保每个游戏设定都有知识依据,在国内教育游戏领域属于首创。
根据玩家历史档案自动评估水平、识别薄弱学科,结合案件口味偏好动态生成适配难度的知识点组合,实现"千人千案"。
只需 30-40 行 JSON 配置即可生成完整案件(对话、线索、知识面板、报告),大幅降低内容生产成本,支持用户自定义案件创作。
无需后端服务器、无需数据库、无需用户注册。所有数据存储在浏览器 localStorage,可部署到任何静态托管服务,运维成本趋近于零。
雾区谜解社 以 知识图谱 为骨架、案件工厂 为血肉、游戏引擎 为神经,构建了一个从"人教版知识点"到"沉浸式探案体验"的完整技术闭环——所有代码运行在浏览器中,无需任何后端服务。