专注力训练游戏-第15届蓝桥第4次STEMA测评Scratch真题精选

[导读]:超平老师的《**Scratch蓝桥杯真题解析100讲》**已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第171讲。

第15届蓝桥杯第4次STEMA测评已于2024年1月28日落下帷幕,编程题一共有6题,分别如下:

**专注力训练游戏,**本题是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分钟左右,难点有两个,一是如何构造随机列表,二是如何依次让数字消失。

构造指定数字的随机列表,这是一个非常典型的需求,在之前的真题也出现过,比如:

最简单的方法就是超平老师总结的"插队算法",一定要熟练掌握并做到灵活运用。很多游戏都会用到这一技巧,比如记忆翻牌、数字华容道等。

超平老师给你留一个思考题,本作品中,在点击数字的时候,鼠标要碰到有颜色的部分,否则没有效果,用户体验不是特别好,你有什么好的改进办法吗?

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要素材和源码的,可以移步至"超平的编程课"gzh。

相关推荐
天玑y7 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
自陈7 小时前
蓝桥杯嵌入式客观题合集
蓝桥杯·蓝桥杯嵌入式客观题
DANGAOGAO12 小时前
蓝桥杯4. Fizz Buzz 经典问题
算法·蓝桥杯
weixin_4462608512 小时前
24年蓝桥杯及攻防世界赛题-MISC-3
网络安全·蓝桥杯
weixin_4462608513 小时前
24年蓝桥杯及攻防世界赛题-MISC-2
网络安全·蓝桥杯
CV金科20 小时前
蓝桥杯—STM32G431RBT6按键的多方式使用(包含软件消抖方法精讲)从原理层面到实际应用(一)
stm32·单片机·嵌入式硬件·蓝桥杯
CV金科2 天前
蓝桥杯-STM32G431RBT6(串口)
c语言·stm32·单片机·嵌入式硬件·蓝桥杯
weixin_446260852 天前
24年蓝桥杯及攻防世界赛题-MISC-1
网络安全·蓝桥杯
abments2 天前
蓝桥杯DS18B20程序源码
职场和发展·蓝桥杯
CV金科3 天前
蓝桥杯-STM32G431RBT6(解决LCD与LED引脚冲突的问题)
c语言·stm32·单片机·嵌入式硬件·蓝桥杯