[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第75讲。
蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。
第13届蓝桥杯青少年组第2次选拔赛于2021年10月23日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
嫦娥奔月,本题是2021年10月23日举行的第13届蓝桥杯Scratch选拔赛真题编程第3题,初级组和中级组都有此题,题目要求编程模拟嫦娥奔月的效果。
先来看看题目的要求吧。
背景信息:
中秋是中国民间的传统节日,中秋以月之圆寓意人之团圆,为寄托思念故乡,思念亲人之情,祈盼丰收、幸福,成为丰富多彩、弥足珍贵的文化遗产。
编程实现:
嫦娥奔月。
具体要求:
1). 运行程序,等待1秒出现嫦娥角色;
2). 点击嫦娥,嫦娥询问“请输入我飞行的时间5-10”;
3). 输入数字后嫦娥开始向月亮移动,飞行过程中嫦娥越来越小;
4). 左上角显示输入的数值后开始倒计时(5代表5秒,6代表6秒以此类推);
5). 倒计时为0停止计数,嫦娥在月亮上停止移动;
6). 等待1秒,出现节日祝福。
评分标准:
3分:满足要求1);
4分:满足要求2);
8分:满足要求3);
4分:满足要求4);
3分:满足要求5);
3分:满足要求6);
本题包含两个角色,分别是嫦娥和祝福,如图所示:
需要说明一下,这里的嫦娥在出现的时候,有渐显效果,在Scratch编程中,我们可以通过逐渐改变虚像特效来实现。
当玩家输入时间后,嫦娥就开始奔向月亮,在这个过程中,要完成如下三个任务:
嫦娥角色的运动
倒计时
嫦娥角色逐渐变小
三者是并行关系,即同时进行,由于运动时间已经确定下来了,所以这里肯定要使用“在1秒内移动x,y”指令,但是这个指令是独占模式(单线程)的,也就是在执行这个指令时,无法继续执行后续指令。因此,我们需要使用广播机制,给自己发送一个广播消息,将程序执行流程一分为二,从而实现多线程。
还有一点,嫦娥的移动时间是变化的,可能是5秒,也可能是10秒,如何确保嫦娥停下来时的大小是一致的,这就需要让嫦娥缩小的速度跟随移动时间进行变化,时间越短,缩小速度越小,时间越长,缩小速度也越大。
根据题目描述和思路分析,我们可以分4步来编写程序:
嫦娥逐渐出现
嫦娥飞到月亮上
嫦娥逐渐变小
倒计时
1. 嫦娥逐渐出现
绿旗点击时,嫦娥位于舞台左下角,并且是隐藏的,1秒之后慢慢显示出来,在Scratch中,可以通过虚像来设置角色的透明度,默认虚像值为0,表示不透明,当虚像值为100时,角色完全透明,就看不见了。
所以,我们可以将虚像值设为100,然后逐渐减小到0,在嫦娥角色中编写代码如下:
注意,题目给出的演示视频中,绿旗点击时倒计时显示的是空,所以这里将倒计时的初始值设置为空,而不是0。
2. 嫦娥飞到月亮上
当玩家使用鼠标点击嫦娥时,会弹出一个对话框,询问飞行的时间,对于角色的点击,通常直接使用“当角色被点击指令”,但这里的点击是在嫦娥完全显示后才进行的,更好的办法是使用侦测指令,同时判断角色是否碰到鼠标指令和按下鼠标,在嫦娥角色的的代码块中,增加代码如下:
当玩家输入飞行时间后,将变量“倒计时”设为回答,然后发送了一个广播消息,接着让嫦娥角色在指定时间内滑行到月亮上。
3. 嫦娥逐渐变小
嫦娥角色接收到自己发送的“开始飞行”广播后,逐渐开始变小,根据前面的思路分析,我们添加一个变量“缩小速度”,它和“倒计时”变量成反比关系,然后重复减小角色直到倒计时为0,对应的代码如下:
这里的缩小速度设为了“ -7 / 倒计时”,是经过多次测试得到的,包括“等待0.04秒”指令,你可以设置为其它的值。之所以是负数,是因为角色要逐渐变小,同时要注意在初始化中需要将角色大小设为100。
4. 倒计时
嫦娥角色在接收到“开始飞行”广播后,还需要显示倒计时效果,每隔1秒就减去1,当倒计时减到0,在嫦娥角色中继续编写代码如下:
倒计时减到0,再等1秒,出现节日祝福,因此在这里发送了一个“广播祝福”的广播消息,对应的,祝福角色在接收到广播后,将自己显示出来,切换到祝福角色,编写代码如下:
至此,整个作品就创作完成了。
本题难度系数为4,积木块数量在43个左右,涉及到的知识点主要包括:
外观编程,包括大小、显示隐藏和虚像特效,重点是渐显效果;
Scratch问答,包括询问并等待和回答;
事件广播机制,重点是通过广播实现多线程编程;
使用侦测指令实现角色点击;
“等待条件”指令的灵活运用。
题目难度中等,重点有两个,一是多线程编程,要确保角色在滑行过程中逐渐减小角色,解决方案就是使用事件广播机制,给自己发送广播消息,将程序执行流程一分为二,同时执行。
二是如何确定角色缩小的速度,确保不管时间长短,都可以将角色缩小到相同大小,这就需要寻找两个变量之间的关系和规律(定性),并通过数学计算来确定其缩小速度(定量),这其实就是科学中经常提到的定性和定量的分析方法。