1.4 Scratch指令系统概述

计算机程序是由一组控制计算机设备工作的指令组成,它用某种程序设计语言编写。Scratch将控制计算机工作的指令封装成140多个图形化的积木(Block),每个积木具有一个特定的功能,并且用独特的形状和颜色进行区分,所有这些积木构成了Scratch编程语言的指令系统。在Scratch编辑器提供的可视化编程环境中,按照一定的逻辑关系,将不同的指令积木像拼图一样拼接在一起就能创建控制计算机工作的脚本(Script)。这样的脚本与舞台、角色和声音等资源一起构成了Scratch项目(Project)。

1.4.1 积木的形状特点

在Scratch中,这些积木被设计成不同形状的图形,有的带有向下的凸起,有的带有向上的凹口,还有的积木带有圆形、方形或六边形等不同形状的小孔。这样的设计能够防止对积木进行无意义的拼接,保证不同的积木能够被正确地拼接在一起。正因为如此,Scratch这类图形化编程语言能够避免其他编程语言中常见的语法错误或非法操作,从而使编程者能够将精力集中在思考编程逻辑上。

按照积木的形状特点,可以将这些积木划分为帽子积木、堆叠积木和报告积木。

1.帽子积木(Hat Blocks)

帽子积木的特征是顶部有一个弧形拱顶,底部有一个朝下的凸起。这使得这类积木的上方无法拼接其他积木,而它下方的凸起处可以拼接其他积木。因此,这类积木作为一个Scratch脚本的第一个积木,后面再拼接其他类型的积木。这类积木位于一组积木的顶部,因为看上去像一顶帽子而得名。在Scratch中,这类积木的数量屈指可数。

Scratch将帽子积木设计为事件驱动的,每一个该类型的积木能够接收一个特定的事件,从而触发一组积木构成的脚本被执行。例如,当用户单击Scratch舞台右上方的按钮时,就会产生一个“当被点击”的事件。这时图1-4-1中的第一个积木就能接收到这个事件,并触发以这个积木开始的一个脚本被执行。类似地,当舞台上的角色被单击时,或是当键盘上的空格键被按下时,所产生的事件就会分别被图1-4-1中的后面两个积木接收,并触发以它们作为开始的一个脚本被执行。因此,这类积木也被称为启动积木。

图1-4-1 几个帽子积木

2.堆叠积木(Stack Blocks)

堆叠积木的特征是顶部有一个凹口,表示这类积木可以拼接在其他积木的凸起位置。另外,如果在一个积木的底部或是中间区域有一个或多个凸起,则表示可以把其他积木拼接在它的凸起位置;如果一个积木的底部是平直的,则表示它无法拼接其他积木,这意味着一个脚本的结束或是整个项目的结束。在Scratch中,这类积木的数量是最多的,图1-4-2中列举了几种不同形状的堆叠积木。

图1-4-2 几个堆叠积木

在图1-4-2中,第一个积木有1个凸起,表示它有1个拼接位置;第二个积木有2个凸起,表示它有2个拼接位置;第三个积木有3个凸起,表示它有3个拼接位置;而第四个积木没有凸起,表示它不能拼接其他积木。为便于理解,我们在这些积木的凸起位置拼接上其他积木,效果如图1-4-3所示。

图1-4-3 一些堆叠积木拼接其他积木

3.报告积木(Reporter Blocks)

报告积木的特征是顶部和底部都是平直的,左右两端是圆角或尖角。这类积木数量较多,主要集中于Scratch编辑器的侦测和运算类别的指令面板中。如图1-4-4所示的是一些报告积木。

图1-4-4 一些报告积木

报告积木没有凹口,意味着它无法拼接在其他积木之后;它也没有凸起,意味着其他积木也无法与它拼接。但是,这类积木可以嵌入到其他带有圆形、方形或六边形等不同形状小孔的积木之中。因此,报告积木需要与其他积木配合使用才能拼接到脚本中。如图1-4-5所示,将侦测类别下的报告积木“鼠标键被按下?”与控制类别下的堆叠积木“如果…那么”配合使用,从而实现检测鼠标键是否被按下的功能,之后这两个嵌套在一起的积木组合就能够被加入到一个脚本中。

有的报告积木自身也具有不同形状的小孔,意味着其他积木也能嵌入它内部,而且还可以相互嵌套。例如,在构建数学表达式时,可以用加、减、乘、除等运算类积木嵌套在一起组成复杂的表达式。如图1-4-6所示,将数学表达式“(((1+2)×3)-4)÷5”使用Scratch的运算类积木进行表示。

图1-4-5 报告积木嵌入到堆叠积木中使用

图1-4-6 用运算积木描述数学表达式

报告积木在被执行之后会返回一个值,这个值可以作为其他积木的参数(专业术语)。如图1-4-5所示,当报告积木“鼠标键被按下?”被执行后,该积木会返回一个值(在这里是一个布尔值:true或false),这个值会被传递到堆叠积木“如果…那么”的六边形小孔内作为参数使用。因此,也可以将报告积木称为参数积木,以方便记忆它的作用。

1.4.2 积木的操作方法

在Scratch编辑器中创建脚本时,以鼠标操作为主,键盘操作为辅。从指令面板中把积木拖到脚本区,像玩拼图一样将不同的积木拼接在一起就能创建脚本。为此你需要掌握积木的拼接、拖动、分离、复制、删除、恢复和执行等操作。

1.积木的拼接、拖动和分离

拼接积木和分离积木是最基本的操作,初学者需要重复练习并尽快掌握。

在脚本区中拼接积木时,当把一个积木拖动并靠近目标积木时,在目标积木边缘或小孔内就会出现白色线条或白色积木图形,这表示该位置允许拼接,这时松开鼠标键就能把该积木与目标积木拼接在一起。图1-4-7展示的是不同积木在靠近目标积木时出现的可拼接提示。初学者可以自行练习,很快就能熟练掌握。

图1-4-7 不同情况的拼接提示

在脚本区中将一个脚本移动到另一个空白位置,可以将鼠标指针放在这个脚本中最顶层的积木上,拖动这个最顶层的积木,就能把整个脚本拖动到其他位置。

如果拖动的是一个脚本中间的某个积木,就会把从该积木开始往下的所有积木一起拖走,从而达到分离脚本的目的。

2.积木的复制、删除和恢复

在脚本区中的某个积木上右击调出右键菜单,通过菜单中的“复制”和“删除”命令进行复制积木和删除积木的操作,如图1-4-8所示。

如果错误删除某个积木或脚本,可以使用“编辑”菜单中的“撤销删除”命令来恢复被删除的内容。但是被删除的内容不会回到原来位置,而是出现在脚本区的左上方位置。

3.积木的执行

通过单击舞台右上方的按钮,可以运行一个Scratch项目。但在调试程序时,可能只需要运行一个脚本或者几个拼接在一起的积木组合,这时只要在某个积木上单击就可以让它们运行。运行中的脚本边缘会出现亮黄色的发光效果,如图1-4-9所示。如果再次单击这个脚本中的某个积木,运行的脚本就会停止。

图1-4-8 复制和删除积木的菜单项

图1-4-9 运行中的脚本或单个积木

其实,不管是在脚本区,还是在指令区,在单独的一个积木上单击,也能让这个积木运行。由于积木的执行速度很快,发光效果通常会一闪而过。

1.4.3 积木的功能类别

在Scratch中,按照功能把所有的指令积木划分为10个类别,它们分别是:运动、外观、声音、画笔、数据、事件、控制、侦测、运算和更多积木。每种类别有一种代表颜色,使创建的脚本显得色彩斑斓,这样的设计有助于提高编程效率。通过积木的颜色,Scratch编程者能判断积木的功能类别,从而快速地找到这类积木在指令面板中的位置。这10个类别的积木能实现的功能简述如下。

1.运动

运动积木是蓝色的,它提供控制角色在舞台上进行运动的一些指令积木。通过这些积木,可以控制角色的运动方向、位置、距离、旋转角度和旋转模式,以及获取角色的当前位置和方向等。

2.外观

外观积木是紫色的,它提供修改角色和舞台外观的一些指令积木。通过这些积木,可以切换角色的造型和舞台背景,修改角色的大小和层次,控制角色在舞台上是否可见,以及设置角色和舞台的特效,还可以获取角色的造型编号和大小,等等。此外,它还提供漫画风格的气泡框,让角色以“说”和“想”的形式显示信息。

3.声音

声音积木是淡紫色的,它提供播放音乐、弹奏鼓声和演奏乐器的一些指令积木。通过这些积木,可以播放MP3、WAV等格式的音频文件,可以模拟多种鼓声的弹奏,可以模拟钢琴、吉他和长笛等多种乐器的演奏。此外,还可以控制音量和演奏速度。

4.画笔

画笔积木是深绿色的,它提供在舞台上绘图的一些指令积木。通过这些积木,并在运动积木的配合下,可以控制一支虚拟的画笔在舞台上绘制大小、颜色和亮度不同的线条、图形和图案等。此外,还提供图章功能,可以把角色的图像复制到舞台上。

5.数据

数据类别下提供一些操作变量和列表的指令积木,变量积木是橙色的,列表积木是深橙色的。

6.事件

事件积木是棕色的,它提供一些指令积木用来接收Scratch发送的事件(如键盘按键被按下、角色被单击、舞台背景被切换等),还提供一些积木用于实现在角色之间广播和接收消息的功能。

7.控制

控制积木是金黄色的,它提供控制程序流程的一些指令积木。通过这些积木,可以编写选择结构和循环结构的程序,可以暂停或停止脚本的执行。此外,还提供一些积木用于实现克隆功能,它能够动态地创建角色的副本,极大地简化编程。

8.侦测

侦测积木是淡蓝色的,它提供一些指令积木用于实现侦测角色碰撞、检测键盘和鼠标状态、侦测摄像头视频和检测时间等功能,还能够获取角色的坐标、大小和方向等信息。

9.运算

运算积木是绿色的,它提供一些指令积木用于进行算术运算、关系运算、逻辑运算、三角函数运算和求余取整等运算,还提供一些指令积木用于处理字符串、生成随机数等。

10.更多积木

在“更多积木”类别下,提供创建自定义积木的功能,可以用若干个积木组合在一起封装为一个新的积木,实现类似其他编程语言中自定义函数的功能。这类自定义积木是深紫色的。

1.4.4 快速查看积木说明

Scratch编辑器的帮助系统提供所有积木的详细说明文档,我们可以随时查看某个积木的使用说明。如图1-4-10所示,有两种方法可以快速查看积木说明。

图1-4-10 查看指令积木的说明文档

(1)在工具栏中提供快速访问积木说明的功能按钮(问号图标),它的使用方法是:先单击工具栏中的问号按钮❶,使鼠标指针变成问号图标,再单击需要查看的积木❷,之后在帮助系统的窗口中就会显示这个积木的使用说明❸。

(2)在某个积木上右击,在弹出的菜单中选择“帮助”命令❹,也能立即查看该积木的使用说明。