从积木到创意:Scratch 进阶学什么
当孩子已经能熟练用 Scratch 做出小猫追球、画正方形这类基础项目之后,下一步该学什么?答案不是急着转 Python,而是把 Scratch 的进阶功能玩透。Scratch 还有很多强大的积木没被用到:广播、克隆、变量、自定义积木、音乐编辑器。掌握这些之后,孩子能做出的作品复杂度会直接上一个台阶。
进阶阶段的核心目标是:从"跟着教程做"变成"自己想做什么就做什么"。孩子开始有自己的想法——想做一个动画短片、想做一个音乐演奏器、想做一个有多个敌人的射击游戏——然后需要找到对应的积木来实现它。这个"想法驱动学习"的过程,比任何教程都有效。
Scratch 进阶的三个标志:会用广播让角色协作、会用克隆批量生成对象、会用音乐积木做互动声音。
- 广播角色之间发消息的机制,实现事件驱动的协作。
- 克隆复制一个角色的多个副本,用于敌人、子弹等批量对象。
- 音乐积木指定音符和节拍,用代码演奏旋律。
- 变量存储分数、生命值等需要随程序变化的数据。
广播机制:让角色之间说话
前面做的项目里,每个角色各干各的,彼此不交流。但很多好玩的项目需要角色之间配合:小猫说一句话,小狗回应一句;主角碰了开关,门就打开。这种"你做完一件事,通知我接着做"的机制,就是广播。
广播的用法很简单:在事件类积木里找到"广播消息1",点下拉可以新建一个消息,比如叫"开始对话"。然后在另一个角色的脚本里加上"当接收到开始对话",这个角色就会在消息发出后自动执行对应的脚本。
// 角色 A(小猫)的脚本
当绿旗被点击
等待 1 秒
广播 "开始对话"
说 "你好,小狗!" 2 秒
// 角色 B(小狗)的脚本
当接收到 "开始对话"
说 "嗨,小猫!" 2 秒
点绿旗之后:等 1 秒,小猫发出"开始对话"广播,小猫说"你好",同时小狗收到消息说"嗨"。两个角色的脚本几乎是同时开始执行的——这就是并发的雏形。
广播还有一个变体:"广播开始对话并等待"。用这个的话,发广播的角色会停下来等所有接收方执行完,再继续往下走。这个"等待"功能在做有严格顺序要求的动画时特别有用。
用广播做对话动画
有了广播,我们可以做一个完整的对话小动画。舞台上放小猫和小狗两个角色,背景换成公园。脚本逻辑是:小猫先走过来,说一句话;然后小狗走过来,回应一句;最后两个角色一起跳个舞。
把整个流程拆成几个广播消息:"出场""对话开始""回应""跳舞结束"。每个广播触发一段动画:
| 广播消息 | 触发的动作 |
|---|---|
| 出场 | 小猫从左边走到中间,小狗从右边走到中间 |
| 对话开始 | 小猫说"今天天气真好",小狗点头 |
| 回应 | 小狗说"是啊,一起玩吧",小猫转圈 |
| 跳舞结束 | 两个角色一起重复摇摆动作 5 次 |
这种用广播把大动作拆成阶段的做法,和电影导演分镜头是一个思路。孩子在做的时候会学会一个重要的工程概念:用事件解耦。小猫不需要知道小狗会说什么,它只需要发出"该你了"这个信号,小狗自己决定怎么回应。
克隆技术:一个角色变出一群
做打飞机游戏的时候,你不可能手动拖出 20 个敌人角色。Scratch 的"克隆"积木就是干这个的:先建一个敌人角色,然后用"克隆自己"积木在程序运行时复制出多个一模一样的副本。
// 敌人角色脚本
当绿旗被点击
重复执行 5 次
等待 1 秒
克隆自己
当作为克隆体启动时
重复执行
移动 5 步
如果碰到底部边缘就删除此克隆体
这段脚本会每隔一秒生成一个新敌人,敌人从舞台顶部往下飞,飞出底部就自动消失。你只需要建一个敌人角色,就能在舞台上看到源源不断的敌人往下掉。
克隆体和原角色共享同一套脚本,但每个克隆体是独立的——它们的位置、方向、大小都可以不一样。用"将我的坐标设为随机位置"可以让每次克隆出来的敌人出现在不同的水平位置,看起来就像从四面八方飞过来。
- 启动事件每个克隆体从"当作为克隆体启动时"开始执行脚本。
- 删除用"删除此克隆体"回收不需要的副本,避免内存堆积。
- 计数用变量记录当前存活的克隆体数量,做生命值或关卡判断。
音乐积木:用代码弹出旋律
Scratch 的声音分类里有一组专门的音乐积木:选择一种乐器(钢琴、吉他、小提琴等),然后指定音名(C4、D4、E4 这些)和节拍数,就能播放出一个音符。把一串音符按顺序排好,就是一首曲子。
当绿旗被点击
将乐器设为 钢琴
演奏音符 60 拍数 0.5
演奏音符 62 拍数 0.5
演奏音符 64 拍数 0.5
演奏音符 65 拍数 0.5
演奏音符 67 拍数 1
数字 60 对应中央 C(也就是 Do),62 是 Re,64 是 Mi,65 是 Fa,67 是 Sol。上面这段脚本弹的就是 Do-Re-Mi-Fa-Sol,一个简单的上行音阶。孩子可以自己改数字,弹自己喜欢的旋律。
更进阶的玩法是把音乐和游戏交互结合:比如点到一个角色就弹一个音符,做一个"音乐地板"——踩上去就发出不同的声音。这种项目孩子做出来会特别有成就感,因为它把"写代码"变成了"演奏音乐"。
综合项目:互动小剧场
现在把前面学的广播、克隆、音乐积木组合起来,做一个完整的互动小剧场。故事设定:舞台上有一只小猫在开音乐会,观众(克隆的小球)从两边入场,点一下观众会发出一个音符。
第一步,建三个角色:小猫(舞台中央唱歌)、观众小球(克隆生成)、音符图标(点击后显示)。第二步,写小猫脚本:循环播放音乐音阶,同时广播"欢迎观众"。第三步,写观众脚本:收到广播后克隆 10 个小球,从不同位置飞入舞台。第四步,写音符交互:点到任何一个观众小球,它就变大一下并播放对应音符。
// 小猫脚本
当绿旗被点击
重复执行
演奏音符 60 拍数 0.5
广播 "欢迎观众"
演奏音符 64 拍数 0.5
这个项目把四种进阶积木都用了:广播负责角色协作,克隆负责批量生成观众,音乐负责旋律播放,交互侦测负责点击反馈。做完之后孩子可以把它分享到 Scratch 社区,让别人点他的观众小球听音乐。
在做这个项目的过程中,孩子会自然地遇到很多真实工程问题:克隆太多了舞台会卡怎么办?音符叠加在一起太吵怎么控制音量?背景音乐和点击音效怎么错开?这些问题没有标准答案,需要孩子自己试、自己调——这就是创意工坊的精髓。
创意工坊:把作品做到可分享
一个好作品不是做完就完事,还要让别人看得懂、玩得明白。Scratch 社区里受欢迎的项目通常有几个共同点:开头有说明、操作有提示、难度有梯度。
- 加一个开场画面:点绿旗后先显示"按空格键开始",不要一上来就自动跑。
- 写清楚操作说明:在舞台角落用一个角色显示"点小猫开始唱歌"或"用方向键移动"。
- 做一个结束画面:游戏结束时显示"再来一局"按钮,点了重新开始。
- 邀请别人改编:在作品说明里写"你可以加一个小狗角色来对唱",引导其他孩子二次创作。
当孩子开始关注"别人玩我的作品是什么感受"的时候,他就已经在做产品设计了。这种用户意识,比任何编程语法都珍贵。
Scratch 的终点不是学会 Scratch,而是用 Scratch 把脑子里的想法变成别人能玩的作品。这之后再学 Python,孩子会带着"我要做什么"的目的去学,而不是"我要学语法"。