初级篇——小猫抓球

【疑惑篇】

点击绿旗按钮,棒球在舞台上随机出现,每隔几秒钟随机更换位置。通过上下左右键控制小猫移动去抓棒球。

视频演示open in new window

亲自操作open in new window

想一想: 可以有几种方式实现?如何让小猫抓到球后让球立即消失?

【线索篇】

案例分析

它们发生的场景是什么?

每个场景中有哪些角色?

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

棒球

  1. 点击绿旗按钮,移动到舞台随机位置
  2. 等待几秒钟,移动到舞台另一个随机位置。
  3. 重复第2步

小猫

  1. 按下上下左右任意一个键,小猫朝相应方向移动。
  2. 如果小猫碰到棒球,发出声音并说话。

积木提示

当绿旗被点击

当按下[空格]键

移动(10)步

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

移到([随机位置])

面向(90)方向

将x坐标增加(10)

将y坐标增加(10)

说(你好!)(2)秒

播放声音([喵])

等待(1)秒

重复执行

如果<>那么

碰到([鼠标指针])?

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

【解决篇】

首先,还是新建一个项目,添加我们需要的背景,Xy-grid-30px。

接着,把用到的角色添加进来,一个Cat2,一个Baseball。

第三步,用指令积木来实现游戏。

棒球

1.点击绿旗按钮,移动到舞台随机位置

点击绿旗按钮相信你已经非常熟悉了,在这里你需要思考的问题是,如何让小猫移动到随机位置?

其实很简单,在运动分类中有一个移到([随机位置])积木,参数选择随机位置,它就会让角色移动到舞台中的某个随机位置。

我想请你思考一下,还有没有别的方式可以实现?

在之前的案例中你已经知道了,角色的位置是由它的属性坐标值决定,那什么是随机位置呢?就是随机的x坐标和y坐标值,所以现在你的问题就变成了如何获得随机的x坐标和y坐标,然后将它移动到这个新位置?

还记不记得在(1)和(10)之间取随机数积木。想要获取随机的x坐标,只需要将积木参数设置为舞台的x坐标范围。想要获得随机的y坐标,只需要将积木参数设置为舞台的y坐标范围。为了避免棒球移到舞台外面,你可以将参数的舞台的范围适当缩小。

获得随机的x坐标和y坐标后如何移动小猫?是不是使用移到x:(0) y:(0)积木就可以了。

2.等待几秒钟,移动到舞台另一个随机位置。

棒球移动到新位置以后,需要让它等待几秒钟,让小猫有时间过去抓它。

如何等待?

是不是使用等待(1)秒积木。

等待多久?

你可以设置为固定值,也可以使用在(1)和(10)之间取随机数积木获取一个随机的时间值。

等待之后,小猫再像第一步一样,移动到新的随机位置。

  1. 重复第2步

最后一步,小猫需要不停的移动,是不是使用重复执行积木让它重复移动、等待就可以了。

小猫

1.按下上下左右任意一个键,小猫朝相应方向移动。

接下来轮到小猫,它的移动和棒球不一样。它是在方向按键被点击之后才会移动,因此小猫指令的启动事件就不再是当绿旗被点击积木,而是当按下[空格]键积木。

当上下左右某个按键被点击后,小猫做了什么?

是不是将方向改变为按键对应的方向,例如,按左键小猫朝向左边,按上键小猫朝向上面。如何做?是不是使用面向(90)方向积木调整小猫的方向值就可以了。还记不记得上下左右的方向值各是多少?

接下来,小猫除了方向改变,是不是还会往对应的方向移动,如何做?

最简单的方式就是使用移动(10)步积木,让它直接朝着面向的方向移动。

还有没有别的方法呢?

别忘了移动就是修改坐标值,左右移动修改x坐标,上下移动修改y坐标。所以只要使用将x坐标增加(10)积木和将y坐标增加(10)积木修改对应的坐标值就可以了。

在这里,你还是可以停下来思考一下,这两种移动方式有什么区别?

移动(10)步积木是不是需要配合面向(90)方向积木一起使用。必须先改变小猫的方向,再让它移动10步。

将x坐标增加(10)积木和将y坐标增加(10)积木是直接通过修改角色的坐标让它移动。因此,即使没有面向(90)方向积木,小猫也可以正常移动,只是它会永远面朝一个方向。

你可以自己将面向(90)方向积木删掉以后,体会一下它们的区别。

2.如果小猫碰到棒球,发出声音并说话。

接下来,你要控制小猫去抓住棒球。如果小猫抓住棒球,那么它就会叫一声,并且说“抓到了”。

是不是需要使用如果<>那么积木进行判断。在该积木里面使用播放声音([喵])播放角色默认的猫叫声,接着使用说(你好!)(2)秒积木让它说话。

现在只差如果<>那么积木中的放入判断条件。你怎么知道小猫有没有抓住小球?

在侦测分类中有一个碰到([鼠标指针])?积木,它是用来判断当前角色有没有碰到参数所选的某样东西,碰到了返回true,没有碰到返回false。它的参数有三种选项,鼠标指针、舞台边缘和角色名称。

在这里就可以将该积木放入如果<>那么积木的判断条件中,参数选择棒球名称Baseball。现在如果小猫碰到了棒球,那么小猫就会播放声音和说话了。

完成这个案例后,同样我想留给你一个扩展思考。如果你自己看过侦测分类中的积木,会发现里面有一个按下([空格])键?积木。它和事件分类中的当按下[空格]键积木一样,可以用来判断当前哪个按键被按下。请你自己试一试能不能改用它来做按键判断,控制小猫向对应的方向移动,实现后比较一下它们之间有什么区别。

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

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

Last Updated:
Contributors: lanheixingkong