
导读\]:超平老师的《**Scratch蓝桥杯真题解析100讲》**已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第171讲。 第15届蓝桥杯第4次STEMA测评已于2024年1月28日落下帷幕,编程题一共有6题,分别如下: * [青蛙过河](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247527703&idx=1&sn=7a5c53c7d67abd2e04be7a155c7082cf&chksm=c0181674f76f9f62adc3d7c36fd7b3de84f52719f65621c438173e3135becf312f69a0915dd5&scene=21#wechat_redirect "青蛙过河") * [巡逻的直升机](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247527704&idx=1&sn=4413f17712904b350395ea43ab217a0a&chksm=c018167bf76f9f6d0ec0642560a98b95c3acab45424fde2f5382e4e68b97b46dd51acb10493a&scene=21#wechat_redirect "巡逻的直升机") * [栽花](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247527705&idx=1&sn=8bc5efd0137d3b83f85d98023d383142&chksm=c018167af76f9f6c944257340a2ae207d7b165334337c73c23ed49ba87c6f097399841219854&scene=21#wechat_redirect "栽花") * [绘制风车](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247527764&idx=1&sn=3a492633a21a1b8c341a216c978ebd11&chksm=c0181637f76f9f210b54f6937bdcc47a5478d3d64a4cce2c280947edfd1a16e8d08e0f665843&scene=21#wechat_redirect "绘制风车") * 专注力游戏训练 * 扑克牌排序 **专注力训练游戏,**本题是2024年1月28日举行的第15届蓝桥STEMA测评Scratch编程初/中级组编程第5题。题目要求编程创作一个专注力训练游戏,在九宫格中按随机顺序出现1\~9这9个数字,玩家必须按照顺序依次点击数字才能完成游戏。 先来看看题目的要求吧。 ### 一.题目说明 **编程实现:** 专注力训练游戏。 **具体要求:** 1). 点绿旗,变量"用时"为0,背景如图所示;  2). 1秒后, 1、2、3、......、9这9个数随机出现在九宫格中,如图所示; 注意:每行的三个数字y坐行相同,每列的三个数字x坐标相同,行间距和列间距相同。  3). 九宮格里的数字完全呈现后,"用时"开始每隔1秒增加1; 4). 按顺序依次点击1、2、3、......、9,开始点击1时,1会消失,下一次只有点击2时,2会消失,点击其他数字无任何效果,以此类推;(参考视频) 5). 全部数字都消失后,"用时" 不再变化,背景如图所示。  **评判标准:** * 5分:满足"具体要求"中的1); * 27分:满足"具体要求"中的2); * 8分:满足"具体要求"中的3); * 30分:满足"具体要求"中的4); * 10分:满足"具体要求"中的5)。 ### 二.思路分析 本题只有1个数字角色,如图所示:  对于数字角色一共有9个造型,分别表示数字1\~9,如图:  对应的,舞台背景有两个,背景1表示游戏中,背景2表示游戏胜利,如图:  本题是一道经典的九宫格问题,考查的知识点主要包括列表、克隆、变量和算法等。 根据题目的描述,我们使用计算思维中的拆分思想将游戏分成如下4个部分: * 克隆九宫格数字 * 确保9个数字随机出现 * 依次点击数字 * 计时功能 其中,第一步比较简单,直接使用超平老师总结的"**克隆4兄弟模型**",可以快速完成,只是不能保证9个数字是随机出现的。 因此,第二步的任务就是确保9个数字是随机出现的,这需要使用列表,同时结合插队算法,就可以让1\~9按照随机顺序插入到列表。  插队是一种不文明的现象,在生活中随处可见,相信你肯定非常熟悉。 那什么是**插队算法**呢,简单来说,就是当前有N个人,如果允许随意插队,那么你可以选择的位置有N+1个,举例说明如下: 当前0人,你就是第1名,只有1个位置;当前1人,插队,排第1名,不插队,排第2名,有2个位置可选;当前2人,插到最前面,排第1名,插到中间,排第2名,不插队,排第3名,有3个位置可选;......当前N人,则有N + 1个位置可选; 结合列表中的插入指令和随机数指令就可以轻松实现数字的插入,如图所示:  再通过循环和变量,就可以轻松地将数字1\~9按随机顺序插入到列表中,效果如下:  有了这个列表,我们就可以按照列表中的数字依次设置每个克隆体的造型。 接下来是第3步,依次点击数字,这里需要弄清楚两个问题: 1). 被点击的数字是几? 2). 即将要消失的数字是几? 第一个问题非常简单,每个克隆体都有自己的造型,直接使用造型编号或造型名称即可。 第二个问题也不难,数字是按照顺序依次消失的,可以创建一个变量表示即将要消失的数字,初始值设置为1,每消失一个数字,将变量加1即可。 第4步是计时,这个就比较简单了,结合变量和循环就可以,需要注意计时结束的条件。 思路有了,接下来,我们就进入具体的编程实现环节。 ### 三.编程实现 根据上面的思路分析,我们分5步来编写程序: * 初始化工作 * 构造随机列表 * 克隆九宫格 * 依次点击数字 * 计时功能 **1. 初始化工作** 准备工作包括如下几个: * 舞台背景的设置 * 创建变量并初始化 * 隐藏本体 在数字角色中编写代码如下:  **2. 构造随机列表** 创建一个列表"*数字*",根据前面的思路分析,将构造随机列表的代码定义成自制积木,代码如下:  代码不多,强调两点: 1). 在插入数据之前一定要将列表清空; 2). 从1开始,依次插入1\~9,对于数字1而言,只有1个位置,数字2则有两个位置,数字9有9个位置,也就是说数字i,有i个位置,所以随机数的范围是1\~i之间。 这就是强大的插队算法,代码其实不多,关键在于理解和灵活运用。 **3. 克隆九宫格** 这是一个典型的3行3列排列效果,最简单的莫过于使用"**克隆4兄弟模型**",在克隆的同时,按照列表数据依次切换本体的对应造型。 为了方便,仍然使用自制积木来组织代码,如下:  代码有点多,说明3点: 1). 这里再一次使用了变量"*i*",i的作用就是用作计数器,可以反复使用,但是要注意重新初始化; 2). 题目提供的参考视频中,数字是挨个克隆出来的,所以自制积木不需要勾选"运行时不刷新屏幕"。 有了上面定义的两个自制积木,就可以按照题目要求克隆好九宫格了,在绿旗中增加代码如下:  注意,在克隆数字之前,需要等待1秒。对应的,需要将克隆体显示出来,编写代码如下:  **4. 依次点击数字** 先创建一个变量"*序号*",表示即将要消失的数字,将初始值设为为1,在绿旗中增加代码如下:  然后就是在点击克隆体的时候,判断其造型编号和序号是否相等,代码如下:  这样一来,就可以按照顺序依次点击数字并使其消失了。 **5. 计时功能** 这一步比较简单,每隔1秒将变量加1,当序号等于10时,说明所有的数字都消失了,计时结束,在绿旗代码中继续编写代码如下:  代码不难,说明3点: 1). 计时功能应该写在绿旗代码中,不要在克隆体中编写,因为克隆体有多个; 2). 计时的时候,应该先"*等待1秒* ",再"*将用时增加1*",不要搞反了; 3). 计时结束,换成2背景,显示成功的界面; 至此,整个作品就创作好了,赶紧来测试一下自己的专注力吧,看看最快几秒能完成训练。 ### 四.总结与思考 本题是初/中级组编程部分第5题,分数为80分,积木块数量45个左右,涉及到的知识点主要包括: * 列表的基本使用; * 克隆编程; * 循环编程,尤其是嵌套循环; * 运动编程; * 变量的使用; * 插队算法; 这是初级组最后一题,难度中等,完成时间25分钟左右,难点有两个,一是如何构造随机列表,二是如何依次让数字消失。 构造指定数字的随机列表,这是一个非常典型的需求,在之前的真题也出现过,比如: * 《[玛雅神庙-第12届蓝桥杯Scratch国赛真题第6题](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247485623&idx=1&sn=07c5bc72b6ebf786cad212472b9c5e78&chksm=c01b73d4f76cfac29457e51b06eecf0cf0918a36ba60a03c12f19a1966352201bcf49ac36744&scene=21#wechat_redirect "玛雅神庙-第12届蓝桥杯Scratch国赛真题第6题")》 * 《[红绿灯记忆游戏-第13届蓝桥杯Scratch选拔赛真题精选](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247499377&idx=1&sn=447cc82c832409cf1349d7cb76da882b&chksm=c0188512f76f0c043397499433fd4f0410fe82c7ceda896aa334aedd5ff628969cc1fb44c61c&scene=21#wechat_redirect "红绿灯记忆游戏-第13届蓝桥杯Scratch选拔赛真题精选")》 * 《[拼图游戏-第14届蓝桥杯国赛Scratch真题初中级组第5题](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247517086&idx=1&sn=a6e10f0382050d73abf76c6ca5f62c5d&chksm=c018f8fdf76f71eb77a887c810ad6c07203c3b865a0f7a2d729f657d31de241295ecc987d68e&scene=21#wechat_redirect "拼图游戏-第14届蓝桥杯国赛Scratch真题初中级组第5题")》 最简单的方法就是超平老师总结的"**插队算法**",一定要熟练掌握并做到灵活运用。很多游戏都会用到这一技巧,比如记忆翻牌、数字华容道等。 超平老师给你留一个思考题,本作品中,在点击数字的时候,鼠标要碰到有颜色的部分,否则没有效果,用户体验不是特别好,你有什么好的改进办法吗? 如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄 需要素材和源码的,可以移步至"超平的编程课"gzh。