feat: 新增涂鸦PK四课教案(第8-11课)及大纲更新
- 新增 AICODE06-08~11 完整逐字稿教案(每课600+行) - 涂鸦PK主题:画图工具→基础对战→动画音效→班级锦标赛 - 核心工程思维:需求驱动→测试验证→增量迭代→数据驱动 - 更新 AICODE-06 课程大纲,追加第8-11课内容 - 新增 demo-pk/ 目录(画图工具/对战/动画三个demo) Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
课时: 6
|
||||
主题: 魔幻俄罗斯方块(上)— 工程师思维启蒙
|
||||
主题: 魔幻俄罗斯方块(上)— Plan Mode 先行
|
||||
核心能力: [提问力, 拆解力]
|
||||
核心工具: [Kimi 2.5]
|
||||
时长: 90分钟
|
||||
@@ -11,8 +11,8 @@
|
||||
### 1. 课程目标
|
||||
|
||||
**知识目标:**
|
||||
- 理解「需求文档」的作用:把脑子里的想法变成 AI 能准确执行的指令
|
||||
- 理解「需求质量 = 输出质量」:AI 做出来的结果不符合预期,根本原因是需求没说清楚
|
||||
- 理解「Plan Mode(计划模式)」的概念:无论做什么,都要先开启计划模式,把需求写清楚再执行
|
||||
- 理解「需求质量 = 输出质量」:需求写得越详细,AI 执行越准确;需求写不清楚,执行过程中就会出问题
|
||||
- 理解需求是迭代的过程,不是一次写完就能用
|
||||
|
||||
**能力目标:**
|
||||
@@ -21,7 +21,7 @@
|
||||
- 能在看到生成结果后,定位是哪条需求没说清楚,修改并重新生成(共创力)
|
||||
|
||||
**情感目标:**
|
||||
- 建立「先想清楚再动手」的工程师直觉,体验「需求清晰 → 结果可预期」的成就感
|
||||
- 建立「先开 Plan Mode,再动手」的习惯——这是课程中所有项目的第一步,不可跳过
|
||||
- 对「自己也能做出一个游戏」产生真实的兴奋感
|
||||
- 建立「结果不对 = 需求没说清楚」而不是「AI 不行」或「我不行」的归因习惯
|
||||
|
||||
@@ -33,10 +33,11 @@
|
||||
|
||||
| 概念 | 学生类比 | 认知层级 |
|
||||
|------|---------|---------|
|
||||
| Plan Mode(计划模式) | 盖房子前先画图纸——没有图纸直接开工,盖到一半发现方向错了,拆掉重来比画图纸贵十倍 | 理解层 |
|
||||
| 需求文档 | 装修前给师傅的设计图——口头说「弄好看点」和给一张详细图纸,结果完全不同 | 理解层 |
|
||||
| 需求压力测试 | 考试前找同学互出题——让别人挑毛病比自己检查更有效 | 应用层 |
|
||||
| 结果溯源 | 菜做咸了,往回找:是盐放多了,还是酱油放多了?找到根源才能改 | 应用层 |
|
||||
| 需求迭代 | 第一版草稿 → 发现问题 → 修改 → 第二版,就像改作文 | 理解层 |
|
||||
| 新窗口原则 | 让同一个同学既写作文又给自己改错,他永远改不出来——必须换一个人来审。审核、测试、评审全部要开新窗口,让「新的 AI」来做,才不会被原来的上下文带跑偏 | 应用层 |
|
||||
|
||||
**典型误概念表:**
|
||||
|
||||
@@ -46,7 +47,9 @@
|
||||
| M2 | 需求文档写完就是写好了,直接提交 | 写完只是第一步,要经过压力测试才能发现漏洞 | 用「压力测试」提示词,让 AI 提出学生自己没想到的问题 |
|
||||
| M3 | AI 做出来的结果不对是 AI 的问题 | 结果不对说明需求里有没说清楚的地方 | 「你的需求文档里有没有写这一条?」——让学生自己发现根本没写 |
|
||||
| M4 | 需求文档要写得很长很详细 | 精准 > 冗长。需求要「可测试」:能说出什么情况下算做对了 | 「你这条需求,我怎么知道 AI 做没做对?」 |
|
||||
| M5 | 先动手做,遇到问题再想 | 先想清楚的时间,会节省后面改来改去的时间 | 对比两种路径的时间消耗:「先做 → 改 → 改 → 改」vs「先想清楚 → 做 → 小改」 |
|
||||
| M5 | 先动手做,遇到问题再想 | 跳过 Plan Mode 直接做,出了问题再改来改去,总时间反而更长 | 对比两种路径:「跳过计划 → 做 → 改 → 改 → 改」vs「Plan Mode → 做 → 小改」 |
|
||||
| M6 | 需求审核是在挑代码的问题 | 需求审核阶段只审需求本身——哪里没说清楚、哪里有歧义,跟代码无关 | 「AI 现在还没写一行代码,怎么可能审代码问题?」 |
|
||||
| M7 | 在同一个对话框里写需求、审核、执行、迭代全部搞定 | 这叫「上下文污染」——AI 会被之前的对话带着走,审核时会偏向为自己生成的内容辩护。正确做法:写需求在一个窗口,审核开新窗口,执行再开一个窗口 | 演示:在写了需求的窗口里让 AI 审核自己,AI 的回答会非常保守;换新窗口审核,AI 会找出更多问题 |
|
||||
|
||||
---
|
||||
|
||||
@@ -75,159 +78,368 @@
|
||||
|
||||
### 4. 教学流程
|
||||
|
||||
---
|
||||
|
||||
**第一幕:联系 (Connect) — 10分钟** 🔗
|
||||
|
||||
*本幕目标:通过「侦探模式」玩游戏,让学生主动发现俄罗斯方块的规则;展示「一句话版」对比引出 Plan Mode 的价值,建立「先写需求再动手」的第一印象*
|
||||
|
||||
**【环节】侦探模式导入 (10分钟)**
|
||||
|
||||
**师:** 今天我们要做一个游戏。但在做之前,先玩两分钟。
|
||||
|
||||
【投屏展示俄罗斯方块,或让学生在自己电脑上打开】
|
||||
|
||||
**师:** 你们的任务不是拿高分,而是当侦探——把这个游戏所有的规则找出来,写在纸上。你能找到多少条就写多少条。两分钟,开始。
|
||||
【学生玩游戏同时记录规则,教师走动观察学生找到了哪些规则】
|
||||
|
||||
> 教师走动观察:学生在记录哪些规则,是停在「方块会下落」这种表层,还是注意到了「碰到边界会停」「满行才消除」这类细节规则。不要打扰,只观察。
|
||||
|
||||
**师:** 好,停。谁来说一条规则?
|
||||
**生:** 方块会往下落。
|
||||
**师:** 好,这是一条。还有呢?
|
||||
**生:** 可以左右移动,可以旋转。满一行就消掉。
|
||||
**师:** 不错。这些都是游戏规则。现在我问一个问题——如果我让 AI 帮我做这个游戏,我直接说「帮我做一个俄罗斯方块」,你们觉得 AI 能做出来吗?
|
||||
**生:** 能!/ 应该能?
|
||||
|
||||
**生:** (预期:方块会往下落)
|
||||
|
||||
**师:** 好,这是一条。写得比较浅,但没错。还有呢?
|
||||
|
||||
**生:** (预期:可以左右移动,可以旋转)
|
||||
|
||||
**师:** 对,左右移动、旋转。还有没有发现更多的?
|
||||
|
||||
**生:** (预期:满一行就消掉)
|
||||
|
||||
**师:** 消行——这个很关键。消了之后上面的积木会怎样?
|
||||
|
||||
**生:** (预期:往下掉 / 往下移一行)
|
||||
|
||||
**师:** 对,会往下补。还有吗?积木碰到边界的时候会怎样?
|
||||
|
||||
**生:** (预期:停下来,不能再移了)
|
||||
|
||||
**师:** 对,碰到边界就停,不能移出去。那碰到底部呢?
|
||||
|
||||
**生:** (预期:就固定在那里了)
|
||||
|
||||
**师:** 对,固定住,不动了。那什么时候游戏结束?
|
||||
|
||||
**生:** (预期:积木堆到顶了就结束)
|
||||
|
||||
**师:** 好——你们刚才说出来的这些,就是俄罗斯方块的基本规则。你们注意没有——这些规则,全是游戏的「需求」。每一条都是「这个游戏应该怎么运行」。
|
||||
【识别层:让学生意识到「游戏规则 = 需求描述」】
|
||||
|
||||
**师:** 现在我问一个问题——如果我让 AI 帮我做这个游戏,我直接说「帮我做一个俄罗斯方块」,你们觉得 AI 能做出来吗?
|
||||
|
||||
**生:** (预期:能!/ 应该能?)
|
||||
|
||||
**师:** 我们来试试。
|
||||
|
||||
【投屏展示教师提前生成的「一句话版」俄罗斯方块】
|
||||
|
||||
**师:** 做出来了。但你们来找找看,这个游戏里,有没有什么地方跟你心里想的「俄罗斯方块」不一样?
|
||||
|
||||
> 教师给 20 秒让学生仔细看屏幕,甚至可以让一个学生上来玩几秒
|
||||
|
||||
【诊断点:学生是否能发现 AI 自作主张的细节——比如得分规则、速度、旋转方向等】【识别层】
|
||||
|
||||
**【分支A】若学生发现了不同的地方:**
|
||||
**师:** 你发现了。为什么 AI 做出来跟你想的不一样?
|
||||
**生:** 因为我没有告诉它……
|
||||
**师:** 对!你没说,AI 就自己猜了一个。今天我们要学的,就是怎么把「脑子里的游戏」变成 AI 能准确执行的指令。这个东西叫需求文档。
|
||||
|
||||
**生:** (预期:因为我没有告诉它……)
|
||||
|
||||
**师:** 对!你没说,AI 就自己猜了一个。这就是我们今天要解决的问题。
|
||||
|
||||
**师:** 从今天开始,我们做任何项目,第一步都是同一件事——**开启 Plan Mode(计划模式)**。Plan Mode 只做一件事:在动手之前,把你的需求写得越详细越好。需求写得越详细,AI 执行越准确;需求写不清楚,AI 就自己猜,猜出来的东西可能跟你想的完全不一样。
|
||||
【识别层:建立「Plan Mode 先行」的第一印象】
|
||||
|
||||
**【分支B】若学生觉得「都一样,没问题」:**
|
||||
**师:** 那我问你——这个游戏消一行得多少分?消四行一次呢?
|
||||
|
||||
**生:** (去看)……好像是 100 分?
|
||||
|
||||
**师:** 你想要的是这个分数吗?
|
||||
|
||||
**生:** 我没想过……
|
||||
**师:** 你没想过,AI 就帮你决定了。如果你想要自己的规则,就需要告诉 AI。这就是需求文档的意义。
|
||||
|
||||
**师:** 你没想过,AI 就帮你决定了。Plan Mode 就是在动手之前,把所有「你没想过」的地方都想清楚,写在文档里,让 AI 按你想的来做。
|
||||
|
||||
---
|
||||
|
||||
**第二幕:建构 (Construct) — 65分钟** 🛠️
|
||||
|
||||
**【分段一:写 Level 0 需求文档】(20分钟)**
|
||||
*本幕目标:完整走完 Plan Mode 三步——整理需求、需求审核、确认需求;再走完「提交生成 → 验收 → 结果溯源」的执行闭环;建立「需求驱动输出」的核心工作习惯*
|
||||
|
||||
---
|
||||
|
||||
**【分段一:开启 Plan Mode — 第一步:整理需求】(20分钟)**
|
||||
|
||||
*本段重点:学习 Plan Mode 三步总览,填写 Level 0 需求文档模板,建立「需求可测试性」的直觉*
|
||||
|
||||
**预设误概念:**
|
||||
- 误概念 M1:「帮我做俄罗斯方块」就够了,不需要写文档
|
||||
- 误概念 M1:「帮我做俄罗斯方块」就够了,不需要 Plan Mode
|
||||
- 误概念 M4:需求文档要写得很长很全面
|
||||
|
||||
**讲解与演示 (Teach & Demo): (5分钟)**
|
||||
**讲解与演示 (Teach & Demo): (7分钟)**
|
||||
|
||||
**师:** 现在我们正式开启 Plan Mode。Plan Mode 分三步走,我们先把三步过一遍,再动手。
|
||||
|
||||
**师:** **第一步——整理需求。** 把你想要的游戏写成一份需求文档。这一步的目标是:把你脑子里「模糊的感觉」变成「具体可以测试的文字」。就像设计师画图纸——不是说「大概这个形状」,而是标出每个尺寸。
|
||||
|
||||
**师:** **第二步——审核需求。** 写完不等于写好。让 AI 扮演一个审核工程师,专门找你文档里没说清楚的地方。它不帮你回答,只问问题——「这里如果出现了 XXX 情况,怎么处理?」
|
||||
|
||||
**师:** **第三步——确认需求。** 把审核工程师问的问题,一条条回答,补充进你的文档。这样你的需求文档才是「经过压力测试的版本」,可以提交给 AI 执行了。
|
||||
|
||||
**师:** 三步走完,才动手生成。听起来麻烦?我来给你算一笔账——
|
||||
|
||||
【投屏展示对比】
|
||||
|
||||
```
|
||||
路径一(跳过 Plan Mode):
|
||||
说一句话 → AI 做出来 → 不对 → 让 AI 改 → 还不对
|
||||
→ 再改 → 加乱了 → 从头来 → 又不对……(无限循环)
|
||||
|
||||
路径二(Plan Mode 先行):
|
||||
写需求文档 10分钟 → 压力测试 5分钟 → AI 做出来
|
||||
→ 小幅微调 → 完成!
|
||||
```
|
||||
|
||||
**师:** 路径一的「快」是假的快,路径二的「慢」是真的快。
|
||||
|
||||
**师:** 好,现在进入第一步。我给你们一个 Level 0 需求文档模板,里面有 5 个必须填的部分。
|
||||
|
||||
**师:** 现在我们要写一份需求文档。我给你们一个模板,里面有 5 个必须填的部分。
|
||||
【投屏展示 Level 0 需求文档模板,见第5节】
|
||||
|
||||
**师:** 这 5 个部分,每一个都是 AI 「必须知道才能做对」的信息。我们来看第一条——游戏区域:宽多少列、高多少行?
|
||||
**生:** 10×20?
|
||||
**师:** 这是默认值,但你可以改。重点是:你必须明确告诉 AI,否则它自己决定。
|
||||
**师:** 这 5 个部分,每一个都是 AI「必须知道才能做对」的信息。我带你们看一遍每个字段是什么意思——
|
||||
|
||||
**师:** 有一个原则:每条需求,你都要能说出「什么样的结果算做对了」。比如「消行规则:横向填满一整行就消除」——这条我怎么测试?
|
||||
**生:** 把一行填满,看它有没有消掉。
|
||||
**师:** 对,这条可以被测试。好的需求就是这样——写完之后,你知道怎么验收。
|
||||
**师:** 第一部分「游戏区域」——游戏画面有多大?10列×20行是经典俄罗斯方块的标准尺寸,你可以改,也可以保持默认。这条如果不写,AI 可能给你做个 6×6 的迷你版,也可能做个 20×40 的超高版。
|
||||
|
||||
**师:** 第二部分「方块移动规则」——注意这里有一个关键字段:「碰到左右边界」。这条要写清楚。什么意思?就是方块走到最边上了,再按左/右键,会发生什么?
|
||||
|
||||
**生:** (预期:就停下来不动 / 不能再往那边移了)
|
||||
|
||||
**师:** 对。但如果你不写,AI 可能给你做出一个方块可以穿过边界、从另一侧出来的效果——像贪吃蛇穿墙那种。你想要这个效果吗?
|
||||
|
||||
**生:** (预期:不想!/ 哦那要写清楚)
|
||||
|
||||
**师:** 所以每一条都得写。第三部分「消行规则」,这里特别要注意「验收标准」这个概念——每条需求,你都要能说出「什么样的结果算做对了」。
|
||||
|
||||
**师:** 比如「消行规则:横向填满一整行就消除」——我怎么测试这条需求 AI 做没做对?
|
||||
|
||||
**生:** (预期:把一行填满,看它有没有消掉)
|
||||
|
||||
**师:** 对。能被测试的需求,才是写清楚了的需求。反过来,「游戏体验要流畅」——这条能测试吗?
|
||||
|
||||
**生:** (预期:不能……怎么叫流畅?)
|
||||
|
||||
**师:** 对,「流畅」是感受,不是能测试的需求。如果要写,你得改成「初始速度每800毫秒下落一格」——这才是可以测试的。
|
||||
【理解层:建立「需求可测试性」的直觉】
|
||||
|
||||
**学生实践 (Practice): (13分钟)**
|
||||
**学生实践 (Practice): (11分钟)**
|
||||
|
||||
学生独立填写 Level 0 需求文档模板,完成 5 个必填部分。
|
||||
**师:** 现在开始填。5 个部分,把模板里的空格全填上。不确定的地方保持默认值也可以,但不能空着不填。
|
||||
|
||||
> 教师走动观察重点:
|
||||
> - 是否有学生在「移动规则」里只写了「可以左右移动」,但没写「碰到边界怎么处理」?
|
||||
> - 是否有学生在「消行规则」里写了消行但没写「消多行的得分是否不同」?
|
||||
> - 这些漏洞不要直接告诉学生,留给下一步「压力测试」去发现
|
||||
> - 是否有学生把「游戏体验流畅」这类不可测试的需求填进去了?
|
||||
> - 这些漏洞先不要直接告诉学生,留给下一步「压力测试」去发现
|
||||
|
||||
**进度同步 (Checkpoint): (2分钟)**
|
||||
|
||||
**师:** 5个部分都填完的举手。
|
||||
**师:** 好,你觉得你的需求文档,AI 能根据它做出你想要的游戏吗?
|
||||
**生:** 应该可以?
|
||||
**师:** 我们来测试一下你写的文档够不够清楚。
|
||||
|
||||
**师:** 好,先不着急提交。我来问你一个问题:按照你写的需求,一个不认识这个游戏的人拿到这份文档,能不能把一局游戏从头玩到结束——开始游戏、移动方块、消行、游戏结束?这个流程能跑通吗?
|
||||
|
||||
**生:** (预期:能?/ 好像……方块怎么消行没写清楚?/ 游戏结束之后怎么重新开始没写)
|
||||
|
||||
**师:** 对,就检查这一件事——游戏流程能不能跑通。先别想加什么特殊功能,那是后面的事。
|
||||
|
||||
【诊断点:学生的需求是否覆盖了「开始→玩→消行→升级→结束」这个基础流程】【理解层】
|
||||
|
||||
---
|
||||
|
||||
**【分段二:AI 压力测试 → 完善需求文档】(15分钟)**
|
||||
**【分段二:Plan Mode 第二步:需求审核】(20分钟)**
|
||||
|
||||
*本段重点:用 AI 扮演审核工程师对需求做压力测试,区分「审需求」和「审代码」,发现自己看不见的漏洞*
|
||||
|
||||
**预设误概念:**
|
||||
- 误概念 M2:需求文档写完就可以直接提交了
|
||||
- 误概念 M3:AI 生成不对是 AI 的问题
|
||||
- 误概念 M2:需求文档写完就可以直接提交执行了
|
||||
- 误概念 M6:需求审核是在挑代码的问题
|
||||
|
||||
**讲解与演示 (Teach & Demo): (3分钟)**
|
||||
**讲解与演示 (Teach & Demo): (5分钟)**
|
||||
|
||||
**师:** 接下来用一个技巧——让 AI 扮演挑剔的工程师,来「审问」你的需求文档。
|
||||
【投屏展示「压力测试」提示词,见第5节】
|
||||
**师:** 需求文档写完了,进入 Plan Mode 第二步——需求审核。在做这一步之前,我要告诉你们一个非常重要的规则:**审核必须在新窗口进行。**
|
||||
|
||||
**师:** 注意这里:不是让 AI 帮你补全需求,是让 AI 问你问题。这两个完全不同——一个是 AI 替你决定,一个是 AI 帮你发现你自己没想到的地方。
|
||||
**师:** 我来演示一次。
|
||||
【教师用自己的需求文档执行压力测试,展示 AI 提出的问题列表】
|
||||
**师:** 为什么一定要新窗口?因为 AI 有一个特质——它不会主动承认自己的问题。你在同一个窗口里跟它说「帮我看看需求有没有问题」,它会被之前的对话「污染」,倾向于觉得「之前做得挺好的」。这叫**上下文污染**。
|
||||
|
||||
**师:** AI 问了我哪些问题?有哪些是你们的需求文档里也没有答的?
|
||||
**师:** 打个比方——让同一个同学既写作文又给自己改错,他永远改不出大问题。必须换一个没看过你作文的同学来审,他才会发现真正的漏洞。换新窗口,就是换一个「什么都不知道」的新 AI 来看,它没有偏见,才会客观地找出问题。
|
||||
|
||||
**学生实践 (Practice): (10分钟)**
|
||||
**师:** 记住这条规则,以后做任何项目都要遵守:**写需求——一个窗口;审核需求——新窗口;执行生成——再新一个窗口。** 不同阶段,不同窗口,互不干扰。
|
||||
【投屏展示「需求审核」提示词,见第5节】
|
||||
|
||||
**师:** 现在的操作是:复制你的需求文档内容,打开一个全新的 Kimi 对话,把审核提示词粘贴进去。注意——审核的不是代码,是需求本身。审核工程师只负责问问题,不帮你回答,不帮你修改。
|
||||
|
||||
**师:** 我来演示一次。我把自己的需求文档粘贴进去,看 AI 会问什么问题。
|
||||
|
||||
【教师用自己的需求文档执行审核,投屏展示 AI 提出的问题列表】
|
||||
|
||||
**师:** 你们看,AI 问了我这些问题——我们一起来分析分析:
|
||||
|
||||
**师:** 第一个问题:「方块旋转到边界时,如果旋转后的形状超出边界,是直接禁止旋转,还是自动向内移动?」——我的文档里有没有写这条?
|
||||
|
||||
**生:** (看文档)……没有……
|
||||
|
||||
**师:** 对,我没写。这个「踢墙旋转」问题我根本没想到。接着看——
|
||||
|
||||
**师:** 第二个问题:「如果方块落下时速度极快(玩家按了加速键),落地瞬间玩家还没松开方向键,方块会继续移动吗?」——我的文档里呢?
|
||||
|
||||
**生:** 也没写……
|
||||
|
||||
**师:** 再看第三个——「当积木消除多行时,是一行一行消,还是同时消除?视觉效果有没有要求?」——我写了得分,但消除的视觉顺序有没有说清楚?
|
||||
|
||||
**生:** 没说……
|
||||
|
||||
**师:** 最后一个——「游戏结束画面,除了「游戏结束」和得分,还需要「重新开始」按钮吗?」——这条很关键,游戏结束了玩家怎么重玩?
|
||||
|
||||
**生:** 对!要有重新开始。
|
||||
|
||||
**师:** 你看——四个问题,我的文档里一条都没写。这不是 AI 在刁难我,是它在帮我找漏洞。这就是「需求审核」的价值。
|
||||
【识别层:直观感受审核的价值,澄清 M6 误概念——这些问题全是「需求层面」,跟代码无关】
|
||||
|
||||
**学生实践 (Practice): (12分钟)**
|
||||
|
||||
1. 学生把自己的需求文档粘贴进「压力测试」提示词,提交 Kimi
|
||||
2. 把 AI 提出的问题复制到文档里
|
||||
3. 逐条回答——每个问题写上自己的答案,补充进需求文档
|
||||
2. 把 AI 提出的问题复制下来
|
||||
3. 逐条读问题,判断哪些问题「我真的没想到」,哪些「我已经写了但 AI 没看清楚」
|
||||
4. 对「真的没想到」的问题,写上自己的回答,补充进需求文档
|
||||
|
||||
> 教师走动观察:学生是否对某个问题感到惊讶——「这个我真的没想过」是好的信号
|
||||
> 教师走动观察重点:
|
||||
> - 学生是否对某个问题感到惊讶——「这个我真的没想过」是好的信号,主动靠近问「这个问题你打算怎么回答?」
|
||||
> - 学生是否对 AI 的问题感到不耐烦「这些问题没必要」——这是 M6 误概念的表现,需要介入
|
||||
> - 学生是否在逐条认真回答,还是全部跳过直接提交——走过去让学生读出一条来分析
|
||||
|
||||
**进度同步 (Checkpoint): (2分钟)**
|
||||
**进度同步 (Checkpoint): (3分钟)**
|
||||
|
||||
**师:** AI 问了你最意外的是哪个问题?
|
||||
**生:** (分享1-2条)
|
||||
**师:** 如果不补上这条,AI 会自己猜一个答案。那个答案不一定是你想要的。
|
||||
【识别层:建立「每个没说清楚的地方,AI 都会自己决定」的意识】
|
||||
**师:** AI 审核出来,问了你最意外的问题是哪条?谁来说说?
|
||||
|
||||
**生:** (预期 A:「方块落到底部前能不能再移动」我没想到)
|
||||
|
||||
**生:** (预期 B:「游戏结束要不要有重玩按钮」)
|
||||
|
||||
**师:** 很好。这就是 Plan Mode 第二步的价值——你自己看不出来的漏洞,让 AI 来挖。
|
||||
|
||||
【诊断点:学生能否说出「因为 AI 问了这个问题,我补充了 XXX 这条需求」】【理解层】
|
||||
|
||||
**【分支A】若学生能说出具体被触发的漏洞:**
|
||||
**师:** 对,你补充了这条之后,需求文档就更完整了一步。这就叫「需求迭代」——不是一次写完,是一次次补充完善。
|
||||
|
||||
**【分支B】若学生说「AI 问的问题我都已经写了,没有漏洞」:**
|
||||
**师:** 好,那你现在需求文档里,有没有写「方块旋转到边界时怎么处理」?
|
||||
(引导学生发现一个真实存在的漏洞,避免学生误以为文档已经完整)
|
||||
|
||||
**【分支C】若学生觉得「AI 问的这些问题都不重要,不影响游戏」:**
|
||||
**师:** 我们来测试一下——现在先不补充这条,等 AI 做出来,如果这个情况出现,游戏会怎样?
|
||||
(用结果验证的方式让学生自己发现「小漏洞可以让整个游戏崩掉」)
|
||||
|
||||
**师:** 现在进入第三步:回答这些问题,把需求补充完整,然后提交生成。
|
||||
|
||||
---
|
||||
|
||||
**【分段三:提交生成 → 验收 → 结果溯源】(20分钟)**
|
||||
|
||||
*本段重点:建立「按需求逐条验收」的习惯;发现问题时用「结果溯源」找需求根源,而非直接改代码*
|
||||
|
||||
**预设误概念:**
|
||||
- 误概念 M3:生成完了就算完成了,不需要验收
|
||||
- 误概念 M3:结果不对直接改代码
|
||||
|
||||
**讲解与演示 (Teach & Demo): (3分钟)**
|
||||
**讲解与演示 (Teach & Demo): (5分钟)**
|
||||
|
||||
**师:** 需求文档完善好了,现在提交给 Kimi 生成。但是——生成完不等于完成。生成完之后要做一件事:按需求文档逐条验收。
|
||||
|
||||
**师:** 验收方法:你需求文档里写了什么,就测什么。比如你写了「满一行消除」,就在游戏里把一行填满,看它消没消。
|
||||
**师:** 验收方法:你需求文档里写了什么,就测什么。比如你写了「满一行消除」,就在游戏里把一行填满,看它消没消。比如你写了「碰到边界停止移动」,就在游戏里把方块推到最边上,按方向键,看它有没有停。
|
||||
|
||||
**师:** 我来示范验收清单是什么样的。你们跟着我一起来建——
|
||||
|
||||
【投屏在白板/文档上逐条写出来,让学生也在自己文档里写】
|
||||
|
||||
**师:** 第一条——「方块能左右移动」。怎么测?
|
||||
|
||||
**生:** 运行游戏,按左右键,看方块有没有动。
|
||||
|
||||
**师:** 对,动了就打勾,没动就标叉,写上「实际表现:XXX」。第二条——「方块能旋转」。第三条——「方块碰到左边界就停」。第四条——「满一行自动消除」。第五条——「消行后上方积木下移」。
|
||||
|
||||
**师:** 5条验收清单。注意——**每条都要你真的去操作,不能只是「看起来好像对」。** 看起来对,跟测试过是对,是不一样的。
|
||||
|
||||
**师:** 验收清单怎么记录?用三列格式:需求描述 → 实际结果 → 通过/不通过。比如:
|
||||
|
||||
```
|
||||
消行规则:横向填满整行就消除
|
||||
→ 实际测试:把最下一行填满,方块消失了,上方积木下移了
|
||||
→ 通过 ✓
|
||||
|
||||
碰到左边界停止移动
|
||||
→ 实际测试:方块移到最左边,继续按左键……还能继续移出去
|
||||
→ 不通过 ✗ → 需要溯源
|
||||
```
|
||||
|
||||
**师:** 写「不通过」的时候,把你看到的现象写清楚——「方块能移出边界」比「边界有问题」好得多,因为这是下一步溯源的线索。
|
||||
|
||||
【理解层:建立「验收 = 逐条测试」的意识,不是「感觉还行」】
|
||||
|
||||
**师:** 遇到「结果跟预期不一样」时,**先不要让 AI 改代码**。先做一个动作:找回需求文档,找到是哪一句话没说清楚。这叫结果溯源。
|
||||
|
||||
**学生实践 (Practice): (14分钟)**
|
||||
**师:** 我给你们看一个具体例子——假如我测到这条:「方块可以移出右边界,一半跑出屏幕了」。我怎么溯源?
|
||||
|
||||
**师:** 打开需求文档,找「移动规则」这一节,看「碰到左右边界」这条。
|
||||
|
||||
【投屏展示需求文档】
|
||||
|
||||
**师:** 发现了——我写的是「碰到边界停止」,但没说「停止」是指什么——是方块的中心碰到边界停,还是方块的边缘碰到边界停?AI 理解成了方块中心碰到边界才停,所以有半个方块出界了。
|
||||
|
||||
**师:** 这就是溯源的结果:找到了是需求里的哪句话没说清楚。现在怎么修?
|
||||
|
||||
**生:** (预期:把那条需求改得更清楚)
|
||||
|
||||
**师:** 对,把需求改成「方块的任意一侧碰到边界就停止移动,不能超出游戏区域」,然后重新提交生成。不需要动代码,需求说清楚了,AI 会自己重新做对的。
|
||||
【应用层:掌握「结果 → 溯源 → 修改需求 → 重新生成」的完整闭环】
|
||||
|
||||
**学生实践 (Practice): (12分钟)**
|
||||
|
||||
1. 把完善后的需求文档提交 Kimi 生成游戏
|
||||
2. 运行游戏,对照需求文档逐条测试
|
||||
2. 运行游戏,对照刚才建立的 5 条验收清单逐条测试
|
||||
3. 遇到「结果跟预期不一样」时:
|
||||
- 回到需求文档
|
||||
- 找到是哪条需求没说清楚,或者根本没写
|
||||
- 标注「这里有问题,原因:___」
|
||||
- 在文档里标注「这里有问题,原因:___」
|
||||
- 修改需求文档,重新提交生成第二版
|
||||
|
||||
> 教师走动观察重点:
|
||||
> - 学生测试完一条直接跳过 → 走过去问「这条算做对了吗?你的需求是怎么写的?」
|
||||
> - 学生说「不对」但直接让 AI 改代码 → 叫停,引导回到需求文档:「先找找是哪条需求没说清楚」
|
||||
> - 学生测试完一条直接跳过 → 走过去问「这条算做对了吗?你的需求是怎么写的?对比一下」
|
||||
> - 学生说「不对」但直接让 AI 改代码 → 叫停,引导回到需求文档:「先找找是哪条需求没说清楚,找到了再来修改」
|
||||
> - 学生说「全部都对了!」但第一版生成很少能完全通过 → 走过去追问「你测了消行那条了吗?消两行得分对不对?」
|
||||
|
||||
**进度同步 (Checkpoint): (3分钟)**
|
||||
|
||||
**师:** 谁的第二版比第一版有改善?具体改了什么,改完效果怎样?
|
||||
|
||||
【诊断点:学生是否能量化进步——不是「感觉好多了」,而是「之前 XXX 不对,改了需求之后 XXX 对了」】【应用层】
|
||||
|
||||
**【分支A】若学生能说出具体改善:**
|
||||
**师:** 这个进步是因为你把需求文档的 XXX 改得更具体了。记住这个感觉——这就是需求驱动输出。
|
||||
**师:** 你找到了根源,改了需求,结果变对了——这个进步不是运气,是因为你走了溯源流程。记住这个感觉——这就是需求驱动输出。需求写清楚了,AI 就做对了。
|
||||
|
||||
**【分支B】若学生说「改了但没变化」:**
|
||||
**师:** 说明改的地方不是真正的根源。我们再来找——测试结果里还有哪里跟预期不一样?
|
||||
【帮学生重新溯源,找到真正的问题所在】
|
||||
**【分支B】若学生说「改了但没变化,还是不对」:**
|
||||
**师:** 说明改的地方不是真正的根源。我们再来找——你改了哪条需求?游戏里不对的现象是什么?一起来对照看看——你改的那条,跟这个现象有没有直接关系?
|
||||
【帮学生重新溯源,找到真正对应的需求字段】
|
||||
|
||||
**【分支C】若学生说「我全部验收通过了,没有问题」:**
|
||||
**师:** 很厉害!那我问你——你验收的是哪 5 条?能说一遍吗?
|
||||
(让学生逐条念,引导回顾验收过程,确认是真的测试过还是只是「感觉对」)
|
||||
**师:** 如果真的都通过了,你现在已经有一个基础版可玩的俄罗斯方块了!那你可以进下一段——想想你想给它加什么功能,留到下节课来做。
|
||||
|
||||
---
|
||||
|
||||
**【分段四:自由探索 + 下节课铺垫】(10分钟)**
|
||||
|
||||
*本段重点:在基础版可玩的基础上,允许学生做少量视觉微调;同时引导学生开始想下节课的扩展功能。只有基础版已经跑通的学生才进入本段,进度慢的学生继续完善分段三的最小闭环*
|
||||
|
||||
**学生实践 (Practice): (7分钟)**
|
||||
|
||||
游戏基本跑起来了之后,学生自由探索:
|
||||
@@ -235,6 +447,7 @@
|
||||
- 或者调整一下速度和得分规则
|
||||
|
||||
**师:** 你现在手上有一个可以玩的俄罗斯方块了。下节课,你们可以给它加一个你自己想要的功能。现在开始想——你想给你的游戏加什么?
|
||||
|
||||
【诊断点:观察学生自然产生的功能需求,作为下节课教学素材】
|
||||
|
||||
学生说出 1-2 个想加的功能(不要求写清楚,只是发散):
|
||||
@@ -245,26 +458,50 @@
|
||||
**进度同步 (Checkpoint): (3分钟)**
|
||||
|
||||
**师:** 说说你想加什么,一句话就行。
|
||||
|
||||
(每人说一个,教师快速记录在白板/投屏上)
|
||||
|
||||
**师:** 下节课,你们每个人选一个功能,用今天学到的方法——写需求文档、压力测试、生成、验收——把这个功能加进去。
|
||||
|
||||
---
|
||||
|
||||
**第三幕:反思 (Contemplate) — 10分钟** 🤔
|
||||
|
||||
*本幕目标:通过成果展示和互评,让学生复述 Plan Mode 流程,并从「需求层面」评价他人作品,而非只评价游戏好不好玩*
|
||||
|
||||
**【环节】成果展示 (6分钟)**
|
||||
|
||||
**师:** 谁来展示一下你今天做的游戏?
|
||||
**师:** 谁来展示一下你今天做的游戏?不只是展示游戏——要说三件事:
|
||||
|
||||
(邀请 2 名学生展示,展示重点不只是游戏本身,还要说:)
|
||||
- 你的需求文档里加了什么特别的设计?
|
||||
- AI 压力测试问了你什么最意外的问题?
|
||||
- 第一版和第二版有什么不同?
|
||||
(投屏列出三个展示要点)
|
||||
|
||||
```
|
||||
1. 你的需求文档里,有没有加什么你自己特别设计的规则?
|
||||
2. AI 压力测试问了你什么最意外的问题?你最后怎么回答的?
|
||||
3. 你第一版和第二版有什么不同?是溯源到了哪条需求?
|
||||
```
|
||||
|
||||
(邀请 2 名学生上来展示,每人约 2-3 分钟)
|
||||
|
||||
**师:** (第一位展示后)你刚才说需求审核问了你「方块是否能踢墙旋转」——你怎么回答这个问题的?
|
||||
|
||||
**生:** (预期:我写了「不可以踢墙,碰到边界就禁止旋转」)
|
||||
|
||||
**师:** 好,你做了一个具体的设计决定。有没有人觉得另一种方案——可以踢墙——更好玩?
|
||||
|
||||
(让其他学生发表意见,引出「需求可以有不同的设计选择」这个意识)
|
||||
|
||||
**【环节】互评 (4分钟)**
|
||||
|
||||
**师:** 看完 XXX 同学的游戏,你们能不能从他的需求文档里找出一个还没说清楚的地方?
|
||||
【诊断点:学生是否建立了「挑剔工程师」的眼光】
|
||||
**师:** 看完 XXX 同学的游戏,我想让你们不只评价「好不好玩」,而是看他的需求文档——能不能找出还有没说清楚的一个地方?
|
||||
|
||||
【诊断点:学生是否建立了「挑剔工程师」的眼光,能从需求角度评价作品】【应用层】
|
||||
|
||||
**生:** (预期:「他的需求文档里消多行的得分没写具体」/ 「游戏暂停功能没有需求描述」)
|
||||
|
||||
**师:** 很好!这不是在批评他,这是工程师的职业习惯——总是看「还有什么没说清楚」。你刚才找到的这条,就是下节课可以迭代的方向。
|
||||
|
||||
**师:** 互评用一个结构:**一个优点**——需求文档里什么地方写得很具体、很清楚?**一个建议**——需求层面(不是游戏体验),还有什么地方可以更精准?
|
||||
|
||||
**师:** 今天最难描述清楚的规则是什么?你最后是怎么写清楚的?
|
||||
|
||||
@@ -274,16 +511,20 @@
|
||||
|
||||
**【环节】抽象总结 (3分钟)**
|
||||
|
||||
**师:** 今天我们做了什么?
|
||||
**生:** 做了一个俄罗斯方块。
|
||||
**师:** 对,但更重要的是用什么方法做的?
|
||||
**生:** 写了需求文档,然后让 AI 做……
|
||||
**师:** 对。我们今天学的这个方法,有一个名字——工程师思维。工程师做任何事情之前,都先把「要做什么」说清楚。说清楚了,才开始动手。
|
||||
**师:** 今天这个能力,不只是做游戏用——以后让 AI 做任何事,需求越清晰,结果越接近你想要的。
|
||||
**师:** 今天我们用了一个贯穿整个课程的核心流程——Plan Mode。谁来说说 Plan Mode 的三步是什么?
|
||||
|
||||
**生:** (预期:整理需求、审核需求、确认需求……)
|
||||
|
||||
**师:** 对。从今天开始,无论做什么项目,第一步永远是开启 Plan Mode。不管你多想直接动手,都先走这三步。
|
||||
|
||||
**师:** 为什么?因为需求写得越详细,AI 执行越准确。需求写不清楚,执行过程中就会出问题,改来改去反而更慢。
|
||||
|
||||
**师:** 今天做游戏是这样,以后做任何东西——网页、工具、应用——都是同一个流程。Plan Mode 是你跟 AI 合作的基础动作。
|
||||
|
||||
**【环节】下节预告 + 5分钟挑战 (2分钟)**
|
||||
|
||||
**师:** 下节课,每人选一个你想加的功能,用同样的方法——写需求文档、压力测试、生成、验收——把它加进你的俄罗斯方块里。你的游戏会跟任何人的都不一样。
|
||||
|
||||
**师:** 本周5分钟挑战:想好你下节课要加的功能是什么,在脑子里想一想:这个功能如果要写需求文档,最难描述清楚的是哪一条?不用写,想一想就行,下节课说给我听。
|
||||
|
||||
---
|
||||
@@ -321,16 +562,32 @@
|
||||
- 结束后显示:___(游戏结束画面 + 最终得分)
|
||||
```
|
||||
|
||||
**「压力测试」提示词:**
|
||||
**⚠️ 新窗口使用规则(必须遵守):**
|
||||
|
||||
```
|
||||
本课三个阶段的窗口规则:
|
||||
|
||||
第一步:整理需求 → 窗口 A(写需求文档用这个窗口)
|
||||
第二步:需求审核 → 窗口 B(全新窗口,不要用窗口A!)
|
||||
第三步:执行生成 → 窗口 C(全新窗口)
|
||||
|
||||
原因:AI 不会承认自己的问题。在同一个窗口里审核,AI 会受
|
||||
到之前对话的影响(上下文污染),很难客观找出真正的漏洞。
|
||||
换新窗口 = 换一个全新的 AI 来看,没有偏见,更客观。
|
||||
```
|
||||
|
||||
**Plan Mode 第二步:「需求审核」提示词:**
|
||||
|
||||
```
|
||||
我写了一份俄罗斯方块的需求文档,内容如下:
|
||||
|
||||
[粘贴你的需求文档]
|
||||
|
||||
请你扮演一个非常挑剔的工程师,读完这份文档后,
|
||||
找出所有你觉得「没有说清楚」「可以有多种理解」「遇到特殊情况不知道怎么处理」的地方,
|
||||
用问题的形式列出来(每条一行,以问号结尾)。
|
||||
请你扮演一个需求审核工程师,读完这份文档后,
|
||||
找出所有你觉得「没有说清楚」「可以有多种理解」「遇到特殊情况不知道怎么处理」的地方。
|
||||
|
||||
注意:你审核的是需求本身,不是代码。现在还没有任何代码。
|
||||
请用问题的形式列出来(每条一行,以问号结尾)。
|
||||
不要帮我回答这些问题,不要帮我修改文档,只负责提问。
|
||||
```
|
||||
|
||||
@@ -366,19 +623,35 @@
|
||||
|
||||
俄罗斯方块核心数据结构(教师理解用,不讲给学生):游戏核心是一个二维数组代表游戏区域,每个格子存 0(空)或颜色值(有方块)。方块用形状矩阵 + 当前位置表示。学生不需要理解这些,只需要知道「我的需求文档决定了游戏的行为」。
|
||||
|
||||
「踢墙旋转」技术说明(教师理解用):标准俄罗斯方块有「超级旋转系统(SRS)」,允许方块在边界旁旋转时自动内移。让 AI 默认生成的版本通常不包含这个细节。如果学生需求里没写,AI 可能实现的是「碰到边界禁止旋转」或「可以踢墙」两种之一,建议教师在压力测试环节主动提示学生考虑这条规则。
|
||||
|
||||
**常见问题 FAQ:**
|
||||
|
||||
| 问题 | 应对 |
|
||||
|------|------|
|
||||
| 「Kimi 生成的代码打开没有反应」 | 检查文件是否保存为 .html 格式;用浏览器(不是记事本)打开 |
|
||||
| 「方块可以移动出边界」 | 需求文档里「碰到边界怎么处理」这条没写清楚,引导学生溯源并补充 |
|
||||
| 「消行了但积木没有下移」 | 需求文档里消行后的处理没说清楚,引导溯源 |
|
||||
| 「游戏结束了但还能继续操作」 | 需求文档里游戏结束条件对应的处理没写,引导补充「结束后禁止操作」 |
|
||||
| 「方块可以移动出边界」 | 需求文档里「碰到边界怎么处理」这条没写清楚,引导学生溯源并补充「方块任意一侧碰到边界就停止移动,不能超出游戏区域」 |
|
||||
| 「消行了但积木没有下移」 | 需求文档里「消行后上方积木全部下移一行」没有写,或者 AI 理解成消行后积木消失但不下移,引导溯源并在需求里明确写出「消行后上方所有积木整体下移填补空位」 |
|
||||
| 「游戏结束了但还能继续操作」 | 需求文档里游戏结束条件对应的处理没写「结束后禁止玩家操作」,引导补充 |
|
||||
| 「我想直接改代码」 | 「你能看懂这段代码是做什么的吗?如果不能,改了可能引发新的问题。先改需求文档,让 AI 重新生成更安全。」 |
|
||||
| 「AI 审核出来问了很多问题,我不知道怎么回答」 | 先问学生「这些问题里,哪一条你有自己的想法?」——通常能说出 2-3 条,剩下的保持默认值,在需求文档里写「保持默认行为」也是合法的回答 |
|
||||
| 「需求文档写了但 AI 生成的完全没有按需求来」 | 检查提交时有没有把需求文档完整粘贴;也可能是 Kimi 单次生成的结果质量波动,重新提交一次,如果还不行,引导学生检查需求是否有歧义 |
|
||||
| 「我的游戏做好了,同学的还差很多,我要做什么」 | 可以进入分段四自由探索,或者帮教师整理一份「你发现的 AI 自作主张细节」作为下节课的展示素材 |
|
||||
| 「旋转之后方块超出边界怎么回事」 | 这是「踢墙旋转」的问题,引导学生在需求文档里补充「旋转后如超出边界,禁止该次旋转」或「旋转后自动内移一格」,选择哪个方案让学生自己决定 |
|
||||
| 「游戏跑起来了但速度太快,根本玩不了」 | 引导溯源:「你的需求文档里初始速度写的是多少毫秒?」——如果填了 100 毫秒(很快),改成 800 毫秒(默认值);如果没填,这就是漏洞,补充进去 |
|
||||
|
||||
**课堂节奏控制(重要):**
|
||||
|
||||
本课的核心节奏:**先做出基础可玩版本,再做扩展**。教师要守住这条线,不能让学生在第一版都没跑通的情况下就开始想「加炸弹」「加 Boss」。
|
||||
|
||||
具体做法:
|
||||
- 分段三开始前,教师快速巡场确认每个学生的需求文档覆盖了基础流程(开始→移动→消行→结束)
|
||||
- 发现学生需求里加了复杂功能(比如道具、反重力):引导他先注释掉,等基础版跑通再加
|
||||
- 分段四的自由探索,只有基础版已经可玩的学生才能进入
|
||||
|
||||
**课堂风险预案:**
|
||||
- 如果 Kimi 一次生成就完全符合预期:恭喜学生,但仍要做压力测试——「这次 AI 猜对了,你能保证下次加新功能时也能猜对吗?」需求文档的价值在于每次都可预期,不只是修复当次问题。
|
||||
- 如果学生进度差异很大:进度快的学生开始探索「想加什么功能」并尝试写第一版 Level 1 需求文档;进度慢的学生只要完成「生成 + 发现一个问题 + 溯源到需求」这个最小闭环即可。
|
||||
- 如果 Kimi 一次生成就完全符合预期:恭喜学生,但仍要做需求审核——「这次 AI 猜对了,你能保证下次加新功能时也能猜对吗?」
|
||||
- 如果学生进度差异很大:进度快的学生进入分段四自由探索;进度慢的学生只要完成「基础版可玩 + 发现一个需求漏洞 + 修复」这个最小闭环即可,不强求扩展功能。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user