占领矩阵-第15届蓝桥省赛Scratch中级组真题第5题

导读\]:超平老师的《**Scratch蓝桥杯真题解析100讲》**已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第190讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《[Scratch蓝桥杯历年真题](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NDc5MTE4MA==&action=getalbum&album_id=2405366247552204802#wechat_redirect "Scratch蓝桥杯历年真题")》并订阅合集,查阅教程更方便。 第15届蓝桥杯省赛已于2024年8月24日落下帷幕,中级组编程题一共有6题,分别如下: * [抓不住的蜜蜂](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247532808&idx=1&sn=7911aab560bd1ccae17097b1d00d528d&chksm=c0183a6bf76fb37d1345a43fc23349ddafe0136103401e04ac4fd175cc02ae31a506a1d52701&scene=21#wechat_redirect "抓不住的蜜蜂") * [穿越病毒区](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247532922&idx=1&sn=50fa31c61d59498229df90ec765722b6&chksm=c0183a19f76fb30f328e26e1bc823b2c526844d1264983531960f991dd3d15ccf295e6736bdc&scene=21#wechat_redirect "穿越病毒区") * [画台扇](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247532986&idx=1&sn=b749f972d47b338822fafe8b0955ade4&chksm=c0183ad9f76fb3cf3cfc58702aea8b2b813001de2ddcb639883a23856a00e214a8d3d00201a8&scene=21#wechat_redirect "画台扇") * [收集松果](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247533085&idx=1&sn=6024b1482e7cf3552ab00ed544d3672d&chksm=c018397ef76fb068a5abd063c3013a60396cf606a5c053bc33e98b0dae082a999067cd26f24b&scene=21#wechat_redirect "收集松果") * 占领矩阵 * 截取递增数 **占领矩阵,**本题是2024年8月24日举行的第15届蓝桥省赛Scratch中级组编程第5题,题目要求创作一个占领矩阵作品。点击绿旗,瞬间出现一个5行5列的白色实心圆矩阵,在展示321倒计时效果后,造型1瞬间占领矩阵,1秒后,造型2从左下到右上逐渐占领矩阵,最后造型1从右上到左下逐渐占领矩阵。 先来看看题目的要求吧。 ### 一.题目说明 **编程实现:** 占领矩阵。 **具体要求:** 1). 点击绿旗,瞬间出现一个5行5列的白色实心圆组成的矩阵,如图所示; ![图片](https://img-blog.csdnimg.cn/img_convert/af2dd413f1da7c357547c0a6ed2419bc.png) 2). 然后,在矩阵中依次显示数字3、2、1,每个数字显示时长为 0.5 秒,数字的显示效果如图所示; ![图片](https://img-blog.csdnimg.cn/img_convert/39ae8a68a51165b6c99b66a42ae4e213.png) 3). 接下来, ![图片](https://img-blog.csdnimg.cn/img_convert/74a4477f0c63f22a4af249ea44bda31e.png) 瞬间占领整个矩阵,如图所示; ![图片](https://img-blog.csdnimg.cn/img_convert/bcb8a975e5a59138fd70134c3ae538d9.png) 4). 1秒后, ![图片](https://img-blog.csdnimg.cn/img_convert/5d9dea81b2c844d6f98f7dbc3abdffb2.png) 在2秒内从左下角开始向右上角按如下规律逐渐占领整个矩阵;(参考视频) ![图片](https://img-blog.csdnimg.cn/img_convert/32cf4a8c4b70ccfc42127c4ffbd61640.png) 5). 最后, ![图片](https://img-blog.csdnimg.cn/img_convert/547020fa209e64112747d23ec69a3f6f.png) 在2秒内从右上角开始向左下角按如下规律逐渐占领整个矩阵,而后游戏结束。(参考视频) ![图片](https://img-blog.csdnimg.cn/img_convert/700b0a06ee3408ba22a75961ab63b467.png) **评判标准:** * 10分:满足"具体要求"中的1); * 20分:满足"具体要求"中的2); * 6 分:满足"具体要求"中的3); * 22分:满足"具体要求"中的4); * 22分:满足"具体要求"中的5)。 ### 二.思路分析 本题只有一个角色,就是圆圈,如图所示: ![图片](https://img-blog.csdnimg.cn/img_convert/3c14064b27f33163b6c2de7703ef3126.png) 角色一共有4个造型,如图: ![图片](https://img-blog.csdnimg.cn/img_convert/7e2fa9d9a69f039254060e5e647f7814.png) 这是典型的克隆题目,考查的知识点主要包括克隆技巧、私有变量、自制积木、事件广播和列表等。 如果只考虑题目的要求1)、2)、3),那就比较简单了,直接使用"**克隆4兄弟** "和"**自私的ID**"模型。 题目的难点就在于要求4)和要求5),如何按照对角线(包括从左下到右上和从右上到左下)遍历矩阵,如图所示: ![图片](https://img-blog.csdnimg.cn/img_convert/7f326bb6e7bb6c541b6f6d1359e4ce9e.png) 对于这个问题,一般有如下两种思路: * 根据克隆体所处行和列,寻找规律,进行斜线遍历; * 直接按照对角线克隆圆圈; 相对来说,在Scratch编程中,使用第二种方式更为简单。 我们先来看两张图片吧,第一张图如下: ![图片](https://img-blog.csdnimg.cn/img_convert/d3cb69716a3d7ea16044bc51e864fe04.png) 第二张图如下: ![图片](https://img-blog.csdnimg.cn/img_convert/7ba0020354c0d75384c2dd8710ff172d.png) 熟不熟悉,这不就是金字塔排列么? 所以,我们可以借鉴金字塔的克隆技巧,对"**克隆4兄弟**"模型稍作一点修改,就可以完成对角线克隆了。 为了方便描述,可以对每一条对角线进行编号,先看左下方的5条对角线,如图: ![图片](https://img-blog.csdnimg.cn/img_convert/ea7911b1765396c73773979d6cd2c17c.png) 首先,从左下到右上,克隆体的数量依次为1、2、3、4、5,这个可以使用变量来控制克隆体的个数。 其次,每条对角线的起始x坐标都是一样的,大概是-95,y坐标相隔一个圆圈的距离,大概是50。 第三,对于每条对角线而言,下一个克隆体(如果有的话)的位置都是在上一个克隆体的位置上右移50、下移50。 这样一来,我们就可以使用使用"**克隆4兄弟** "模型结合**变量**来克隆这5条对角线了。 同理,对于右上角的对角线,可以画图如下: ![图片](https://img-blog.csdnimg.cn/img_convert/848deef927740b4a8a6ba2497d427557.png) 分析方法基本相同,克隆体的数量依次为5、4、3、2、1,使用变量来控制其数量即可。 这一次,每条对角线的起始y坐标都是一样的,大概是95,而x坐标相隔一个圆圈的距离50。 对于每条对角线而言,下一个克隆体(如果有的话)的位置也是在上一个克隆体的位置上右移50、下移50。 因此,我们可以按照这种方式,从左下到右上依次克隆9条对角线,然后将每条对角线上的克隆体作为一组进行编号。 同时,在克隆圆圈的时候,对每个克隆体进行编号,并将处在数字3、2、1位置上的编号分别存入三个列表中,这样就可以轻松地显示倒计时效果。 关键问题解决了,接下来,我们就进入程序实现环节。 ### 三.编程实现 根据上面的思路分析,我们分5步来完成作品: * 克隆矩阵 * 列表初始化 * 倒计时 * 从下到上占领矩阵 * 从上到下占领矩阵 **1. 克隆矩阵** 根据前面的思路分析,我们分两步来克隆矩阵,先克隆左下角的三角形排列,定义自制积木如下: ![图片](https://img-blog.csdnimg.cn/img_convert/59f6f78939961f849039282fefe57aa6.png) 代码不少,说明两点: 1). 变量"*_ID* "和"*_层*"要定义为私有变量,注意它们的初始值和更新位置; 2). 这里使用"*起点y*"变量来指定对角线的起始y坐标,可以更轻松地控制y坐标的变化; 同理,再定义一个自制积木由于克隆右上方的三角形排列,代码如下: ![图片](https://img-blog.csdnimg.cn/img_convert/bec60b443b59aa037bb97e4d0461d300.png) 代码基本差不多,强调3点: 1). 一共有9条对角线,前面已经克隆了5条,因此这里只需要克隆4条对角线; 2). 对于右上对角线排列,起点x坐标是变化的,因此使用了变量"*起点x*",并设置好其初始值; 3). 注意私有变量"*_层* "和"*_ID*"更新的位置; **2. 列表初始化** 这一步非常简单,将处在数字3、2、1位置上的克隆体的ID分别保存到3个列表中,先创建好"*数字3* "、"*数字2* "和"*数字1*"3个列表。 分别定义自制积木,如下: ![图片](https://img-blog.csdnimg.cn/img_convert/5ee4f322f768b33b237bf2c2e938121f.png) 这里有一个细节,我们怎么快速确定这些ID呢? 超平老师悄悄的告诉你一个小技巧,可以先将克隆体显示出来,并说出自己的ID,代码如下: ![图片](https://img-blog.csdnimg.cn/img_convert/6f78d32411db002d8f5227b660878eab.png) 执行代码,效果如下: ![图片](https://img-blog.csdnimg.cn/img_convert/25b1434cb3acbc66001b9c715e3adc95.png) 有了这些编号,就可以轻松地找到每个数字需要的ID了。 **3. 倒计时** 有了前面两步的准备,显示倒计时就比较简单了,先在绿旗指令下编写代码如下: ![图片](https://img-blog.csdnimg.cn/img_convert/8e3ea5ee4cd02264fe9f874ecba835ef.png) 对应的,对克隆体编写代码如下: ![图片](https://img-blog.csdnimg.cn/img_convert/d41b094498161ab9bb53a516c9df1f44.png) 代码比较简单,这里就不再解释了。 **4. 从下到上占领矩阵** 私有变量"*_层*"表示的是每个克隆体所在的对角线,如图: ![图片](https://img-blog.csdnimg.cn/img_convert/e775987853139053939d664b349a7745.png) 因此,我们可以定义一个变量"*当前层*",表示每次控制的层,依次改变每条对角线上的克隆体。 在绿旗代码块中继续编写代码如下: ![图片](https://img-blog.csdnimg.cn/img_convert/210057f0d47a0d0da1da5c8667429850.png) 对应的,编写接收广播的代码如下: ![图片](https://img-blog.csdnimg.cn/img_convert/c537e9386df54ef3b823884367fffbbe.png) 代码比较简单,强调3点: 1). 显示倒计时花了1.5秒,还需要等待1秒,因此一共需要等待2.5秒; 2). 发送广播消息的代码一定要写在绿旗指令下,绿旗指令控制的是本体,只需要本体发送一个广播消息即可; 3). 两次广播之间稍微等待一下,确保在2秒之内能占领矩阵,至于这里的广播方式,使用哪一种都可以; **5. 从上到下占领矩阵** 在上面的代码块中继续编写代码如下: ![图片](https://img-blog.csdnimg.cn/img_convert/45412cf40c16db9a17811f118cbbe5c4.png) 同理,编写接收广播的代码如下: ![图片](https://img-blog.csdnimg.cn/img_convert/7cd73df854fb27662ad5f66961315648.png) 至此,整个作品就创作好了,是时候来测试自己的作品啦。 ### 四.总结与思考 本题是中级组编程部分第5题,分数为80分,积木块数量120个左右,涉及到的知识点主要包括: * 克隆技巧; * 自制积木; * 私有变量; * 事件广播机制; * 列表; 作为本次中级组省赛的第5题,难度较大,完成时间20分钟左右,本题的难点是如何整体控制每条对角线上的克隆体。 实际上,关于类似的场景在之前的真题中也出现过,比如第13届国赛的点亮LED屏幕,如图所示: ![图片](https://img-blog.csdnimg.cn/img_convert/7c7f0e53cea9e2019c23943c31ff5d41.png) 具体详情可以参考《[LED屏幕-第13届蓝桥杯Scratch国赛真题第7题](http://mp.weixin.qq.com/s?__biz=Mzg5NDc5MTE4MA==&mid=2247490260&idx=1&sn=46246538b5e094a8c6adddcec83de2a5&chksm=c01b61b7f76ce8a1006c343ed2d443dbae1993b1e377ffa06ed6562a0251f90c07e7cca3e254&scene=21#wechat_redirect "LED屏幕-第13届蓝桥杯Scratch国赛真题第7题")》这篇教程。 在Scratch中,类似的问题,通用的解决方案就是熟练掌握各种不同排列的克隆技巧,比如标准的矩形、三角形、金字塔、圆形、螺旋形等。具体来说,就是灵活运用"**克隆4兄弟**"模型,稍微复杂一点的需要结合变量和列表等数据结构。 退一步讲,在比赛的时候,如果实在无法实现对角线克隆,你也可以按照常规的方式完成5行5列的矩阵克隆,确保满足题目的前3个要求,这样可以快速拿到36分,将近一半的分数,也还是蛮划算的吧。 超平老师给你留一道思考题,如果不使用上面介绍对角线克隆技巧,能否找到同一条对角线上的克隆体呢? 你还有什么好的方法吗,非常欢迎您和超平老师交流分享。 如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄 需要素材和源码的,可以移步至"超平的编程课"gzh。

相关推荐
Naive_78 小时前
蓝桥杯准备(前缀和差分)
java·职场和发展·蓝桥杯
ChoSeitaku9 小时前
NO.63十六届蓝桥杯备战|基础算法-⼆分答案|木材加工|砍树|跳石头(C++)
c++·算法·蓝桥杯
xuanjiong11 小时前
纯个人整理,蓝桥杯使用的算法模板day2(0-1背包问题),手打个人理解注释,超全面,且均已验证成功(附带详细手写“模拟流程图”,全网首个
算法·蓝桥杯·动态规划
你今天刷题了吗?12 小时前
蓝桥杯练习:翻转二叉树
蓝桥杯
Jasmin Tin Wei1 天前
蓝桥杯 web 学海无涯(axios、ecahrts)版本二
前端·蓝桥杯
SheepMeMe1 天前
蓝桥杯2024省赛PythonB组——日期问题
python·算法·蓝桥杯
随便昵称1 天前
蓝桥杯专项复习——前缀和和差分
c++·算法·前缀和·蓝桥杯
脑子慢且灵1 天前
蓝桥杯冲刺:一维前缀和
算法·leetcode·职场和发展·蓝桥杯·动态规划·一维前缀和
姜威鱼1 天前
蓝桥杯python编程每日刷题 day 21
数据结构·算法·蓝桥杯
凯强同学1 天前
第十四届蓝桥杯大赛软件赛省赛Python 大学 C 组:6.棋盘
python·算法·蓝桥杯