初级篇——苹果下落

【疑惑篇】

鼠标点击苹果,苹果从树上下落。

视频演示open in new window

亲自操作open in new window

想一想: 可以有几种方式实现?如何让苹果从树枝不同的地方开始下落?

视频演示open in new window

亲自操作open in new window

【线索篇】

案例分析

它们发生的场景是什么?

每个场景中有哪些角色?

每个场景中的每个角色在做什么?

  1. 点击苹果,苹果移动到初始位置。
  2. 苹果从初始位置开始下落。

积木提示

当角色被点击

移动(10)步

移到x:(0) y:(0)

在(1)秒内滑行到x:(0) y:(0)

将y坐标增加(10)

重复执行(10)次

面向(90)方向

将旋转方式设为[左右翻转]

在(1)和(10)之间取随机数

【解决篇】

一个苹果掉在地上,当你用鼠标点击它后,它又会回到树上,掉落下来。这个案例需要如何完成?

第一步,还是新建一个项目,把用到的背景Savanna添加进来。

第二步,添加角色。把默认的小猫删掉,选择用到的苹果。

第三步,通过指令积木实现动画。

这一次你会发现一个与之前所有案例都不一样的地方。在案例演示时,我没有点击绿旗按钮,而是用鼠标去点击苹果。说明这一次用来启动程序的事件发生了改变。

去到事件分类中找一找,你会发现有一个当角色被点击积木。它的作用和当绿旗被点击积木很类似,不过鼠标点击的对象从绿旗按钮换成了舞台中的角色。

它要如何使用呢?

当你选中苹果角色,将当角色被点击积木拖入编程区中,每当你用鼠标点击舞台中的苹果时,该积木就会被启动,开始执行它后面的指令串。

选好了开始事件,接下来就该分析一下苹果都做了什么事?

1.点击苹果,苹果移动到初始位置。

当点击苹果以后,它首先会从地面回到树上,是不是苹果的坐标发生了改变?

使用移到x:(0) y:(0)积木,参数设置为树上的某个坐标位置就可以了。例如,(x:-30,y:140)。

请你想一想,除了使用移到x:(0) y:(0)积木,你还能找到其他积木让苹果回到树上吗?

2.苹果从初始位置开始下落。

苹果回到树上后,接下来就要从树上垂直掉落下来。是不是跟上个案例中,星星和小狗只能横向移动很类似,只是这里变成了只能垂直运动。回忆一下,上个案例中你是如何来控制角色只能横向移动的?

角色的x坐标改变时,就会左右移动。角色的y坐标改变时,就会上下移到。 所以,你只要保证苹果的x坐标不变,y坐标不断变小就可以了。

最简单的方式当然还是使用在(1)秒内滑行到x:(0) y:(0)积木。x坐标不变还是-30,y坐标变成它落地以后的坐标,例如-170。

点击一下苹果,它会回到树上,紧接着开始掉落下来。这样第一种实现方式就完成了。还有没有别的方法?

既然现在的目标是不断让y坐标减小,是不是只要不断的修改y坐标的值就可以了。在运动分类中有一个将y坐标增加(10)积木,它可以将角色当前的y坐标加上该积木设置的参数值,计算结果就是角色新的y坐标。

接下来你就需要考虑,应该将积木中的参数设置为多少?

想一想,苹果是从舞台上面掉落到舞台下面,y坐标值是在减少。而将y坐标增加(10)积木是用角色当前的y坐标加上参数值作为新坐标,一个数字加上什么数字会越加越少呢?是不是需要增加一个负数,代表了当前y坐标减去一个正数。

接着,负号后面的数字应该填多少?这里需要你自己测试一下,看看填入一个小的数字(例如5、10)与填入一个大的数字(30、50、100),苹果下落有什么区别。我先给你一个提示,程序每次执行将y坐标增加(10)积木的时间是相同的。

假设,我现在将将y坐标增加(10)积木的参数设置为-10,也就是每次y坐标减少10。现在苹果想从树上(y:140)减少为地下(y:-170),需要重复使用很多个将y坐标增加(10)积木。有没有想到之前案例中使用过的重复执行积木。

在这个案例中你当然也可以使用它,不过这个案例中的苹果,与前面案例中的小鱼、星星和小狗有一个区别。之前的三个角色都会一直不停的移动,而这里的苹果掉在地上以后就不需要再移动了。因此,你可以通过树上和地下两个坐标的距离,计算出它需要重复执行多少次。例如,树上(y:140)到地下(y:-170)的总距离是310,而苹果y坐标每次移动的距离是10,总距离310除以每次移动距离10,就可以得出需要重复执行31次。

在控制分类中,你会发现一个重复执行(10)次积木,它与重复执行积木的区别是,这个积木重复的次数是有限制的,不会一直执行。

现在你就可以使用重复执行(10)次积木,将它的参数设为31次,再将将y坐标增加(10)积木放入它的大嘴中,参数设置为-10。现在点击一下苹果,它也会先出现在树上,然后缓缓地掉落到地面。

现在实现了两种方式,还有没有其他的方法呢?

记不记得上个案例中让小狗移动的移动(10)步积木,在这里是不是同样可以使用它来让苹果移动。

与前面两种方式直接修改y坐标值不同,移动(10)步积木只能朝着角色属性方向值的方向移动。因此你需要先将它的方向改为朝下,也就是180。

使用什么积木修改方向呢?

是不是可以用面向(90)方向积木,将它的参数设置为180度。

又应该将它放在哪里呢?

是不是应该先调整好方向值,再开始移动,所以需要将它放在移动(10)步积木的前面。

点击一下苹果,你会发现一个问题。当你把方向值改为180度之后,苹果头转向了右边。为了保证苹果头朝上,你又需要在改变方向之前,使用将旋转方式设为[左右翻转]积木调转角色的旋转模式。在这个案例中苹果显示的方向不会发生改变,所以你可以选择使用不可旋转。这样一来,无论苹果的属性方向值如何改变,它的头会永远朝上。

最后别忘了,和刚刚的y坐标减少10一样,每次向下移动10步时,也需要重复执行31次才能落到地面。

你还可以观察一下,当你使用将y坐标增加(10)积木和移动(10)步积木时,y坐标的变化规律。想一想,它们之间区别是什么?

最后,我还给你留了一个扩展练习。你能不能点击苹果后,让它从树枝的不同位置开始下落。也就是说,当你使用移到x:(0) y:(0)积木将它移到树上时,它每次的x坐标是不一样的,应该如何实现呢?

我先给你一个提示,为了获取不同的x坐标,你就需要用到运算分类中的在(1)和(10)之间取随机数积木。

注意观察,它和鼠标的x坐标积木、鼠标的y坐标积木一样,也是一个椭圆形的积木。当你点击它时,也会返回一个数字,并且返回数字有两个规律。第一,返回的数字在你填入的两个参数之间。第二,每次返回的数字不一样。

思考一下,怎么样利用在(1)和(10)之间取随机数积木,让苹果出现在树枝上的不同位置。

想看更多学习案例,欢迎点击查看《Scratch 3学习手册》open in new window

想要获取所有案例源码和素材,以及获得我对你在学习中所遇问题的一对一解答,欢迎加入石头解忧杂货店

Last Updated:
Contributors: lanheixingkong