[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第181讲。
如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。
第15届蓝桥杯省赛已于2024年8月24日落下帷幕,编程题一共有5题,分别如下:
-
游乐场
-
画西瓜
-
找不同
-
消除数字球
游乐场,本题是2024年8月24日举行的第15届蓝桥省赛Scratch初级组编程第2题,题目要求编程控制游乐场里摩天轮的转动和停止效果。在按下空格键时,如果摩天轮是静止的,就顺时针持续转动,否则就停止转动。
先来看看题目的要求吧。
一.题目说明
编程实现:
游乐场。
具体要求:
1). 点击绿旗,角色、背景如图所示;
2). 如果当前摩天轮是静止的,按下一次键盘空格键后,摩天轮开始顺时针持续转动;
3). 如果当前摩天轮是转动的,按下一次键盘空格键后,摩天轮停止转动;
4). 重复执行具体要求2)、3)。
评判标准:
-
2 分:满足"具体要求"中的1);
-
13分:满足"具体要求"中的2);
-
15分:满足"具体要求"中的3);
-
10分:满足"具体要求"中的4)。
二.思路分析
本题只有1个摩天轮角色,如图所示:
本题考查的知识点包括运动、按键处理和变量。
实际上,这是一道原题,出现在2023年12月17日举办的第3次STEME测评,可以参考《转动的风车-第15届蓝桥第三次STEMA测评Scratch真题精选》这篇教程。
解决本题的关键有两点:
-
如何控制角色的转动和停止;
-
如何更优雅的处理按键;
1. 如何控制角色的转动和停止
要让角色持续转动非常简单,只需要重复执行转动即可,如下:
怎么让角色停下来呢,很多同学立刻会想到停止脚本,这个当然是可以的,但有点麻烦。
实际上,还有更简单的做法,就是将右转的度数设置为0,如下:
简不简单,意不意外😄。
这其实就是状态的概念,我们的摩天轮角色就只有这两个状态,要么右转5度(也可以是其它度数),要么右转0度(停止不动)。
如何表示这个状态呢,你肯定想到了,一个小小的变量就可以轻松搞定,定义“速度”变量,如下:
接下来就是如何改变”速度“变量的事儿了。
2. 如何更优雅的处理按键
当按下空格键的时候,如果摩天轮是静止的,就开始顺时针持续转动,如果摩天轮是转动的,则停止转动。
换句话说,当变量“速度”为0的时候,将其设置为一个大于0的数字(比如5),否则就将其设置为0。
如何处理按键呢,在Scratch中一般有如下两种方式:
-
直接使用"当按下空格键"指令;
-
使用侦测模块中的“按下空格键”,再结合循环来判断;
你知道它们之间的区别吗?
前者使用的是事件指令,如图:
使用起来比较方便,但是它不受绿旗控制,也不受停止脚本指令控制,任何时候按下空格键,都会执行该代码块。
相对来说,使用后者的效果更好,只是在代码层面稍显麻烦一点。
当然了,如果你能够熟练掌控”等待条件“指令,还可以使用一个更加简洁的代码来编写程序,连变量都不需要了,简直不要太香了。
思路有了,接下来,我们就进入程序实现环节。
三.编程实现
根据上面的思路分析,我们分别使用两种方式来实现:
-
使用变量控制
-
巧妙使用等待条件指令
1. 使用变量控制
根据前面的思路分析,我们可以分如下两步:
-
摩天轮持续转动
-
处理按键
1.1 摩天轮持续转动
先创建一个变量“速度”,如下:
在绿旗代码块中,编写代码如下:
代码比较简单,说明两点:
1). 尽量要设置好角色的位置和方向;
2). 速度变量的初始值设置为0,表示刚开始处于静止状态;
1.2 处理按键
根据前面的思路分析,我们使用侦测模块中的”按下空格键“指令来处理按键,使用一个新的代码块,编写代码如下:
代码不多,但是细节很重要,强调3点:
1). 这里使用了等待指令,因此必须要单独的使用一个绿旗代码块,否则循环就会处于等待状态;
2). 为了避免长按情况,增加了一个松开按键的判断,在Scratch中没有松开按键指令,通常需要结合”不成立“指令来实现;
3). 如果不喜欢使用等待指令,你也可以使用”如果...那么“指令,但是不管哪一种方式,都要加上”等待按下空格键不成立“。
2. 巧妙使用等待条件指令
摩天轮只有两个状态,要么持续转动,要么静止不动,我们可以使用两个等待指令,编写代码如下:
是不是看起来非常简单,怎么理解呢?
刚开始时,摩天轮处于静止状态,当按下空格键后,它会持续右转,直到再次按下空格键结束循环,接下来就是重复这个过程。
这段代码的精髓是两个”等待0.2秒“指令,由于条件都是”按下空格键“,如果没有中间的”等待0.2秒“,两个条件就同时满足了,这样一来,摩天轮就再也转不起来了。
至此,整个作品就创作好了,是时候来控制自己的摩天轮了。
四.总结与思考
本题是初级组编程部分第2题,分数为40分,积木块数量10~20个左右,涉及到的知识点主要包括:
-
运动编程,重点是右转;
-
变量的使用;
-
按键处理;
-
等待条件指令的使用;
作为本次初级组省赛的第二题,难度一般,完成时间5分钟左右,关键点有两个,一是借助变量轻松实现角色的持续转动和停止,二是使用侦测指令优雅的处理按键操作。
题目并不难,但是不少同学在这道题上花了太多的时间,或者是没有达到理想的效果。大部分同学都是卡在第一个问题上,即如何在持续转动和停止之间进行切换。
如果你重视真题,把之前的真题都研究过了,这不就是给你送分的嘛。
相信你也注意到了,在上面给出的两种方案中,我们都用到了”等待条件“指令,这个指令看起来不起眼,但是非常的好用,一定要多用,和它成为好朋友,它可以让代码变得更加简洁。
你还有什么好的方法吗,非常欢迎您和超平老师交流分享。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄
需要素材和源码的,可以添加本人微信。