友情提示:380元/半年,儿童学编程,就上码丁实验室。
各位同学、家长们、大朋友小朋友们大家好,欢迎来到我们的scratch编程学习课堂,上节课我们介绍了scratch编程中的移动功能同时还让小球连贯的移动了一段距离(点我进入),这节课我们将继续探索Scratch编程的奇妙之处。话不多说,我们这就开始今天的课程。
在此之前,我们先来解答上节课的作业!
1、如果我们要在移动距离不变的情况下,如何让小球走的更慢呢?
首先,我们要知道整个屏幕水平方向上有480步,垂直方向有360步,我们上节课是使用了一个重复执行40次的移动10步,也就是一共移动了400步,那么我们只要每次移动的步数少一些,同时增加重复执行的次数,就可以让整个移动变得慢下来了(如下图)。
2、在生活中,还有什么是“循环”的吗?举出几个例子来。
星期:周一、周二、周三、周四、周五、周六、周日;
时间:一年四季,春、夏、秋、冬
一日三餐:早餐、午餐、晚餐
这些都是在反复执行的。
本节课的知识要点
1、了解角色的“方向”概念
2、学习运动功能模块中关于角度的几个积木,如“右/左转()度”、“面向()方向”等
3、了解数学概念“随机”,并用随机控制角色的方向
今天我们的课程是“蹦跳的弹球”,最终目的是要通过一段程序让一个小弹球在屏幕上弹来弹去。
我们把整个编写过程分为下面三步来处理,让我们一步一步慢慢来做。
一、打开项目
点击菜单栏左上角的“文件”–“从电脑中上传”,在弹出的文件选择框里选择我们上节课保存的项目文件,并点击“打开”。(如图1-1)
(图1-1)
二、让小球换个方向
在现实世界中,我们有着东南西北、上下左右等等的方向名词,在Scratch编程的世界里,我们用角度来表示方向。
我们在小球的角色信息区可以看到,它的方向是90(度)。我们试着在我们上节课的移动指令前加入一条“右转15度”,然后点击绿旗,看看发生了什么?(如图2-1)
(图2-1)
它会自己转圈了。好了,我们这堂课的目的可不是要让它转圈,我们是要让它变成一颗弹球。
我们先把右转指令和等待指令取消,这样我们在按下绿旗时,小球可以朝右沿着直线走一段路程(如图2-2)。
(图2-2)
有的同学可能发现自己项目里的小球没有朝右走,而是朝着其他的方向,这是因为我们之前的指令让小球右转了若干次15度,这样小球就不是面朝右了(虽然它是圆形,不太容易看出来)。我们处理的方法也很简单,在角色信息区中选中小球,把“方向”设置为“90”即可(如图2-3)。
(图2-3)
这次我们使用一个无限次的“重复执行”来替换掉40次的,让小球不停的走下去(如图2-4)。
(图2-4)
小球在碰到边缘后,没有像我们想象的那样直接反弹,而是好像“粘”在了屏幕边缘,不再动了。这里,我们需要给它增加一条用于反弹的运动指令——“碰到边缘就反弹”(如图2-5),这样小球在碰到屏幕边缘时就会反弹回来了。
(图2-5)
紧接着我们发现了新的问题,小球只会水平的弹来弹去,我们用本节课开始学到的转向指令,在循环开始先给小球转一个角度,这样我们再看看效果(如图2-6)。
(图2-6)
三、细节完善
我已经可以说是一个真正的弹球了,但是还有几点细节我们要修改一下:
细节1、小球每次出发时都是右转15度,似乎模式太固定了,我们尝试为它增加一点变化感;
细节2、仔细观察,小球每次弹起时,小球的图片都会发生一个转动,这样导致小球图片里本来就有的光照效果变得怪怪的,我们尝试来解决掉这个小bug。
关于第1条,我们引出一个新的数学概念——“随机”。
随机,是一种数学统计学中的知识,我们这里不做过多的解释。我们知道我们常常用投硬币的方法来做一些事情的决定,比如不少球类比赛开赛前的选场地等等。随机就是一件事,在事前不可预言这件事的结果,比如刚才说的投硬币,再比如从一个放有编号从1~10小球的盒子里取出一个球,谁也没法肯定的说取出的是几号小球,而只能是猜测,这就是随机事件。
Scratch中的随机数就是类似这个盒子里取球的过程,“在(1)和(10)之间取随机数”,取出的数字就可能是1,2,3,4,5,6,7,8,9,10。接下来我们让小球朝向一个随机的角度,就要用到这个功能。
我们打开“运算”功能模块,找到“在(1)和(10)之间取随机数”积木,鼠标左键点击,我们会在一旁看到即时运行的结果,我们会发现每次点击都会出现一个1~10之间的数,但每次和每次不一定一样。如果我们改成“在(1)和(360)之间取随机数”,我们每次点击得到的结果就在1~360之间,而这恰好是小球初始可以朝向的所有角度(如图3-1)。
(图3-1)
这里我们来说明一下积木块的形状,不同的积木外形,可以被放置在不同形状的积木空格内(如图3-2)。
(图3-2)
比如上面讲到的“在(1)和 (360)之间取随机数”,本身是个胶囊形的积木,它就可以嵌入到其他含有胶囊形状空格的地方了,比如我们之前用到的“右转()度”。具体方法是,鼠标移动到要移动的积木块上,然后按下鼠标左键,把它拖拽到要放置的位置,在接近合适的位置时,会有一个白色的小框将目标位置标注出来,此时松开鼠标左键就可以完成整个操作(如图3-3)。
(图3-3)
在经过这样的组合后,我们再看一下程序运行起来的样子(如图3-4)。
(图3-4)
这样我们刚才找到的“细节1”就被成功解决了。
接下来我们来看“细节2”应该怎么解决。我们现在用小球的图片看起来不是很明显,但如果我们换一张其他的图片,这个细节问题就会很明显了(如图3-5)。
(图3-5)
我们现在的小球显然不需要这样的翻开滚去,我们可以通过两种方法来解决这个问题:
1、点击角色信息区中的方向,在出现的小界面靠下的位置,选择“不可旋转”(如图3-6);
(图3-6)
2、通过积木指令在代码中实现:在“运动”功能模块内有一个名为“将旋转方式设为[左右翻转、不可旋转、任意旋转]”的积木,我们将它拖到我们代码开始的地方,由于这个操作不需要每次循环都执行,所以放在“重复执行”的外面即可(如图3-7)。
(图3-7)
好,这样我们的细节2也就解决了,让我们来看一下最后的成品。
(成品)
到这里,我们就完成了“蹦跳的弹球”这个小项目的制作,你还有什么更好的创意想要融入其中吗?
今天的作业:
1、在课程中我们使用了“右转()度”来给小球设定了初始方向,试试看还有其他的积木块能完成这个任务呢?
2、在生活中,还有什么事情是“随机”的?举出几个例子来。
欢迎大家留言说出自己的看法。