搜索

Scratch 教程

基本介绍

使用 Scratch 3 注册与登录 操作界面 我的东西

图形与声音

绘制造型&背景 编辑音效

程序积木

积木种类 动作 外观 音效 事件 控制 侦测 运算 变数 清单 函数积木

扩充功能

音乐 画笔 视频侦测 文字转语音 翻译

技巧&观念

全域变数、区域变数 深入理解区域变数 控制指定分身 控制所有分身的方法 云端变数 云端变数记录文字 变数串接文字 判断英文字母大小写 中断与停止程序 广播消息并等待 键盘与鼠标 鼠标点击与长按 侦测所有键盘按键 点击隐藏的角色 突破角色尺寸限制 角色与舞台边界 重复积木的等待时间 音乐暂停与继续播放 使用造型名称建立清单 使用造型代替变数 文字转清单 清单合并为文字 判断两个清单是否相同 复制清单、反转清单 清单数字排序 清单最大值最小值

入门范例

键盘控制猫咪 指向中间的箭头 水果音乐钢琴 猫咪的影分身之术 猫咪的细胞分裂 螃蟹跑来跑去 吃水果 摸蝴蝶 小狗追棒球 鱼儿水中游 小鸟往前飞 舞棍阿伯 小时钟 摇骰子 转动的眼球 抽奖轮盘 大乐透电脑选号 卡牌抽签 ( 20 中 1 ) 移动到边缘切换场景 人物依序跳舞 ( 广播 ) 按钮控制猫咪 ( 广播 )

进阶范例

猫咪跑步 ( 连续背景 ) 猫咪跑步 ( 超长背景 ) 大型数字 ( 图形数字 ) 拖拉怪兽碰撞墙壁 键盘钢琴 ( 记录音符 ) 中文字逐字稿 英文字逐字稿 计算机 1 ( 显示数字 ) 计算机 2 ( 加减乘除 ) 云端聊天室 音乐播放器 推猫咪 ( 视频侦测 ) 围捕小鱼 ( 视频侦测 ) 戳泡泡 ( 视频侦测 )

视觉特效范例

视差效果 水中吐泡泡 雪花随风飘 键盘钢琴 ( 音符动画 ) 无限循环画中画 水底探照灯 狙击望远镜 ( 两倍变焦 ) 猫咪万花筒 仙女棒 ( 光迹效果 ) 骇客任务背景特效 放烟火 1 ( 往上发射 ) 放烟火 2 ( 爆炸效果 )

绘图范例

镜射画图 ( 对称图形 ) 小画家 ( 舞台上画图 ) 记录画图轨迹 绘制圆形 绘制椭圆形 绘制立方体 ( 会动 ) 绘制正多边形 绘制正多角星形 ( 单纯 ) 绘制正多角星形 ( 多线 ) 绘制抛物线 绘制折线图 绘制圆饼图 绘制圆饼图 ( 指示线 ) 蜘蛛结网 ( 八边形网 ) 绘制舞台方格 绘制正弦波形 ( sin ) 正弦波毛毛虫动画 显示声波图形

物理&模拟范例

钟摆运动 简单磁铁效果 两个磁铁的磁力线 立体空间 ( 三度空间 ) 循迹移动 抛物线发射炮弹 地球绕着太阳转 弹跳的篮球 电风扇 ( 控制强度 ) 拉不走的弹力球 惯性移动 ( 鼠标 ) 惯性移动 ( 键盘 )

入门游戏范例

猴子接香蕉 打地鼠 打地鼠 ( 体感视频侦测 ) 刮刮乐 吹风机吹头发 太空狗闪躲陨石 九九乘法测验 英文单字测验 钓鱼游戏 拍西瓜 ( 储存最高分 ) 宝可梦猜猜我是谁 ( 基本 ) 形状配对拼图 台湾地图拼图 英文打字机 英文打字机 ( 判断大小写 ) 射击外星人 猜数字 ( 猜大小 ) 猜数字 ( 几 A 几 B ) 连连看 ( 产生器 ) 连连看

进阶游戏范例

青蛙过河 青蛙过马路 反弹球 ( 乒乓球 ) 打砖块 狙击气球 ( 两倍变焦 ) Flappy Bird Flappy Bird ( 声控版 ) 走迷宫 ( 基本 ) 大型迷宫 ( 键盘控制 ) 大型迷宫 ( 鼠标控制 ) 翻卡记忆游戏 翻卡记忆游戏 ( 改良版 ) 井字棋 ( 圈圈叉叉 ) 九宫格拼图 九宫格拼图 ( 改良版 ) 音阶记忆 贪吃蛇 ( 分身版 ) 贪吃蛇 ( 画笔版 ) 小鸡下楼梯 拉霸机

团康游戏范例

摇骰子 ( 1~3 个 ) 比手画脚 ( 猜动物 ) 音乐传球游戏 大声公 ( 比赛谁的气长 ) 抽签 ( 可调整中签数量 ) 转盘指针 ( 指到谁就当鬼 ) 倒数计时器 ( 基本版 ) 倒数计时器 ( 大数字版 )

游戏设计技巧

角色 ( 地上移动 ) 角色 ( 蹲下、左右转 ) 角色 ( 跳耀、两段跳 ) 角色 ( 墙壁、爬墙 ) 地图 ( 清单转换 ) 地图 ( 二维数组 ) 地图 ( 控制移动 ) 地图 ( 墙壁碰撞侦测 ) 地图 ( 吃东西侦测 ) 俄罗斯方块 ( 角色与背景 ) 俄罗斯方块 ( 移动与碰撞 ) 俄罗斯方块 ( 放置方块 ) 俄罗斯方块 ( 消除完成方块 ) 俄罗斯方块 ( 下个形状 )

侦测所有键盘按键

虽然 Scratch 可以侦测键盘按键,但如果要多个的键盘按键,就得使用大量的程序积木,造成冗长且不容易维护的程序码,这篇教学会实作侦测键盘按键的方式,除了可以让 Scrtatch 侦测空白、上下左右键与数字和英文字母,更能够侦测 Enter 键与所有的特殊符号 ( 例如 !、@、+、- 等 )。

基本侦测键盘按键参考:按下与放开键盘

快速导览:

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 )

建立空白角色和区域变数

首先使用“绘画”功能建立一个新的角色,将角色命名为“Detector”,这个角色是一个“空”的角色,只需要一个“空白”的造型,主要负责侦测按下了哪些键盘按键,按下按键后就会发送广播消息。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 建立空白角色

从左侧积木清单里建立两个区域变数 $_n 和 $_string,勾选“仅适用当前角色”,由于是区域变数特性,别的角色中不会出现这两个变数,就不会造成干扰。

延伸参考:深入理解“区域变数”

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 将这两个变数建立为区域变数

从左侧积木清单里建立一个清单 $_list,勾选“仅适用当前角色”,将这清单建立为区域变数。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 将这清单建立为区域变数

建立按键清单

将 $_string 的内容填入“键盘所有的按键数值”,包含按下 shift 才会出现的特殊符号,例如“%、!、$”等,接着运用重复循环的方式,将 $_string 里的每一个文字储存到 $_list 清单里,将文字转换成清单,这个清单主要作为“按下键盘时,找出按下哪个按键”的按键清单。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 将文字转换成清单

侦测键盘按键函数

建立一个名为“keyCode”的全域变数,勾选“适用于所有角色”,这个变数负责会纪录按下了哪个按键,再由其他的角色读取数值。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 建立一个全域变数

建立名为“keyboard”的函数,勾选“执行完毕再更新画面”。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 执行完毕再更新画面

编辑韩式内容,一开始将 keyCode 设为“enter”,接着依序取出 $_list 清单里的每个项目进行判断,如果判断按下了哪个按键,就将 keyCode 的数值设为该按键的名称,也就是判断成功当下的“清单的项目”。

由于按下 Enter 键不会回传任何数值,所以一开始先将 keyCode 的内容设为 enter,如果后续的过程没有修改 keyCode,表示按下的是 Enter 键。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 依序取出清单里的每个项目进行判断

因为空白和上下左右键也没有回传值,但因为 Scratch 本身提供了判断积木,直接使用内建的积木进行判断,判断按下空白键时将 keyCode 的内容设为 enter,上下左右分别设定为 up、down、left 和 right。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 直接使用内建的积木进行判断

使用广播,传送键盘按键信号

修改原本点击绿旗的程序,在下方加入重复无限次积木,使用“等待”积木等待按下按键后,执行 keyCode 函数,函数执行后发送广播,广播内容则会使用“keyCode 的数值”或“keydown”作为广播信号,最后等待放开键盘按键后,再进行下一次侦测。

两次等待的做法可以避免按下键盘时重复侦测。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 直接使用内建的积木进行判断

使用其他角色测试

加入一个新角色,设定角色收到“keydown”广播信号时,讲出 keyCode 的数值,执行后按压键盘按键,就会看见角色讲出对应的按键值。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 使用其他角色测试

因为按下按键时也会发送“按键数值”,所以接收广播时也能透过“新的消息”输入指定数值,就能实现“收到什么信号就做什么事”的效果,下方范例会控制猫咪的上下左右移动。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 使用其他角色测试

完成效果

完成后,点击绿旗,按下键盘按键,就会看见猫咪说出按键内容 ( 要注意只能使用“英文输入法” )。

Scratch 教学 - 侦测键盘按键 ( Enter 键、英文数字、特殊符号 ) - 使用其他角色测试

范例解答

范例解答:侦测键盘按键 ( Enter 键、英文数字、特殊符号 )

意见反馈

微信二维码 微信扫码关注 抖音二维码 抖音扫码关注