使用 Scratch 编程
作为一名在家教育的家长,我非常喜欢教育软件,过去也写过不少关于各种程序的文章。但是,作为一名程序员,我也非常喜欢任何能让年幼的孩子更容易接触到计算机编程的程序。因此,当我听说 Scratch 时,我非常兴奋。(谢谢,Mitch)
Scratch 允许用户通过拖拽和连接简单的编程指令来编写程序。编程指令类似于拼图碎片,并且只会以语义上有意义的方式“拼合”在一起。例如,您不能将“开始”指令放在“If”指令内部。指令碎片也根据它们代表的指令类型进行颜色编码;所有控制结构碎片都是黄色的,而所有运动碎片都是蓝色的。用户创建的程序控制一个或多个对象,或称作角色(sprites)。从程序员的角度来看,正如我们很快将看到的,Scratch 拥有一套非常完善的指令集。
Scratch 自带了许多示例项目,这些项目相当广泛地展示了 Scratch 可以实现的功能。
一旦用户创建了一个他们喜欢的程序,他们就可以通过 Scratch Web Community 在 scratch.mit.edu 上与他人分享他们的项目。在我写这篇文章时,已经有近 110 万个项目可供下载!其中一些项目显然是年轻用户完成的,非常简单。另一些则相当复杂。
广义上讲,Scratch 项目分为 3 个不同的类别。一些项目仅仅是在 Scratch 中播放的动画或故事。Scratch 自带的示例动画之一讲述了一个小女孩的故事,她对垃圾邮件感到非常沮丧,以至于她打电话给她的国会议员,建议制定一项法律来禁止发送垃圾邮件。国会议员提出了这项法律,众议院签署了它。参议院对其进行了修改并将其发送给总统。这只是一个有趣的小故事。显然,这里不需要任何深入的编程。
交互式艺术项目范围从万花筒到绘画程序再到装扮游戏。“万花筒”示例项目允许用户使用箭头键在画布上移动光标。然后,程序会复制用户的动作以创建有趣的图案。
然后是游戏项目。大约一个小时,我匆匆制作了一个简单的 Pong 程序。其他人则“匆匆制作”了 3D 战斗飞行模拟器!我发现的一个更简单但引人入胜的游戏是一个虚拟障碍赛,您可以用鼠标引导一个小绿球绕过障碍物。这是一个非常简单的游戏,但我花在玩它的时间比我愿意承认的还要多。
Scratch 用户界面直观,但可能有点局限性。(图 1。)界面清晰地分为 3 列。左列您可以称之为“调色板”,其中包含用户可以从中选择以构建程序的各种指令。在调色板的顶部是一组按钮,用于选择要在下面显示的指令类型。在这里您可以看到“运动”指令已被选中。
界面的右列分为两个部分。顶部部分是“舞台”,所有动作都在这里发生。底部部分包含一个或多个在程序中使用的角色。通过选择一个角色,用户可以编写程序来控制角色的动作。
中间列是实际进行编程的地方。用户只需将编程指令从调色板拖到中间列,并将它们连接在一起,以构建一个或多个控制当前角色的程序,当前角色显示在顶部。(图 2。)当前角色也可以根据需要调整大小和旋转。
正如我之前暗示的那样,每个角色都可以有一个或多个程序来控制其行为。通常,您会有一个在程序启动时运行的主程序块。您还可以有一个指令块,该指令块在用户按下向左箭头键时运行;此代码块可能会将角色向左移动,或者可能会导致角色“发射”武器。其他代码块可能会在角色收到来自另一个代码块或另一个角色的特定消息时执行。我的 Pong 游戏有一个消息处理程序,用于响应每当有玩家得分时广播的“得分”消息。消息处理程序只是简单地将球重置到场地中央并使其再次移动。但是通过运行多个代码块,无论是作为主程序块、键盘处理程序还是消息处理程序,您都可以编写非常复杂的程序。
Scratch 包括几个不同类别的几种不同的角色。但是,用户也可以导入他们自己的图形或使用内置的角色编辑器。内置的角色编辑器就像大多数基于像素的绘画程序一样。用户可以选择颜色和工具,并可以根据需要旋转和调整给定角色的大小。
最后,每个角色可以有多个“造型”。造型本质上是给定角色的不同版本,可能具有不同的姿势,或者应用了“增强能力”效果。通过切换造型,用户可以创建看起来会走路的角色、穿着盔甲的角色或在移动时看起来会旋转的球。角色的造型可以从程序内部激活。
除了同时拥有多个角色外,Scratch 还允许您从程序内部更改背景。例如,此功能可用于创建游戏的不同关卡或故事的不同场景。可以在 Scratch 内部以与创建角色相同的方式创建不同的背景。
正如您所看到的,在我们甚至讨论用户可用的编程机构之前,还有很多内容要讨论。如前所述,编程机构分为八个类别。“运动”指令以不同的方式移动和旋转角色。在“外观”类别中,我们找到了用于更改角色的造型和颜色的指令。我们还找到了允许角色向用户“说”和“想”消息的指令。在声音类别中,我们找到了用于播放鼓声以及 128 种不同乐器和音效的指令。画笔机构使用户能够在线条下进行程序控制绘图,很像 Logo 编程语言。控制类别是我们找到控制结构指令的地方,例如 while 循环和 if 语句。感应指令允许用户的程序测试角色或鼠标指针的位置。在“运算符”类别中,我们找到了可以组合形成复杂表达式的算术、布尔和字符串运算符。最后,“变量”指令允许用户创建、显示和操作标量和列表变量。
鉴于 Scratch 为用户提供的环境的强大功能,您可以想象人们渴望分享他们的作品。Scratch 允许用户通过 Scratch 网站分享它们,但还有一个 Java 解释器,允许用户将他们的作品嵌入到网页中。我还从论坛上听说,有一个 Windows 编译器可以将 Scratch 项目转换为独立的exe可执行文件。事实上,如果您访问 Scratch 项目网页,您实际上可以在下载项目之前试用它。
我对 Scratch 程序只有一个建议和一个批评。对我来说,编程区域太小了。我很容易就填满了它,并且不得不滚动才能看到除最简单的程序之外的任何程序的整体情况。最后,如果 Scratch 能够拥有哪怕是一个简单的网络堆栈,那就真的太棒了。网络堆栈将为 Scratch 编程开辟一个全新的机会世界。
自从决定写这篇文章以来,我花了很多时间玩 Scratch,包括玩别人的项目和我自己的项目。我仍然在思考用它来做有趣的事情以及将 Scratch 融入我们的家庭教育课程的方法。这是一个你真的需要去了解的程序。