[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第49讲。
第12届蓝桥杯青少年组省赛分两次进行,这是2020年10月19日举行的第一次省赛考试中级组,形式为在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
飞翔的小猫,本题是第12届蓝桥杯Scratch第一次省赛真题中级组编程第2题。题目要求考生编程实现飞翔的小猫效果,舞台背景和树木向左侧移动,看起来就像小猫在树林中飞行穿梭一般。
先来看看题目的要求吧。
一.题目说明
编程实现:
飞翔的小猫。
具体要求:
1). 点击绿旗,小猫出现在舞台的中心区域;
2). 舞台背景向左侧移动,同时树木也向左侧移动;
3). 使用克隆的方式在舞台上时刻呈现不少于两棵树木;
4). 树木在移动时可以遮挡住小猫。
![图片[1]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-80.png)
评判标准:
- 5 分 :满足要求 1);
- 20 分 :满足要求 2);
- 15 分 :满足要求 3);
- 10 分 :满足要求 4)。
二.效果预览
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本作品一共有4个角色,分别是小猫、树木、背景1和背景2,如图所示:
![图片[2]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-81-899x1024.png)
其中,小猫角色最为简单,它始终处于舞台中间位置,一动不动。树木角色每隔一定时间,从舞台右方出现,然后向左移动,直到舞台最左边消失,这个可以通过克隆结合运动编程来实现。
本题的重点是背景无限滚动效果,由于Scratch中的舞台背景本身是不能移动的,所以,我们只能使用角色的方式来充当背景。
这里的背景1角色大小和舞台大小一样,将它的位置设置为(0,0)刚好覆盖舞台区域。一旦向左移动,舞台右侧区域就会露出白色背景,因此,我们需要再复制一个背景角色,即这里的背景2角色,并让角色2始终跟随在角色1的右边,一起向左运动。
如果背景1或背景2到达舞台最左边,则立刻回到舞台最右边,周而复始,重复这个过程,就可以实现背景的无限滚动效果。
一旦实现了背景无限滚动效果,根据相对运动原理,看起来就好像是小猫在向前飞翔。
那什么是相对运动呢?
这是一个物理学概念,它指的是物体相对于其他运动的位置变化。比如:
![图片[3]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/640-2.gif)
这里的火箭的位置并没有变化,但是星星和其它天体向左下运动,我们可以说火箭相对于星星是向右上运动的。
一栋楼房或一棵树对地球来说,它们是静止的;但对太阳来说,它们却都在运动着。宇宙中没有不动的物体,一切物体都在不停地运动,运动是绝对的,静止是相对的。
所以,在描述物体是否运动时,观察者必须选择一个参照物,然后根据所选定的参照物来确定物体是否运动。
四.编程实现
根据题目描述及思路分析,我们可以按角色逐个编写程序:
- 小猫角色
- 树木角色
- 背景角色
1). 小猫角色
小猫角色最为简单,只需要设置好其位置即可,代码如下所示:
![图片[4]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-82.png)
2). 树木角色
题目明确说明要使用克隆的方式在舞台上时刻呈现不少于两棵树木,毫无疑问需要使用克隆,关键是如何确保任意时刻在舞台上不少于两棵树木。
这取决于两个因素,一是树木移动的速度,二是克隆树木的频率,即隔多长时间克隆树木。因此,我们需要先克隆出树木,设置好速度之后,再来调整速度和间隔时间。
切换到树木角色,编写代码如下:
![图片[5]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-83.png)
在上面的代码中,我们将克隆树木的间隔设置为在1.5和2.0之间取随机数,是为了让树木出现的间隔时间具备随机性,从而获得更好的效果。
2). 树木角色背景1和背景2
根据前面的思路分析,背景1和背景2的效果完全一样,唯一不同的是初始位置。我们先来实现背景1角色的代码,首先将角色的初始位置设为(0,0),让背景1刚好覆盖舞台区域,然后重复执行向左运动,当到达舞台最左边时,将其移到舞台最右边,代码如下:
![图片[6]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-84.png)
简要说明三点:
①. 这里的“将x坐标增加-5”和树木的速度完全一样,这样可以让相对运动的效果看起来更加逼真。
②. 在scratch中,角色的大小不同,到达舞台最左侧的位置也会不同,让角色重复向左移动,当角色坐标不再变化时,这个值就是临界点。对于大小为480×360的背景1角色来说,这个临界点是-465,所以我们的判断条件是“x坐标 < -464”。有的同学喜欢使用“x坐标 = -465”,这个也可以,但一般不推荐,使用小于的方法更安全,更符合逻辑。
③. 当角色到达最左边时,立刻将它移到舞台的最右边,这里使用的是“将x坐标设为480”,这是一种简单的写法。你也可以设置为465,在Scratch中,任何角色都不能脱离舞台范围,它总会留一条小尾巴在舞台上,所以,即使我们设置为480,角色的实际位置也会自动变为465。
背景2角色和背景1角色代码基本相同,将背景1角色的代码复制一份,修改其初始位置即可, 角色2的初始位置坐标是(480,0),代码如图所示:
![图片[7]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-85.png)
这就是背景无限滚动效果的实现方式,在Scratch游戏编程中,会大量使用这种技巧,是每一个Scratch爱好者都必须掌握的编程技能。
五.总结与思考
本题难度一般,积木块数量在35个左右,分值为50,涉及到的知识点主要包括:
- Scratch克隆,包括克隆三指令的使用;
- 运动编程,通常使用循环来不停地改变坐标,重点是临界点的判断;
- 舞台背景的特点,及使用角色来模拟背景的实现;
- 相对运动的概念及应用;
- 背景无限滚动的原理及实现。
本题中,为了实现小猫不停向前飞翔的效果,我们应用了物理学中的相对运动知识,这也是为什么说编程是最好的STEM教育。一个看似不起眼的作品中,常常会涉及到数学、物理、科学等学科知识。
本题的背景无限滚动效果是基于水平方向上的运动,相应的,我们还可以编程实现垂直方向上的背景无限滚动,你会了吗,赶紧尝试一下吧。
需要素材和源代码的,可以转到这里,飞翔的小猫-2020.12.20蓝桥杯省赛中级组第2题。
暂无评论内容