第10届蓝桥杯青少年组省赛于2019年3月24日举行,形式为线下考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
自动驾驶,本题是第10届蓝桥杯Scratch省赛真题编程第5题,初级组和中级组都有此题,题目要求考生使用Scratch编程模拟小汽车自动停车效果,小车从舞台左侧向右行驶。当小车快要碰到小猫时,小车能自动停止移动,而小猫被吓到了。
先来看看题目的要求吧。
一.题目说明
编程实现:
将舞台背景改为“blue-sky”背景,在舞台上设置 1 个小车“Car-Bug”角色,并保留默认的小猫角色。
小车从舞台左侧向右行驶。当小车快要碰到小猫时,小车能自动停止移动,而小猫被吓到了。
具体要求:
1、每次点击绿旗后,舞台背景和小车角色的初始位置都要如下图所示,小猫角色的 x 坐标值为从 100 到200 范围内的一个随机数值,y 坐标参考图中位置来大致设置;
2、小车开始自动向右行驶。小猫的位置则始终保持不动;
3、小车在行驶到车头距离小猫一个车身范围以内时,小车能自动停止。视觉观察时,小车不能碰到小猫,两者之间留有一段距离。如下图所示:
4、在小车停下后,小猫说“哇!!!”2 秒钟,程序结束。
将程序保存到桌面,命名为“5.sb2”。
评判标准:
- 10 分:每一次点击绿旗后,小车在舞台左边,而小猫的位置则是随机的(需要多次点击绿旗来验证随机位置);
- 40 分:在 10 分的基础上,小车在行驶到距离小猫一个车身范围内停止。但是,以下两种情况均不符合要求:
1)小车碰到小猫,如下图所示:
2)小车停下时,车头距离小猫的距离明显大于一个车身宽度,或者不论小猫的位置如何变化,车停下的位置都相同(即小车停下的位置并没有根据小猫的位置随机变化而变化),如下图所示:
- 50 分:完全符合题意,即在 40 分的基础上,实现了小车停下后,小猫说“哇!!!”2 秒钟。
二.作品效果
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本题只有两个角色,分别是小猫和小汽车,小猫的效果比较简单,一是设置好位置,二是在小汽车停下来后,说一声”好!!!“。
这里的重点是小汽车,小汽车从舞台左边向右移动,当移到距离小猫一定位置时自动停止。由于小猫的位置是随机的,所以小汽车停下来的位置也是随之变化的,那如何确定小猫的位置呢?
我们可以换一个思维,小汽车停止的位置随小猫位置的变化而变化,那有没有不变的量呢?仔细想想,可以发现它们二者之间的距离是不变的,这个距离是小汽车的一个车身长度。
在Scratch中的侦测模块中,有一个指令”到xx的距离“可以获取当前角色到某个角色的距离,如图:
如此一来,问题就变简单了,当小汽车到小猫的距离小于某个值时,停止移动即可。
四.编程实现
根据题目描述和思路分析,我们可以分3步来编写程序:
- 小猫随机位置
- 小汽车行驶并自动停车
- 小猫说哇
1. 小猫随机位置
根据题目描述,小猫角色的 x 坐标值为从 100 到200 范围内的一个随机数值,我们使用随机数指令设置其位置即可,代码如下:
由于舞台较小,这里将小猫的大小设置为75,这个不是必须的,你可以设置任意大小。
2. 小汽车行驶并自动停车
小汽车从舞台左边开始向右移动,需要先设置好初始位置,然后重复执行右移,很明显,此处使用直到循环最为简单,代码如下:
简单说明一下,这里将小车设置为50,此时一个车身的距离大概是120步,你可以根据实际情况来确定这个距离。当小车自动停止后,给小猫角色发送了一个”停车“的广播消息。
3. 小猫说哇
小猫在接收到”停车“广播消息后,说了一声哇,切换到小猫角色,编写代码如下:
至此,整个代码就编写完毕,你可以反复执行程序,测试一下自动驾驶功能,是不是还挺智能的。
五.总结与思考
本题难度系数为5,积木块数量在16个左右,涉及到的知识点主要包括:
- 熟悉Scratch舞台坐标系,并快速确定角色的坐标;
- 随机数指令的运用;
- 外观编程,包括设置大小和说话指令;
- 重复直到循环;
- 侦测角色到另一个角色之间的距离;
- 事件广播机制。
本题的代码并不多,难点在于如何在变化的量中找到不变的量,换句话说,就是要抓住问题的本质,这是一个非常重要的思维模型,在编程时会经常用到这种思维,这也是为什么说编程可以提升逻辑思维能力的原因之一。