feat: AICODE-06 春季后半 7 课大纲 + 第 12 课教案 + prototype 工程产物
## 主要变更 ### 课程设计 - 大纲扩展到 18 课(新增第 12-18 课:单词塔防 3D 大项目) - 引入 AI 三角色协作工作流(Planner / Reviewer / Tester)作为整学期框架 - 每课详化:核心概念 + 误概念预设 + 教学锚点 + 学生产出 + 老师课前要准备 ### 第 12 课教案(完整逐字稿) - 主题:Skills 入门 - 用 game-studio 做跳一跳 - 90 分钟 4C 结构 + 诊断点 + 分支策略 - 5 个误概念预设 + AI 助教提示词模板 + 教师备课指南 ### prototype 工程产物(可玩 demo) - 跳一跳-3d/index.html:Three.js 3D 跳一跳(蓄力 + Web Audio 音效 + PERFECT 命中) - 单词塔防/game-3d.html:完整 3D 塔防(三阶段 + 商店 + 卡片 + 战斗循环,15 击杀完美胜利) - 单词塔防/level-editor-3d.html:3D 关卡设计器(Kenney GLB 模型 + localStorage 保存) - 单词塔防/level-editor.html:2D 关卡设计器(原型保留) - 单词塔防/index.html:2D 塔防原型(原型保留) ### 工程加固 - .gitignore 加强:排除 token、Kenney 大素材、调试截图、第三方插件、Playwright 临时 - 从 git tracking 移除 scripts/.dingtalk_token.json(本地保留) - scripts/sync_to_dingtalk.py:OAuth 流程改为手动 authCode 粘贴(避免本地 server 受限) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# AICODE-06 课程大纲
|
||||
|
||||
> AI编程创新课 · 06路线 · 春季学期(前5课独立,合流时间点待定)
|
||||
> AI编程创新课 · 06路线 · 春季学期(共18课:1-5课衔接 + 6-7俄罗斯方块 + 8-11涂鸦PK + 12-18单词塔防大项目,合流时间点待定)
|
||||
> 适用对象:小学6年级起点,有扣子/低代码经验
|
||||
|
||||
---
|
||||
@@ -17,8 +17,6 @@
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## 项目实战阶段:魔幻俄罗斯方块(第6-7课)
|
||||
|
||||
> 面向已完成前5课的 AICODE-06 学员。以俄罗斯方块为载体,系统训练工程师思维:Plan Mode 先行、需求审核、自动测试、新窗口原则。
|
||||
@@ -71,6 +69,425 @@ AI生成测试脚本(新窗口D:自动测试)
|
||||
|
||||
---
|
||||
|
||||
## 项目实战阶段:单词塔防 3D(第12-18课)
|
||||
|
||||
> 春季后半学期主线大项目。**整学期 7 课挂同一个项目**,从概念引入到完整发布。引入 **Subagent**(独立 AI 工人)+ **Skills**(AI 专业知识包)两个核心新概念,把"AI 工程方法论"作为教学主轴。学科载体:英语单词(家长心智里的硬需求)+ 3D 塔防(视觉震撼、家长接受度高)。
|
||||
|
||||
### 整体架构
|
||||
|
||||
```
|
||||
概念入门(12)→ 工程方法(13)→ 需求驱动(14)→ 功能迭代(15-17)→ 发布(18)
|
||||
```
|
||||
|
||||
### 🌟 AI 三角色协作工作流(七课终极愿景)
|
||||
|
||||
整个项目最终要让学生掌握的**核心工程范式** — **管理一支 AI 团队,而不是自己写代码**。
|
||||
|
||||
整学期通过 7 节课逐步引入并整合 **3 个 AI 角色**:
|
||||
|
||||
| 角色 | 职责 | 第几课正式引入 |
|
||||
|---|---|---|
|
||||
| 🧑💼 **Planner(计划员)** | 把模糊想法变成结构化 PRD(产品需求文档),指挥工作流方向 | 第 14 课正式登场 |
|
||||
| 🔍 **Reviewer(审核员)** | 在独立上下文里审查代码、PRD、计划,挑出问题 | 第 13 课正式登场 |
|
||||
| 🧪 **Tester(测试员)** | 用 Playwright 自动测试游戏功能,生成测试报告 | 第 15 课正式登场 |
|
||||
|
||||
**关键工程哲学**:
|
||||
- 用 **Subagent 机制**让这 3 个角色拥有**独立上下文窗口**——互不污染、各管一片
|
||||
- 主 AI 是"项目经理",学生是"老板",**老板只发号施令**,3 个 AI 协作出成果
|
||||
- 工作流自动化:**写计划 → 审计划 → 编码 → 审代码 → 测试 → 修复 → 再测试**,全程 AI 协作
|
||||
|
||||
**为什么必须强调这套工作流**:
|
||||
- 国产模型(豆包/Kimi/通义/混元)**往往不能一击必胜**,需要审 → 改 → 再审
|
||||
- 手动复制粘贴换窗口审核**太累、太慢、容易出错**
|
||||
- 用 Subagent 让审核**自动化** — 学生说一句"召唤 Reviewer 审一下",AI 自己完成
|
||||
- **这才是真实工程师 2026 年的工作方式**,不是抽象未来,是当下行业范式
|
||||
|
||||
### 各课大纲
|
||||
|
||||
| 课时 | 课程主题 | 学习目标 | 核心新概念 | 核心产出 |
|
||||
|:----:|---------|---------|----------|---------|
|
||||
| 12 | **Skills 入门 — 用 game-studio 做跳一跳** | • 理解 Skills 本质 = 给 AI 装"专业知识包"<br>• 装 game-studio 插件 → 体验"装 vs 不装"代码差异<br>• 用 `phaser-2d-game` skill 让 AI 做出可玩的跳一跳 | **Skills**(食谱类比)+ **game-studio 插件** + **phaser-2d-game skill** | 🎮 可玩的跳一跳 .html(小球能跳 + 平台 + 计分)+ 🧠 Skills 概念笔记 |
|
||||
| 13 | **Subagent + 塔防 v0.1 — 最简能玩版本** | • 理解 Subagent 本质 = **独立上下文**(为什么要"另起炉灶"做审代码)<br>• 召唤 Code Review subagent 审第 12 课跳一跳代码<br>• 用 3D 关卡设计器搭自己的塔防地图<br>• **用刚做的地图 + 1 个塔做出原始塔防 v0.1**(自动开火,可击杀怪) | **Subagent**(独立上下文 / 审代码工程师)+ **Code Review subagent** + 3D 编辑器 + **塔防 v0.1(1 塔 1 怪类型)** | 🔍 被 review 优化过的跳一跳代码 + 🗺️ 个人 3D 地图 + 🗼 **最简塔防 v0.1(1 塔自动攻击 + 怪沿路径走 + 击杀计数)**|
|
||||
| 14 | **项目深度 PRD — 引入"单词当子弹"核心机制** | • 在 v0.1 基础上做**项目级 PRD**(完整塔防设计文档)<br>• **首次引入项目核心机制**:英语单词当塔的子弹/弹药<br>• 召唤 Planner subagent 协助写 PRD,Reviewer 审 PRD | **项目级 PRD** + **Planner subagent 登场** + **单词卡片 = 子弹机制** | 📝 项目 PRD.md(覆盖词库系统/卡片机制/塔类型/胜负条件)+ 🎮 塔防 v0.2(**塔需要单词卡片才能开火**,核心机制成型)|
|
||||
| 15 | **塔战斗系统 + Web Audio 音效** | • 实现 3 种塔(单发/冰冻/链式)+ 子弹追踪<br>• 用 Web Audio API 合成战斗音效(零素材)<br>• 用 `game-playtest` skill 自动测试 | **多塔差异化逻辑**、Web Audio 音效合成、playtest skill | 3 种塔完整战斗 + 命中/击杀音效 + 自测报告 |
|
||||
| 16 | **波次系统 + 难度梯度** | • 数据驱动的波次配置(`waves.json`)<br>• 关卡难度递进设计(怪速/血量/数量)<br>• 金币经济与塔商店调优 | **数据驱动设计**、关卡平衡 | 多波次关卡(简单→中等→Boss)+ 个人 `waves.json` |
|
||||
| 17 | **词库系统 + 个性化主题** | • 设计 JSON 词库(英语/古诗/历史/地理可选)<br>• 让塔防绑定 TA 的兴趣领域<br>• 兼容老师班级词库 + 学生自定义 | **学生作品 IP 化**、JSON 数据扩展 | 个人词库 JSON(30-50 词,自选学科)+ 塔防可玩自家词库 |
|
||||
| 18 | **🎉 班级发布会 + Electron 打包** | • Electron 打包成 .exe 桌面应用<br>• 加 LICENSE.txt(CC0/MIT 协议入门)<br>• 3 分钟路演 + 家长开放日 | **桌面应用打包**(秋季多文件项目入口)、**开源协议初识** | 个人塔防 .exe 可执行文件 + 路演 + 家长开放日 |
|
||||
|
||||
### 七课核心工作流
|
||||
|
||||
```
|
||||
Skills + game-studio + 跳一跳(先动手做/12)
|
||||
↓
|
||||
Subagent + Code Review + 3D 关卡设计(独立上下文/13)
|
||||
↓
|
||||
PRD 驱动 → AI 实现(需求驱动:14)
|
||||
↓
|
||||
Web Audio + Playtest skill(视听反馈+自测:15)
|
||||
↓
|
||||
数据驱动波次配置(关卡设计:16)
|
||||
↓
|
||||
学生自选学科词库(IP 化:17)
|
||||
↓
|
||||
Electron 打包 + 版权协议 + 家长开放日(发布:18)
|
||||
```
|
||||
|
||||
### 老师备课资产清单
|
||||
|
||||
整套教学需要老师提前准备:
|
||||
- **3D 编辑器示例地图包**(5 张 JSON,覆盖简单/中等/Boss/雪地/峡谷)→ 第 13 课学生导入
|
||||
- **示例 PRD 模板**(《我的塔防 PRD》样板)→ 第 14 课学生参考
|
||||
- **默认词库**(学校用品 12 词 + 古诗 12 句 + 中国朝代 12 个)→ 第 17 课学生扩展起点
|
||||
- **波次配置示例**(`waves.json` 默认 5 波)→ 第 16 课学生改造
|
||||
- **Electron 打包脚本**(一键打包 `.exe`)→ 第 18 课直接套用
|
||||
|
||||
### 第 12 课:Skills 入门 + 跳一跳 — 具体教法(关键)
|
||||
|
||||
**核心理念**:先让学生**看到 AI 真的能做出游戏**的体感(具体),再讲 Skills 是什么(抽象)。**从动手到理论**是更自然的学习路径。
|
||||
|
||||
**Skills 怎么教**(分三步走,对比演示法):
|
||||
|
||||
1. **演示痛点**(不装 game-studio):
|
||||
- 让主 AI 写一个"跳一跳"游戏
|
||||
- 输出:**代码乱、跑不起来、视觉差** — AI 不懂 Phaser 的最佳实践
|
||||
- 揭秘:"AI 知道一些基础知识,但不懂游戏开发的专业套路"
|
||||
|
||||
2. **Skills 救场**(装 game-studio 插件):
|
||||
- 一行命令装上 game-studio 插件
|
||||
- 让主 AI 用 `phaser-2d-game` skill 重新做跳一跳
|
||||
- 输出:**代码整洁、能跑、视觉漂亮** — AI 突然"专业"了
|
||||
|
||||
3. **学生 Aha 时刻**:
|
||||
- "Skills 是给 AI 装的'专业教材',装了 AI 就突然会做这件事了"
|
||||
- **类比固化**:Skill = 食谱,AI = 厨师,**厨师拿到食谱才能做出菜**
|
||||
|
||||
**第 12 课作品**(可玩的跳一跳):
|
||||
- 学生自己装 game-studio 插件(`/plugin install game-studio`)
|
||||
- 让 AI 用 `phaser-2d-game` skill 做跳一跳基础版:
|
||||
- 小球可以按空格跳跃
|
||||
- 平台从右向左移动
|
||||
- 落到平台得分,落水/出屏游戏结束
|
||||
- 学生**个性化定制**:换背景色、改小球形状、加自己设计的音效
|
||||
- 课程结尾:**互相玩对方的跳一跳**(榜单 / 谁分高)
|
||||
|
||||
**为什么跳一跳是 Skills 教学的最强载体**:
|
||||
- ✅ **视觉震撼**:小球真的能跳,平台真的能动,分数真的能涨
|
||||
- ✅ **对比强烈**:不装 game-studio 时翻车,装上后秒做 — Skills 价值一目了然
|
||||
- ✅ **小学生秒懂玩法**:微信跳一跳全民共识,不需要讲解
|
||||
- ✅ **课堂可玩**:90 分钟末尾可以互玩对方的版本,情感高潮收尾
|
||||
- ✅ **零素材依赖**:纯几何 + Web Audio 音效,不需要 Kenney 等外部资源
|
||||
|
||||
**13 课伏笔**:
|
||||
- 课末预告:"你的跳一跳代码可能不够干净。下节课**我们会召唤另一个 AI(Subagent)来审你的代码** — 它会有独立的"工程师视角",发现你和主 AI 都没看到的问题。"
|
||||
|
||||
---
|
||||
|
||||
### 第 13 课:Subagent + 塔防 v0.1 — 最简能玩版本
|
||||
|
||||
**核心新概念**:
|
||||
- **Subagent(子智能体)**:AI 召唤的另一个 AI 实例,**有独立上下文窗口**,跟主 AI **互不污染**
|
||||
- **为什么需要 Subagent**:国产模型不一击必胜,需要审核迭代;手动复制粘贴换窗口太累 → Subagent 自动化
|
||||
- **Reviewer 角色**正式登场(三角色协作第一步)
|
||||
- 🔥 **塔防 v0.1**(最简能玩版本):用刚做的地图 + **1 个塔自动开火** + 怪沿路径走 — **学生离开教室时手上有真正的塔防雏形**,不是工具
|
||||
|
||||
**误概念预设(老师写教案时必须预防)**:
|
||||
- M1:"Subagent 是更厉害的 AI" → 错。Subagent **跟主 AI 是同一个模型**,只是独立窗口
|
||||
- M2:"Subagent 永远比主 AI 强" → 错。Subagent 优势在**独立上下文**,不是能力更强
|
||||
- M3:"做塔防需要先写完整 PRD" → 错。**13 课先快速跑一个 v0.1 体感版**;真正的项目 PRD 是第 14 课的事
|
||||
- M4:"塔防 v0.1 只 1 个塔太简单" → 错。**最简能玩 > 复杂不可玩**。先有"动起来的塔防",学生才有继续投入的动力
|
||||
|
||||
**教学锚点(Aha 时刻设计)**:
|
||||
|
||||
1. **痛点演示**(老师故意手动):
|
||||
- 拿第 12 课跳一跳代码 → 复制 → 打开新窗口 → 粘贴 → 让 AI 审 → 复制意见 → 回主窗口 → 粘 → 让 AI 改 → 又复制 → 又粘......
|
||||
- 让学生看 5 分钟"老师在重复复制粘贴"的痛苦表情 → 引出"有更好的办法吗?"
|
||||
|
||||
2. **Subagent 救场**:
|
||||
- 主 AI 里直接说:"召唤一个 Reviewer subagent 来审这段代码"
|
||||
- 学生看到 subagent **自动审**、**自动给意见**、**主 AI 自动改**——一句话搞定刚才 5 分钟的痛苦
|
||||
|
||||
3. **独立上下文演示**:
|
||||
- 让 subagent 审一段代码后,问主 AI:"刚才 subagent 看了什么?"
|
||||
- 主 AI 答:"我不知道"——证明**主 AI 看不到 subagent 的对话历史**
|
||||
- 学生 Aha:"两个 AI 是真的独立的!"
|
||||
|
||||
4. 🎯 **塔防 v0.1 闭环演示**(本课情感高潮):
|
||||
- 学生用 3D 编辑器搭出自己的地图(可以从老师备课包导入再改)
|
||||
- 用 game-studio 的 three-webgl-game skill 加 1 个塔 + 怪物路径
|
||||
- **塔自动开火 → 怪被击杀 → 计数器 +1**
|
||||
- 学生**第一次看到自己的塔防雏形动起来** — 哪怕只有 1 个塔、1 种怪、没有音效、没有 UI
|
||||
- 这一刻的成就感 **远超"我只做了一张地图"**
|
||||
|
||||
**教学节奏建议(90 分钟)**:
|
||||
- Connect 10':展示第 12 课跳一跳 + 痛点演示(复制粘贴累)
|
||||
- Construct 65':
|
||||
- 分段 1 (15'):Subagent 概念演示(独立上下文)+ Code Review subagent 审跳一跳
|
||||
- 分段 2 (15'):3D 关卡设计器 — 学生搭自己的地图
|
||||
- 分段 3 (15'):**用 1 个塔 + 怪物路径,跑出最简塔防 v0.1**(主菜)
|
||||
- 分段 4 (20'):学生定制(改塔的位置 / 改怪物速度 / 加 1 种装饰)
|
||||
- Contemplate 10':互玩对方塔防 + 抽象总结
|
||||
- Continue 5':预告 14 课 — 真正写**项目级 PRD** + 引入"单词当子弹"机制
|
||||
|
||||
**学生产出**(3 个,逐级递进):
|
||||
- 🔍 跳一跳代码经过 Code Review subagent 优化(更整洁)
|
||||
- 🗺️ 用 3D 关卡设计器搭的自己的地图(JSON)
|
||||
- 🗼 **塔防 v0.1 雏形**(1 塔 + 自动开火 + 怪沿路径 + 击杀计数)
|
||||
|
||||
**衔接**:
|
||||
- ← 第 12 课:你装了 Skill 让 AI 变专业,做出了跳一跳
|
||||
- → 第 14 课:**塔防 v0.1 太简陋了** — 没有用户输入、没有玩家挑战。**用项目级 PRD 把它变成真正的"单词塔防"** — 召唤 Planner 角色
|
||||
|
||||
**老师课前要准备**:
|
||||
- **塔防 v0.1 代码骨架**(`prototype/单词塔防/game-3d.html` 的简化版 — 只保留:加载地图 + 1 个塔 + 怪沿路径 + 自动开火 + 计数)
|
||||
- 一段"故意有问题"的跳一跳代码(变量名乱、有 magic number)用作 Code Review 演示对象
|
||||
- 3D 关卡设计器的 5 张示例地图 JSON(`level-pack/sample-*.json`)
|
||||
- 简化版"装上塔"的 prompt 模板(给学生用,降低门槛)
|
||||
|
||||
---
|
||||
|
||||
### 第 14 课:项目深度 PRD — 引入"单词当子弹"核心机制(Planner 登场)
|
||||
|
||||
**核心新概念**:
|
||||
- **项目级 PRD(深度需求文档)**:不再是"做一座塔"的小 PRD,而是**整个塔防项目的完整需求文档**——覆盖词库系统、卡片机制、塔类型、胜负条件、视觉风格
|
||||
- **Planner subagent**:专门写 PRD 的"AI 产品经理",在独立上下文里**结构化输出**
|
||||
- 🌟 **项目核心机制**:**单词卡片 = 塔的子弹/弹药** — 学生先输英语单词获得"卡片",卡片装到塔上当弹药。这是单词塔防的灵魂机制
|
||||
- **PRD → 代码 → Review → 测试 → 迭代** 的完整闭环
|
||||
|
||||
**误概念预设**:
|
||||
- M1:"PRD 太麻烦,直接告诉 AI 就行" → 错。**13 课就是这种'直接告诉'的产物 — 简陋**。项目级要 PRD
|
||||
- M2:"PRD 越长越好" → 错。**清晰、可执行、覆盖关键边界**比长更重要(老师示范一份精简 PRD 模板)
|
||||
- M3:"单词当子弹这个机制太怪了" → 错。**这是穹狼塔防的独特机制** — 把"学单词"和"游戏弹药管理"自然耦合,这是教育游戏的关键创新
|
||||
- M4:"AI 写代码我看不懂" → 错。**你要会读 PRD 验收 AI**,不一定会写代码
|
||||
|
||||
**教学锚点**:
|
||||
|
||||
1. **回顾 13 课 v0.1 的局限**:
|
||||
- 老师展示一个 v0.1 给学生玩 30 秒
|
||||
- 抛问题:"你觉得现在的塔防缺什么?"
|
||||
- 学生回应:"没玩家操作"、"没意思"、"没有单词怎么叫单词塔防"
|
||||
- 引出今天:**把灵魂机制加进去 — 单词当子弹**
|
||||
|
||||
2. **对比演示 — 无 PRD vs 有 PRD**:
|
||||
- 演示 A:跟 AI 说"加单词机制" → 输出五花八门(可能是飘字、可能是问答、可能是其他)
|
||||
- 演示 B:写完整 PRD("玩家输入英文 → 获得卡片 → 卡片装到塔上 → 塔用卡片当子弹开火 → 每张卡 N 发子弹") → AI 输出**精准的卡片机制**
|
||||
- 学生 Aha:**PRD 越详细,AI 越听话**
|
||||
|
||||
3. **Planner subagent 登场**:
|
||||
- 主 AI 说:"召唤 Planner 帮我写'单词塔防'的完整 PRD"
|
||||
- Planner 在独立上下文里输出**结构化文档**:词库 schema / 卡片机制 / 塔规格 / 胜负条件
|
||||
- 学生看到 Planner + Reviewer 协作(Reviewer 审 PRD,挑出"边界情况没覆盖")
|
||||
- **第一次看到 3 个角色中的 2 个完整协作**(Planner + Reviewer)
|
||||
|
||||
4. **PRD → 代码 → 玩**:
|
||||
- 把 PRD 喂给主 AI,主 AI 在 v0.1 基础上**增量加单词机制**
|
||||
- 学生玩 v0.2:**输入 "apple" → 卡片出现 → 装到塔 → 塔开火 → 怪死掉**
|
||||
- 完整核心循环成型
|
||||
|
||||
**学生产出**:
|
||||
- 📝 项目 PRD.md(800-1500 字,覆盖:词库 schema / 卡片机制 / 塔规格 / 胜负 / 视觉)
|
||||
- 🎮 **塔防 v0.2**(核心机制成型 — 学生输单词 + 卡片当子弹 + 塔自动开火)
|
||||
|
||||
**衔接**:
|
||||
- ← 第 13 课:v0.1 太简陋,**没玩家操作、没单词** — 不是真正的单词塔防
|
||||
- → 第 15 课:核心机制有了,但**只 1 种塔、没音效、没自动测试**——下节课加战斗多样性 + Tester 登场
|
||||
|
||||
**老师课前要准备**:
|
||||
- **完整 PRD 示例**(老师写好的"单词塔防 PRD" 模板 — 1500 字左右)
|
||||
- PRD 评分 rubric(覆盖度 / 可执行度 / 边界情况)
|
||||
- v0.1 代码骨架(13 课的产物,基础上加单词机制)
|
||||
- Planner subagent 调用 prompt 模板
|
||||
|
||||
---
|
||||
|
||||
### 第 15 课:战斗系统 + 音效 + Playtest skill(Tester 角色登场)
|
||||
|
||||
**核心新概念**:
|
||||
- **多塔类型差异化**:同一个"开火"接口,3 种塔(单发/冰冻/链式)不同效果
|
||||
- **Web Audio API**:用代码合成音效(回收涂鸦PK 第 10 课经验)
|
||||
- **game-playtest skill**:让 AI 用 Playwright 自动测试游戏
|
||||
- **Tester 角色**正式登场(三角色协作完整)
|
||||
|
||||
**误概念预设**:
|
||||
- M1:"音效要找 mp3 文件下载" → 错。Web Audio 可以**纯代码合成**,零文件依赖
|
||||
- M2:"测试是写完代码后才做的事" → 错。**写代码前先想测试**——Tester 视角让设计更稳
|
||||
- M3:"自动测试 = 替代手动玩" → 错。**自动测试覆盖回归**(改一次代码不破坏老功能),手动玩负责"好不好玩"
|
||||
- M4:"三个塔都用一样的方法" → 错。**多塔差异化** = 设计技能,不是技术问题
|
||||
|
||||
**教学锚点**:
|
||||
|
||||
1. **战斗回路演示**:
|
||||
- 主 AI 用 PRD 实现"魔法塔基础版" + "冰冻塔变体(加减速 buff)" + "链式塔变体(命中后链击)"
|
||||
- 学生看到**同一接口、3 种行为** — 设计模式启蒙
|
||||
|
||||
2. **Web Audio 音效合成回收**:
|
||||
- 回顾涂鸦PK 第 10 课:`playTone(freq, duration, type, volume)`
|
||||
- 学生为塔加 5 种音效(开火/命中/击杀/冰冻/连击)
|
||||
- **零文件依赖,纯代码合成**
|
||||
|
||||
3. **Tester subagent 登场**:
|
||||
- 主 AI 说:"召唤 Tester 用 Playwright 测一下战斗系统"
|
||||
- Tester 在独立上下文里**自动玩游戏**:启动战斗 → 等待 30 秒 → 检查 HP/击杀/塔状态 → 报告
|
||||
- 学生第一次看到 **3 个 AI 角色完整协作**:Planner(写计划)+ 主 AI(写代码)+ Reviewer(审代码)+ Tester(测试)
|
||||
|
||||
**学生产出**:
|
||||
- ⚔️ 完整战斗系统(3 种塔 + 子弹追踪 + HP 系统)
|
||||
- 🔊 战斗音效完整(开火/命中/击杀/冰冻/连击)
|
||||
- 🧪 Tester 自动测试报告(Playwright 跑通战斗循环)
|
||||
|
||||
**衔接**:
|
||||
- ← 第 14 课:你有一座基础塔,但**战斗单调**
|
||||
- → 第 16 课:战斗能打了,但**怪物太弱、波次太单调**——下节课加难度梯度
|
||||
|
||||
**老师课前要准备**:
|
||||
- 完整战斗 PRD 模板(3 种塔的差异化规格)
|
||||
- Web Audio 音效配方卡片(频率/波形对应表)
|
||||
- Playwright Tester 的 prompt 模板("启动战斗 → 等 N 秒 → 检查 X")
|
||||
|
||||
---
|
||||
|
||||
### 第 16 课:波次系统 + 难度梯度(数据驱动)
|
||||
|
||||
**核心新概念**:
|
||||
- **数据驱动设计**:`waves.json` 描述每波难度,改 JSON = 改难度,**不改代码**(回收涂鸦PK 第 11 课"加文件=加角色")
|
||||
- **关卡平衡**:怪速 / 怪 HP / 出怪间隔 / 总数 — 这 4 个数字决定关卡难度
|
||||
- **递进难度曲线**:简单波 → 中等波 → BOSS 波 → 多波渐进
|
||||
|
||||
**误概念预设**:
|
||||
- M1:"难度就是怪多" → 错。难度有 4 个维度,**叠加才有层次**
|
||||
- M2:"波次设计随便写就行" → 错。**第 1 波必须能通**(让玩家上手),第 5 波必须刺激(高潮)
|
||||
- M3:"BOSS 就是高 HP 怪" → 错。BOSS = 设计专属机制(分裂/隐身/反弹)
|
||||
- M4:"改难度要重写代码" → 错。**改 `waves.json` 即可**,这就是数据驱动
|
||||
|
||||
**教学锚点**:
|
||||
|
||||
1. **数据驱动概念回收**:
|
||||
- 回顾涂鸦PK 第 11 课:"加文件=加角色"
|
||||
- 演示:在 `waves.json` 加一段 `{"speed": 2.0, "hp": 3}` → 立刻新增一波,**代码不动**
|
||||
|
||||
2. **关卡平衡迭代**:
|
||||
- 学生设计自己的 5 波难度梯度
|
||||
- 召唤 Tester subagent 测每一波是否平衡(总能赢但有挑战)
|
||||
- 不平衡 → 调 `waves.json` → 再测
|
||||
|
||||
3. **BOSS 设计启蒙**:
|
||||
- BOSS 不是"超强怪",是"有专属机制的怪"
|
||||
- 学生设计 1 个 BOSS:**至少有 1 个特殊机制**(分裂/隐身/反弹/招小怪)
|
||||
|
||||
**学生产出**:
|
||||
- 🌊 个人 `waves.json`(5 波递进难度 + 1 个 BOSS)
|
||||
- 📊 测试报告:每波的击杀数 / HP 损失 / 完成时间(Tester 自动跑)
|
||||
|
||||
**衔接**:
|
||||
- ← 第 15 课:你的战斗能打,但**只有一波怪**
|
||||
- → 第 17 课:关卡有梯度了,但**词库还是英语单词**——下节课让学生选自己学科
|
||||
|
||||
**老师课前要准备**:
|
||||
- `waves.json` 模板(默认 5 波 + 1 BOSS 配置)
|
||||
- Tester 平衡测试 prompt 模板
|
||||
|
||||
---
|
||||
|
||||
### 第 17 课:词库系统 + 个性化主题(学生 IP 化)
|
||||
|
||||
**核心新概念**:
|
||||
- **词库 = JSON 数据**:`words.json` 描述学科词汇,游戏从这里读题
|
||||
- **学科多样性**:学生选自己感兴趣的领域(英语/古诗/历史/地理/化学)
|
||||
- **学生作品 IP 化**:每个学生的塔防绑定 ta 的兴趣
|
||||
|
||||
**误概念预设**:
|
||||
- M1:"只能做英语单词" → 错。**词库可以是任何学科**,只要有"中文 → 答案"的对应
|
||||
- M2:"自己选学科会让游戏 hint 不一致" → 错。**词库统一 schema**,游戏代码不变,数据驱动
|
||||
- M3:"词库越大越好" → 错。**30-50 词足够一局战斗**,质量 > 数量
|
||||
- M4:"老师必须给词库" → 错。**学生自己设计**才是核心训练 — 培养"知识工程师"思维
|
||||
|
||||
**教学锚点**:
|
||||
|
||||
1. **词库结构剖析**:
|
||||
- 看 `words.json` 的 schema:`[{question: "苹果", answer: "apple", emoji: "🍎"}, ...]`
|
||||
- 任何学科都能套这个结构
|
||||
- 英语:`{question: "苹果", answer: "apple"}`
|
||||
- 古诗:`{question: "床前明月光,___", answer: "疑是地上霜"}`
|
||||
- 历史:`{question: "唐朝建立者是?", answer: "李渊"}`
|
||||
- 地理:`{question: "广东省会?", answer: "广州"}`
|
||||
|
||||
2. **学生选学科 + 写词库**:
|
||||
- 每个学生选自己最熟/最爱的学科
|
||||
- 写至少 30 词,导入游戏
|
||||
- 玩自己的塔防
|
||||
|
||||
3. **班级词库交换**:
|
||||
- 互玩别人的词库 → "原来我数学不太好的同学做了一个超难数学塔防"
|
||||
- **跨学科学习的自然发生**
|
||||
|
||||
**学生产出**:
|
||||
- 📖 个人 `words.json`(30-50 词,自选学科)
|
||||
- 🎯 塔防绑定自己词库,可玩
|
||||
|
||||
**衔接**:
|
||||
- ← 第 16 课:你的关卡有梯度,但**怪物身上的内容是老师给的**
|
||||
- → 第 18 课:你的塔防完整了,**怎么让家长玩到?** 下节课打包成 .exe + 班级发布会
|
||||
|
||||
**老师课前要准备**:
|
||||
- 多学科词库示例(英语/古诗/历史/地理 各 1 个 sample)
|
||||
- `words.json` 统一 schema 文档
|
||||
|
||||
---
|
||||
|
||||
### 第 18 课:Electron 打包 + 班级发布会(发布 + 版权)
|
||||
|
||||
**核心新概念**:
|
||||
- **Electron 打包**:Web 游戏变成桌面 `.exe`/`.app`,**双击运行,不需要浏览器**
|
||||
- **开源协议**(LICENSE):Kenney 素材 CC0 / Phaser/Three.js MIT,**用别人的东西要标注**
|
||||
- **路演 / 发布会**:**讲设计决策**而非功能列表(回收涂鸦PK 第 11 课)
|
||||
- **跨届 IP 资产**:学生作品进入"穹狼塔防作品集",**学长学姐的作品成为下一届的遗产**
|
||||
|
||||
**误概念预设**:
|
||||
- M1:"打包是另一个项目,跟我现在的塔防无关" → 错。**Electron 直接加载你的 game-3d.html**,无侵入
|
||||
- M2:"用了 Kenney 的素材就是我的" → 错。**CC0 协议虽然允许商用,但建议标注来源**——这是工程师道德
|
||||
- M3:"路演就是把游戏跑给家长看" → 错。**讲设计决策**比放游戏更重要——"我为什么做这个塔,我学了什么"
|
||||
- M4:"发布会是结束" → 错。**这是穹狼塔防 IP 的开始**——下一届学生会基于你的作品继续发展
|
||||
|
||||
**教学锚点**:
|
||||
|
||||
1. **Electron 打包演示**:
|
||||
- 一行命令 `npx electron-packager .` 或类似
|
||||
- 学生看到自己的 `index.html` 变成 `MyTowerDefense.exe`
|
||||
- 双击运行,**就是一个独立桌面游戏**
|
||||
|
||||
2. **版权 + LICENSE 教育**:
|
||||
- 解释 CC0 和 MIT 协议(用孩子能懂的话)
|
||||
- 学生写 `LICENSE.txt`:"我的代码 MIT 协议 / 美术 Kenney CC0 / 引擎 Three.js MIT"
|
||||
- **第一次接触工程师道德/法律基础**
|
||||
|
||||
3. **班级发布会**:
|
||||
- 每个学生 3 分钟路演:"我的塔防是什么、为什么这么设计、过程中遇到什么、最得意的设计是什么"
|
||||
- **邀请家长**到场
|
||||
- 家长玩学生的塔防(角色反转 — 孩子考家长)
|
||||
- 评出"最有创意"、"最难"、"最好玩"等奖项
|
||||
|
||||
4. **跨届 IP 启动**:
|
||||
- 学生作品打包进"穹狼塔防作品集"目录,**作为穹狼科创资产**
|
||||
- 下一届学生会玩到这些作品,**作为下一届的起点**
|
||||
- **时间复利** + **学生归属感** 的种子在这一刻种下
|
||||
|
||||
**学生产出**:
|
||||
- 💾 个人塔防 `.exe`(可双击运行的桌面游戏)
|
||||
- 📜 个人 LICENSE.txt(标注代码 + 素材 + 引擎来源)
|
||||
- 🎤 3 分钟路演 + 家长玩自己作品的视频
|
||||
- 🏆 班级评奖(各种奖项,人人有奖)
|
||||
|
||||
**衔接**:
|
||||
- ← 第 17 课:你的塔防完整 + 个性化
|
||||
- → 秋季:多文件项目结构 + Electron 深入 + 更复杂的项目(**第 18 课是秋季入口的伏笔**)
|
||||
|
||||
**老师课前要准备**:
|
||||
- Electron 打包脚本(一键 `package.json` + main.js)
|
||||
- 班级发布会场地 + 家长邀请函
|
||||
- 评奖证书模板
|
||||
- 跨届 IP 资产目录("穹狼塔防作品集"git 仓库或共享目录)
|
||||
|
||||
---
|
||||
|
||||
## 合流说明
|
||||
|
||||
> **合流时间点待定。** 原计划第5课合流,但考虑到 AICODE-03 学生打字和表达能力的成长节奏,合流点可能后延。
|
||||
|
||||
Reference in New Issue
Block a user