[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第139讲。
小狗避障,本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组编程第4题,题目要求编程实现小狗避障效果。玩家输入一个5-8之间的数字,在舞台上呈现对应数量的柱子,1秒后小狗水平向右移动,并且依次绕过每根柱子。
先来看看题目的要求吧。
一.题目说明
编程实现:
小狗避障。
具体要求:
1). 点击绿旗,角色、背景如图所示;
2). 舞台下方出现询问框:"输入5-8之间的一个数字"(包含5和8);
3). 如果输入的数字不在5-8之间,询问框说:"请重新输入5-8之间的一个数字";
4). 如果输入的数字在5-8之间,在舞台上呈现对应数量的避障柱子;
5). 等待1秒,小狗水平向右移动,并按照以下要求绕过每根柱子;
要求:从第1根柱子后面绕过,从第2根柱子前面绕过,从第3根柱子后面绕过……以此类推。(可明显看到小狗跑动的过程,且动作连贯没有延迟与卡顿,请以程序演示视频为准);
6). 3秒内小狗到达舞台右边缘,程序结束。
评判标准:
-
5分:满足"具体要求"中的1);
-
5分:满足"具体要求"中的2);
-
10分:满足"具体要求"中的3);
-
15分:满足"具体要求"中的4);
-
20分:满足"具体要求"中的5);
-
5分,满足"具体要求"中的6)。
二.思路分析
本题包含两个角色,分别是小狗和柱子,如图所示:
其中,小狗角色有4个造型,如图:
根据题目描述,可以将作品拆分成3个小模块:
-
玩家输入数字
-
克隆柱子
-
小狗向右移动
其中,玩家输入数字需要使用问答指令,但是要确保输入的数字在5~8之间,如果不在这个范围内,则重新提问,一般的解决方案是使用直到循环。
克隆柱子比较简单,根据玩家输入的数字自左至右依次克隆即可。
小狗向右移动也比较简单,不过这里有一个难点,就是要求小狗从奇数根柱子后面绕过,从偶数根柱子前面绕过。
这就涉及到角色的层次关系,如果将柱子从1开始编号,对于编号为奇数的柱子,要移到前面,编号为偶数的柱子则移到后面。
这里有一个小疑问,是改变小狗的层次关系简单呢,还是改变柱子的层次关系更简单呢?
相对来说,改变柱子的层次关系更为简单,你说是吧。接下来,我们进入具体的编程实现环节。
三.编程实现
根据题目描述和思路分析,我们可以分如下3个步骤来编写程序:
-
玩家输入数字
-
克隆柱子
-
小狗向右移动
1. 玩家输入数字
首先,要明确到底是哪个角色在询问呢,小狗、柱子还是舞台背景?
小狗肯定不行,因为点击绿旗时小狗处于显示状态,柱子和舞台背景都是可以的,相对来说,在柱子角色中询问更为简单。
其次,要注意询问的内容有两句,一句是”输入5-8之间的一个数字“,一句是”请重新输入5-8之间的一个数字“。
如果输入的数字不在5~8之间,则一直要重复询问,切换到柱子角色中,编写代码如下:
同时要注意,角色的初始化不能少,包括隐藏和坐标设置。
2. 克隆柱子
一旦用户输入正确,就要开始克隆柱子了,克隆比较简单,重点是如何给柱子进行编号,从而区分哪个处于奇数位置,哪个处于偶数位置。
相信聪明的你已经想到了,使用变量,全局变量和私有变量都可以。如果是全局变量,就表示柱子的顺序,如果是私有变量,就可以用来表示柱子的编号。
此处,我采取私有变量的方案,在上面的代码块后面,继续编写代码如下:
这里的”_ID“是私有变量,加下划线只是个人习惯,重要的是要勾选”仅适用于当前角色“,如图:
在代码的最后面,增加了一个”广播go“的指令,其作用是告诉小狗可以开始移动了,稍后在第3步编写具体代码。
一旦生成了柱子克隆体,就需要将柱子显示出来,同时根据其ID设置层次关系,对应的代码如下:
判断奇偶数就是看数字能不能被2整除,如果能整除就说明是偶数,否则就是奇数,所以这里用到了余数指令。
3. 小狗向右移动
点击绿旗时,小狗位于舞台左下方,对小狗角色进行初始化设置,切换到小狗角色,编写代码如下:
在接收到”go“广播消息后,开始向右移动,对应的代码如下:
简单说明4点:
1). 题目要求等待1秒小狗才开始移动,所以在接收到广播消息之后,增加了一个”等待1秒“指令;
2). 判断是否到达舞台右边缘,不能直接使用”碰到舞台边缘“指令,这是因为舞台边缘包括上下左右4个边缘,角色的初始位置就位于舞台左边缘;
3). 由于在移动的过程中有连贯动作,也就是切换造型,但是不能切换太快,所以增加了一个”等待0.1秒“指令;
4). 题目要求3秒内到达舞台右边缘,可以通过改变移动速度来实现,比如这里的”将x坐标增加20“,你也可以设置为其它的值;
至此,小狗避障作品就创作好了,看看这只聪明的小狗是如何绕过柱子的吧。
四.总结与思考
本题是中级组编程部分第4题,分数为60分,积木块数量37个左右,涉及到的知识点主要包括:
-
问答指令;
-
克隆编程;
-
私有变量;
-
外观编程,包括造型切换、显示、隐藏和层次关系设置;
-
运算指令,包括比较运算、逻辑运算和余数运算;
-
事件广播机制;
这是中级组的第4题,题目难度一般,完成时间在15分钟左右,难点在于如何实现小狗轮流绕过柱子的效果。
作品代码不多,但是涉及到的知识点不少,这就要求考生具备扎实的编程基础,能够灵活运用各知识点快速创作作品。
留给你一个小小的思考题,题目要求3秒内到达舞台右边缘,如果要精确到刚好3秒,该如何实现呢?
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄
需要素材和源码的,可以移步至“超平的编程课”gzh,或者私信本人。