Scraino_5、猫捉老鼠(3)抓老鼠

这一节我们的任务是当猫抓住老鼠时,老鼠消失,猫发出喵的一声。相信大家经过前面的学习,对本节课的任务都比较清晰了。

1 老鼠消失

首先,我们点击老鼠,到控制指令分区,把【如果...那么...】拖进来。

Scraino_5、猫捉老鼠(3)抓老鼠_第1张图片

如果的条件和那么的结果是什么呢?——如果老鼠碰到猫,那么老鼠消失。

我们去侦测分区,找到碰到鼠标指针积木,将鼠标指针改为猫,放入如果后面的框内,消失可以用外观类的隐藏代替,作为侦测的结果。

Scraino_5、猫捉老鼠(3)抓老鼠_第2张图片
Scraino_5、猫捉老鼠(3)抓老鼠_第3张图片

注意:当每次我们使用隐藏积木时,大家要记得一开始就加一个显示积木,否则老鼠会不见了。

Scraino_5、猫捉老鼠(3)抓老鼠_第4张图片

这里老师还少放了一个积木,大家知道是什么吗?请大家回忆《捉蝙蝠》中遇到的同样问题。

碰到猫这个侦测积木只会运行一次,而我们想要的是在整个运行过程中都要不断检测,所以我们再加入一个重复执行积木让它不断侦测。

Scraino_5、猫捉老鼠(3)抓老鼠_第5张图片

2 广播

现在新的问题来了,当猫抓住老鼠时,不光老鼠要消失,猫也要发出喵的一声。

可能有同学已经想到了:我们在猫这里也加入一个侦测。当猫碰到老鼠时,就发出喵的一声。如下图:

Scraino_5、猫捉老鼠(3)抓老鼠_第6张图片

但老师告诉你,其实这里有个问题。在老鼠那里有段代码来检测是否碰到猫,在猫这里有一段代码用来检测老鼠,可是哪一段会先执行呢?如果老鼠碰到猫先执行,老鼠会消失,那猫岂不是检测不到老鼠了吗?所以这里存在着代码执行先后顺序不明的情况,是不可靠的。所以我们得想一个更好的方法。

这里我们用到一个新的知识:广播

广播的概念非常重要。它和我们玩的游戏中的广播和学校中的广播一样,就是向所有人发布一件消息。在我们这里就是某个角色向所有的角色发布一条消息,然后所有的角色可以在借收到这条消息后做一些事。

这发布广播的只能是一个角色,接受的可以是所有的角色,包括他自己。

比如学校校长拿着喇叭向操场上所有的同学说:“敬礼!”那操场上所有的人都能听到这个消息,包括校长本人,而学生听到后会做出敬礼的动作。

广播的好处是什么呢?可以在不同的角色中传递消息

在我们这个游戏中,当老鼠被猫抓住的时候,老鼠会隐藏,同时老鼠会发出一个广播,告诉所有角色:“嘿!我被抓住了!”猫听到这条广播后,会发出喵的一声。所以利用广播我们可以巧妙的规定一个时间顺序,实现前面我们无法实现的功能。

讲了这么多,让我们回到Scraino里,完成这个任务。

首先,选中老鼠,因为老鼠是发出广播的角色。我们不仅仅要让老鼠隐藏,还要发出广播。

事件分区里找到广播消息1,点击下拉菜单我们可以建立一条新消息。起名字的时候要注意一眼能看出来这条广播是干什么的,所以这里我们命名为“老鼠被抓到了”。

Scraino_5、猫捉老鼠(3)抓老鼠_第7张图片
Scraino_5、猫捉老鼠(3)抓老鼠_第8张图片
Scraino_5、猫捉老鼠(3)抓老鼠_第9张图片

所以,当老鼠被抓到后,发出广播“老鼠被抓到了”再隐藏起来。我们把广播放到隐藏前面。

Scraino_5、猫捉老鼠(3)抓老鼠_第10张图片

接着我们再回到猫这里,让猫在接收到“老鼠被抓住了”这条广播后发出喵的声音。

在事件分区中,找到【当接收到 老鼠被抓到了】拖到猫的代码区。

接着我们就要让猫发出喵的一声。点击声音面板——选择一个声音,找到Meow喵的声音加进来。

Scraino_5、猫捉老鼠(3)抓老鼠_第11张图片

把【播放声音Meow】搭建到【当接收到老鼠被抓到了】下面。

Scraino_5、猫捉老鼠(3)抓老鼠_第12张图片

运行绿旗看一下运行效果怎么样。

3 老鼠随机出现

最后我们完善一下这个程序,让老鼠被抓住后再在随机位置显示出来。

也就是,在老鼠隐藏后面加入【移到随机位置】和【显示】,同时程序一开始也让老鼠移到随机位置,最后的具体代码如下:

Scraino_5、猫捉老鼠(3)抓老鼠_第13张图片
Scraino_5、猫捉老鼠(3)抓老鼠_第14张图片

最后的运行效果如下:

Scraino_5、猫捉老鼠(3)抓老鼠_第15张图片

你可能感兴趣的:(Scraino_5、猫捉老鼠(3)抓老鼠)