金箍棒变化-第15届蓝桥杯国赛Scratch初/中级组真题第1题解析
金箍棒变化-第15届蓝桥杯国赛Scratch初/中级组真题第1题解析
第15届蓝桥杯国赛已于2024年9月7日正式落下帷幕,初级组和中级组共用一套试题,编程题一共有6题(初级组只有前5题),分别如下:
- 金箍棒变化
- 画矩形
- 保护大熊猫
- 能力雷达图
- 九宫格博弈战
- 扫雷游戏
一.题目说明
编程实现:
金箍棒变化。
具体要求:
- 点击绿旗,金箍棒初始大小为 100,角色、 背景如图所示;
- 1秒后,金箍棒说 “请输入大或小”,同时舞台下方显示输入框,如图所示;
- 输入完成后,孙悟空说出输入的内容 1秒;
- 如果孙悟空说“大”,那么金箍棒在1秒内逐渐变大,直到大小为150,如图所示;
- 如果孙悟空说“小”,那么金箍棒在 1秒内逐渐变小,直到大小为 50,如图所示。
评判标准:
- 2分:满足"具体要求"中的1)
- 3分:满足"具体要求"中的2)
- 3分:满足"具体要求"中的3)
- 6分:满足"具体要求"中的4)
- 6 分:满足"具体要求"中的5)
二.思路分析
本题包含两个角色,分别是孙悟空和金箍棒,如图所示:
本题考查的知识点包括外观编程和事件广播机制。
题目的要求比较简单,金箍棒询问“请输入大或小”,待用户输入大或小后,孙悟空说大或小,接着金箍棒变大或变小,如图所示:
如何在两个角色之间来回切换流程呢?
这是要解决的第一个问题,答案是使用广播机制,如果有明确的执行顺序,得使用“广播并等待”指令。
其次,金箍棒如何在1秒内从100变到150或50呢?
Scratch提供的指令中,有“1秒内滑行到x,y”,但没有“1秒内将大小增加到”。
针对这个问题,我们可以粗略估计一下,由于重复执行指令本身是需要花费时间的,可以利用次数来控制时间。
如果每次大小增加1(或-1),一共需要重复执行50次,如果每次大小增加2(或-2),则需要重复执行25次,看看哪个更接近1秒。
思路有了,接下来,我们就进入程序实现环节。
三.编程实现
根据上面的思路分析,我们分三步来编写程序:
- 金箍棒询问
- 孙悟空说话
- 金箍棒变化
1. 金箍棒询问
切换到金箍棒角色,编写代码如下:
代码非常简单,强调两点:
- 角色的初始化设置包括位置和大小,尤其是大小,必须要设置;
- 在询问之后,使用的是“广播并等待”指令,这可以确保在孙悟空说话之后才能执行下面的代码;
2. 孙悟空说话
切换到孙悟空角色,编写代码如下:
代码非常简单,说明两点:
- 角色坐标的设置在题目中没有要求,但是我们应该有这样的好习惯;
- “回答”指令相当于是一个全局变量,每个角色都可以直接使用;
3. 金箍棒变化
切换到金箍棒角色,在”广播并等待“指令下面继续编写代码如下:
代码比较简单,强调两点:
- 这里使用了两个”如果...那么“指令,没有使用”如果...那么...否则“指令,是确保只有在输入小的时候金箍棒才变小;
- 这里的次数和大小并不是唯一的,只要确保在1秒内就可以;
至此,整个作品就创作好了,就是这么简单。
四.总结与思考
本题是初/中级组编程部分第1题,分数为20分,积木块数量23个左右,涉及到的知识点主要包括:
- 外观编程;
- 问答指令;
- 事件广播机制;
作为本次国赛的第1题,题目比较简单,完成时间5分钟左右,基本上是一道送分题。关键点有两个,一是如何确保两个角色严格按照顺序轮流执行程序,二是如何通过循环控制程序的执行时间。
留一道思考题,如何精确计算循环执行的时间(小提示:计时器)?你还有什么好的方法吗?