飞翔的小猫-第12届蓝桥杯Scratch省赛2真题第2题

[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第49讲。

第12届蓝桥杯青少年组省赛分两次进行,这是2020年10月19日举行的第一次省赛考试中级组,形式为在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

飞翔的小猫,本题是第12届蓝桥杯Scratch第一次省赛真题中级组编程第2题。题目要求考生编程实现飞翔的小猫效果,舞台背景和树木向左侧移动,看起来就像小猫在树林中飞行穿梭一般。

先来看看题目的要求吧。

一.题目说明

编程实现:

飞翔的小猫。

具体要求:

1). 点击绿旗,小猫出现在舞台的中心区域;

2). 舞台背景向左侧移动,同时树木也向左侧移动;

3). 使用克隆的方式在舞台上时刻呈现不少于两棵树木;

4). 树木在移动时可以遮挡住小猫。

图片[1]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课

评判标准:

  • 5 分 :满足要求 1);
  • 20 分 :满足要求 2);
  • 15 分 :满足要求 3);
  • 10 分 :满足要求 4)。

二.效果预览

在编程之前,先来看看作品的完整效果吧:

三.思路分析

本作品一共有4个角色,分别是小猫、树木、背景1和背景2,如图所示:

图片[2]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课

其中,小猫角色最为简单,它始终处于舞台中间位置,一动不动。树木角色每隔一定时间,从舞台右方出现,然后向左移动,直到舞台最左边消失,这个可以通过克隆结合运动编程来实现。

本题的重点是背景无限滚动效果,由于Scratch中的舞台背景本身是不能移动的,所以,我们只能使用角色的方式来充当背景。

这里的背景1角色大小和舞台大小一样,将它的位置设置为(0,0)刚好覆盖舞台区域。一旦向左移动,舞台右侧区域就会露出白色背景,因此,我们需要再复制一个背景角色,即这里的背景2角色,并让角色2始终跟随在角色1的右边,一起向左运动。

如果背景1或背景2到达舞台最左边,则立刻回到舞台最右边,周而复始,重复这个过程,就可以实现背景的无限滚动效果。

一旦实现了背景无限滚动效果,根据相对运动原理,看起来就好像是小猫在向前飞翔。

那什么是相对运动呢?

这是一个物理学概念,它指的是物体相对于其他运动的位置变化。比如:

图片[3]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课

这里的火箭的位置并没有变化,但是星星和其它天体向左下运动,我们可以说火箭相对于星星是向右上运动的。

一栋楼房或一棵树对地球来说,它们是静止的;但对太阳来说,它们却都在运动着。宇宙中没有不动的物体,一切物体都在不停地运动,运动是绝对的,静止是相对的。

所以,在描述物体是否运动时,观察者必须选择一个参照物,然后根据所选定的参照物来确定物体是否运动。

四.编程实现

根据题目描述及思路分析,我们可以按角色逐个编写程序:

  • 小猫角色
  • 树木角色
  • 背景角色

1). 小猫角色

小猫角色最为简单,只需要设置好其位置即可,代码如下所示:

图片[4]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课

2). 树木角色

题目明确说明要使用克隆的方式在舞台上时刻呈现不少于两棵树木,毫无疑问需要使用克隆,关键是如何确保任意时刻在舞台上不少于两棵树木。

这取决于两个因素,一是树木移动的速度,二是克隆树木的频率,即隔多长时间克隆树木。因此,我们需要先克隆出树木,设置好速度之后,再来调整速度和间隔时间。

切换到树木角色,编写代码如下:

图片[5]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课

在上面的代码中,我们将克隆树木的间隔设置为在1.5和2.0之间取随机数,是为了让树木出现的间隔时间具备随机性,从而获得更好的效果。

2). 树木角色背景1和背景2

根据前面的思路分析,背景1和背景2的效果完全一样,唯一不同的是初始位置。我们先来实现背景1角色的代码,首先将角色的初始位置设为(0,0),让背景1刚好覆盖舞台区域,然后重复执行向左运动,当到达舞台最左边时,将其移到舞台最右边,代码如下:

图片[6]-scratch飞翔的小猫_第12届蓝桥杯scratch省赛教程-超平的编程课

简要说明三点:

这里的“将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省赛教程-超平的编程课

这就是背景无限滚动效果的实现方式,在Scratch游戏编程中,会大量使用这种技巧,是每一个Scratch爱好者都必须掌握的编程技能。

五.总结与思考

本题难度一般,积木块数量在35个左右,分值为50,涉及到的知识点主要包括:

  • Scratch克隆,包括克隆三指令的使用;
  • 运动编程,通常使用循环来不停地改变坐标,重点是临界点的判断;
  • 舞台背景的特点,及使用角色来模拟背景的实现;
  • 相对运动的概念及应用;
  • 背景无限滚动的原理及实现。 

本题中,为了实现小猫不停向前飞翔的效果,我们应用了物理学中的相对运动知识,这也是为什么说编程是最好的STEM教育。一个看似不起眼的作品中,常常会涉及到数学、物理、科学等学科知识。

本题的背景无限滚动效果是基于水平方向上的运动,相应的,我们还可以编程实现垂直方向上的背景无限滚动,你会了吗,赶紧尝试一下吧。


需要素材和源代码的,可以转到这里,飞翔的小猫-2020.12.20蓝桥杯省赛中级组第2题

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容