Scratch编程入门与算法进阶
上QQ阅读APP看书,第一时间看更新

第1章 角色的控制

零编程基础的孩子独自学习使用Scratch软件可能会有一定困难,最好有老师或家长的指导。Scratch不需要使用者输入代码,所以孩子不需要记住命令,不过不用记住命令并不代表不需要知道命令。Scratch中的命令都是以积木式的程序块来实现的,这些程序块分为10个大类,有100多个功能,包括了实现一个完整程序的每个环节,甚至数组和函数。在老师或家长的指导下,孩子从模仿开始,能接触到条件语句、循环语句和判断语句,能理解参数和命令的区别。

虽然Scratch的入门学习需要相应的指导,但是网上有很多编程风格类似的网站,这些网站会提供一些基于网络的任务和引导,通过一关一关的任务达到编程教学的目的。Code.org就是这样的一个网站,它发起的“编程一小时”活动已经影响了近3亿人。

“编程一小时”的项目有很多,单击其中任何一个就能进行在线学习了,这里我选择的是星球大战的主题。

界面中会有对话框和提示气泡指导你完成一个个任务,如果感兴趣,你可以自己尝试一下,上图是将“移动 向右”程序块拖曳到右侧白色的代码区。

它的编程风格和Scratch基本是一样的,而在Scratch中移动的程序块则在分类“动作”当中,对于3.0来说,是在分类“运动”当中(以后的描述以3.0版本为主)。

这里我们可以将“移动10步”程序块拖曳到中间的空白区域来实现角色的移动。上图中界面可以通过单击首页中的“开始创作”按钮来打开。下面系统地介绍一下Scratch中的编程。

整个界面右上角的区域被称为舞台区,舞台区就是最终的展示区,这里会展示程序运行时涉及的角色、背景等内容。在舞台区的最上方有几个按钮,最左边的绿旗是程序执行按钮,单击这个按钮后就会开始执行我们编写的程序。(确切地说,应该是能够执行以绿旗开头的程序,这个稍后在实例中大家会有更直观的体验。)

绿旗旁边的红色八边形是停止按钮,能够停止程序的运行。而右侧的3个按钮是用来调整舞台区大小的,3个按钮分别代表小舞台、大舞台以及全屏。默认情况下是大舞台模式,小舞台模式会比默认的舞台小,如果单击全屏按钮,舞台就会全屏展示。

舞台区的下方是角色区,这里会展示出我们用到的所有角色,其中最右边是背景。中间的区域是代码区,我们通过拖曳方式完成的程序就是放在这里。这个区域其实还有绘图和声音编辑的功能,应用起来要看我们需要进行什么操作。

而选择操作的方式就是在左侧的模块区进行,模块区有3个标签:代码、造型和声音。选择“代码”会列出我们将要用到的所有程序块,而在“造型”和“声音”下,可以通过代码区进行相应的操作,具体的内容将在之后的例子中详细介绍。

假设我们要在Scratch中完成如上图所示的“星球大战”的一关。那就需要让机器人BB8向下走一步,然后向左走一步得到第一个物品,然后再向左、向下移动得到第二个物品,最后向下、向左移动得到最后一个物品。

在角色区中背景和角色之间的底部位置有一个小猫头,猫头的右上角有一个加号。单击这个按钮能够打开一个角色库,大家可以在其中找一个自己喜欢的角色,这里我选的是一个甲壳虫。

此时角色区有两个角色,这两个角色都出现在舞台区。我们先在小猫角色上单击右键选择删除。

接下来就要对甲壳虫进行编程了,首先要将它的方向改为向下。将“运动”中的“面向90方向”程序块拖曳到代码区。单击数字90,在弹出的方向选择图示中调整箭头方向为向下。

这里需要说明,在Scratch中,0是向上的方向,如下图所示,顺时针旋转角度增大,逆时针旋转角度减小。所以0左边是负的,右边是正的,两者分界在180处。

甲壳虫转过来后,我们要让它向前移动(此时就是向下),这时就要将“运动”中的“移动10步”程序块拖曳到代码区,放在第一个程序块的下方。

接下来,按照要求,就要让甲壳虫向左转了,还是拖曳一个“面向90方向”程序块到代码区中,放在前两个程序块之后。不过这里的角度不是选择180了,而是要选择“-90”(向左)。

转向左边之后,再添加一个“移动10步”程序块,就能实现向左移动了。用同样的方式,我们再添加后面的内容。完成后的程序如下页图所示。

当我们不需要转动方向时,就可以省略一个“面向xx方向”程序块。

要让程序运行起来,还需要添加一个“当被点击”程序块。

前面说过,在舞台区有一个绿旗按钮是用来运行程序的,实际上这个按钮是一个“触发开关”,它对应的程序块就是“事件”中的“当被点击”。要想运行程序,就需要把相应的程序块放在“当被点击”的下方。

最后,为了看到程序运行时的动画效果,我们在每一个程序块后面都加了一个“等待1秒”程序块(这个程序块在“控制”当中)。

此时,当我们单击舞台区的绿旗按钮时,就会看到甲壳虫移动。

另外,在Scratch当中,还可以通过向左转或向右转来实现转向。大家如果感兴趣,可以尝试将上图程序中的“面向xx方向”替换为“左转xx度”或“右转xx度”。程序中,左转就是逆时针方向旋转,右转就是顺时针方向旋转。