王子与骑士-第14届蓝桥杯STEMA测评Scratch真题精选

news2024/11/24 9:48:52

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

蓝桥杯选拔赛现已更名为STEMA,即STEM 能力测试,是蓝桥杯大赛组委会与美国普林斯顿多文化教育研究中心合作推出的考试项目。STEM能力测试致力于综合评价学生的 STEM 水平,对学生的科技素养、逻辑思维和编程能力等三方面进行客观科学的测试。

王子与骑士,本题是2023年2月12日举行的第14届蓝桥杯STEMA考试真题初级组编程第4题,也是压轴题,题目要求编写一个简单的王子与骑士作品。

先来看看题目的要求吧。

一.题目要求

编程实现:

王子与骑士。

具体要求:

1). 运行程序,王子出现在舞台左侧,克隆 6 名骑士,排成 2 行 3 列的队伍;

2). 用鼠标左键点击一名骑士,被点击的骑士大小增加 20,并说出自己在第几行,第几列2秒,之后骑士恢复原来大小,如下图,左下角第一个骑士在第1行第1列;

3). 用鼠标左键点击一次王子,出现询问框,王子说:“请输入指令”;

4). 当输入“前进”指令,从第1行第1列骑士到第2行第3列骑士依次水平向左移动,当到达舞台左边缘后消失(骑士需从王子身后通过);

5). 当输入“集合”指令,骑士恢复初始呈现效果,程序结束(程序结束后,骑士不消失仍然保持初始呈现效果)。

评判标准:

  • 3分:满足“具体要求” 中的1);

  • 6分:满足“具体要求”中的2);

  • 3分:满足“具体要求”中的3);

  • 6分:满足“具体要求” 中的4);

  • 7分:满足“具体要求” 中的5)。

二.思路分析

本题包含两个角色,分别是王子和骑士,如图所示:

王子角色的功能比较简单,主要就是询问,然后根据回答给骑士发送相应的的广播消息。

重点是骑士角色,包含如下几个功能:

1). 按照两行三列的方式克隆;

2). 点击骑士时说出自己所在行和列;

3). 当玩家输入“前进”时,依次左移至舞台边缘消失;

4). 当玩家输入“集合”时,重新排队,然后结束程序;

这里的难点是第2项和第3项,我们如何知道每个克隆体在哪一行哪一列呢,又如何控制这些克隆体依次开始移动呢?

答案是私有变量,在Scratch编程中,在生成克隆体时,所有的克隆体都具有相同的特征,包括坐标、大小、造型、外观特效等特征,要想区分不同的克隆体,就需要使用私有变量。

所以,我们可以创建3个私有变量“行”、“列”和“id”,分别表示每个骑士克隆体所在的行、列以及编号。

三.编程实现

根据题目描述和思路分析,我们可以分5步来编写程序:

  • 初始化设置

  • 克隆骑士

  • 点击骑士报告位置

  • 骑士依次前进

  • 骑士集合

1. 初始化设置

首先是王子的初始化,包括位置和层次关系,为了确保骑士是从王子身后穿过去的,可以将王子设置到最前面,其初始化代码如下:

骑士角色则需要隐藏起来,同时设置其大小,代码如下:

2. 克隆骑士

根据上面的思路分析,先在骑士角色中创建3个私有变量,如图所示:

注意,这三个必须是私有变量,为了和全局变量进行区分,超平老师建议你在私有变量前面增加一个下划线。

接下来,我们就开始克隆骑士了,对于这种M行N列的规则排列,通常我们会使用两层循环来实现克隆,重点是注意设置好每一行第一个克隆体的位置。

由于在点击绿旗和集合时都需要克隆骑士,为了简化代码,我们定义一个自制积木用于克隆6个骑士,代码如下:

简要说明四点:

1). 对于行而言,需要先将行设置为1,然后在克隆完一行之后,将行增加1;

2). 对于列而言,每一行都需要从第1列开始,因此在克隆每一行之前都需要将列设置为1,每克隆一个其实,就将列增加1;

3). 对于编号而言,先将_id设为0,然后在每次克隆骑士之前将_id增加1,这样就可以确保6个克隆体的编号依次是1、2、3、4、5和6。

4). 为了确保第2行的克隆体盖住第1行的克隆体,在每一行克隆完成后,增加了一个“后移10层”指令;

有了这个自制积木,在绿旗指令代码块的后面加上自制积木指令,即可,代码如下:

相应的,需要将克隆体显示出来,代码非常简单,如下:

3. 点击骑士报告位置

当点击骑士克隆体时,需要将大小增加20,同时说出自己所在的行和列,代码如下:

为了避免连续点击,这里使用的是循环指令 + 条件指令,如果使用“当角色被点击”指令,则可以连续点击,不停的变大和说行列。

正是因为有了私有变量,我们可以保存每个克隆体的行和列,所以代码也就非常简单了。

4. 骑士依次前进

当点击王子角色时,会出现询问框,并根据玩家输入的内容发送相应的广播消息,在王子角色中编写代码如下:

相应的,当骑士克隆体接收到广播消息之后,要依次前进,注意不是同时移动,这该怎么实现呢?

如果你仔细观察作品效果(考试的时候是有视频播放的),可以发现,这里的6个克隆体依次开始移动,也就是第1个移到最左边消失了,然后才是第2个、第3个...,直到第6个,同时越靠近左边的骑士移动的速度越慢,越靠近右边的骑士移动的越快。

讲到这里,你想到了什么?

如果你比较熟悉Scratch各种运动指令,肯定会想到“在1秒内滑行到x,y”指令,没错,就是它。不管是哪个克隆体,我们只要保持其y坐标不变,然后将x坐标设置为舞台左边缘即可,比如-235。

那怎么让克隆体依次出现呢,还记得前面的私有变量_id吧,6个克隆体的_id依次是1、2、3、4、5和6,直接使用等待指令,是不是就可以解决了,真是想什么来什么,对应的代码如下:

代码其实非常简单,关键在于思路和方法,当骑士移到最左边,删除即可。

5. 骑士集合

当接收到“集合”指令时,又需要重新生成克隆体并排列,这个比较简单,在接收到广播之后,再次调用自制积木即可。

但是我们要考虑两个问题:

1). 如果舞台上还要克隆体,直接调用自制积木再次克隆,会出现双倍的克隆体,因为克隆体也会接收到广播,并再次克隆;

2). 按照题目描述,一旦再次集合,要结束程序,但是克隆体仍然在舞台上,这就意味着不能使用“停止全部脚本”指令,同时还要让克隆体不能响应点击事件;

所以,在再次克隆骑士之前,需要先删除之前的克隆体,我们可以使用并行代码块来解决,同时确保先删除,再克隆,代码如下:

这里的“等待0.1秒”指令可以确保删除克隆体指令后执行,然后再克隆新的骑士。

虽然,这里使用了“停止该角色的其他脚本”指令,但是一旦重新生成克隆体,“当作为克隆体启动时”代码块仍然会执行,再次点击,还是会有效果,该怎么解决呢?

我们可以使用一个变量来表示是否说“集合”了,增加一个全局变量“集合”,在绿旗点击时设置为0,代码如下:

然后在回答“集合”时,将变量设置为1,代码如下:

接下来,在克隆体启动时代码块中,增加一个判断,就可以确保在回答集合后不再响应鼠标点击了,代码如下:

相应的,在王子角色中的点击事件中,也增加一个判断,代码如下:

至此,整个作品就创作好了,你可以测试一下效果,看看是不是满足题目的所有要求。

四.总结与思考

本题分数为25分,积木块数量70个左右 ,涉及到的知识点主要包括:

  • 克隆编程技巧,重点是多行多列的克隆;

  • 私有变量的作用及其用法;

  • 角色的移动,重点是滑行指令的灵活运用;

  • 事件广播机制;

  • Scratch问答指令;

  • 自制积木的作用及其用法。

作为初级组最后一题,本题还是有一定难度的,重点考察了克隆编程,尤其是使用私有变量来区分不同克隆体的编程技巧。

同时还要求考生仔细看题,注重每一个细节,比如本题中的骑士依次向左移动,以及在集合之后结束程序但同时又需要保留克隆体。唯有如此,才能在众多的考生中脱颖而出。

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

需要素材和源码的,可以移步至“超平的编程课”gzh,或者直接联系作者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/366148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Navicat进行SSH加密方式连接MySQL数据库

前言近年来网络安全形式日趋严峻,为保障企业信息安全和业务连续性,越来越多的要求业务系统上线前需要满足等保要求。其中数据库作为存储数据的载体,安全更是重中之重。部分等保要求,mysql数据库不能通过直连方式连接,需…

炔基点击交联试剂1704097-05-1,Alkyne-A-DSBSO crosslinker,发生相应点击反应

1、理论分析:中文名:炔基-A-DSBSO crosslinker,英文名:Alkyne-A-DSBSO crosslinkerCAS号:1704097-05-1化学式:C25H32N2O12S2分子量:616.652、产品详情:外观:白色固体&…

动漫培训学校排行榜(最新)

哪家动漫培训学校比较好?价格也是关键!价格是一个企业盈利标准,有人认为便宜没好货,在目前这个竞争那么激烈的是时代,这个观点是非常有问题的。 一:学动漫的线上平台推荐 1、轻微课:轻微课是国…

ChatGPT是什么?为何会引爆国内算力需求?

过去十年中,通过“深度学习大算力”从而获得训练模型是实现人工智能的主流技术途径。由于深度学习、数据和算力这三个要素都已具备,全世界掀起了“大炼模型”的热潮,也催生了大批人工智能企业。大模型是人工智能的发展趋势和未来大模型&#…

Redis主从复制过程

将目前服务器加入到端口号为6379的从服务器 一主二仆 当期中一台从服务器宕机之后 从服务器重启之后会变成单独的主服务器,与之前的主从复制没有关系,重新使用slaceof命令才能恢复到之前一样 主服务器宕机后,从服务器不会成为主服务器&…

shell的测试语句

一、shell的条件测试语句 在写shell脚本时,经常遇到的问题就是判断字符串是否相等,可能还要检查文件状态或进 行数字测试,只有这些测试完成才能做下一步动作。 1.1、shell脚本中的条件测试如下: 1、文件测试 2、字符串测试 3、数…

SPI实验

目录 一、SPI 简介 二、硬件原理 ECSPI3_SCLK ECSPI3_MISO和ECSPI3_MOSI ECSPI3_SS0 三、I.MX6U ECSPI 简介 ECSPIx_RXDATA ECSPIx_TXDATA ECSPIx_CONREG ECSPIx_CONFIGREG ECSPIx_PERIODREG​编辑 ECSPIx_STATREG 四、ICM-20608 简介 五、代码编写 1、创建文件及文…

BACnet协议详解——应用层说明二

文章目录写在前面3 BACnet APDU的传输3.1 需确认的请求报文传输3.2 分段的需确认请求报文的传输3.3 分段的复杂确认报文的传输3.4 分段确认APDU的传输3.5 重复的APDU和报文分段3.5.1 客户端事务处理状态机的中止3.5.2 服务端事务处理状态机的中止3.5.3 重复报文的处理3.6 失效资…

使用ChatGPT需要避免的8个错误

如果ChatGPT是未来世界为每个登上新大陆人发放的一把AK47, 那么现在大多数人做的事,就是突突突一阵扫射, 不管也不知道有没有扫射到自己想要的目标。每个人都在使用 ChatGPT。但几乎每个人都停留在新手模式。 避免下面常见的8个ChatGPT的错…

基于Tkinter制作定时器,提醒做某事

基于Tkinter制作定时器 文章目录基于Tkinter制作定时器一、前言二、需要的模块三、tkinter最简单的使用四、无边框tkinter窗口的创建五、时间的获取六、完整代码七、演示效果一、前言 对于喜欢用电脑的人来说, 一旦往那里一坐,就很容易忘记时间&#x…

安全相对论 | 45亿条快递数据疑似遭泄露,他们这样说……

近期,Telegram各大频道突然大面积转发某隐私查询机器人链接,网传消息称该机器人泄露了国内45亿条个人信息,疑似电商或快递物流行业数据。随着舆论的发酵,快递股出现闪崩,多家快递公司股价下降。事件发生后,…

双碳”目标下二氧化碳地质封存技术应用前景及模型构建实践方法

2022年七月七日,工业和信息化部、发展改革委、生态环境部关于印发工业领域碳达峰实施方案的通知落地。全国各省份积极响应,纷纷出台地方指导文件,标志着我国碳减排事业的全面铺开。二氧化碳地质封存技术作为实现我国“双碳”目标的重要一环&a…

解决线程不安全问题的方法

解决线程不安全问题: 一、原子性 synchronized关键字的特性(监视锁) 1、synchronized的互斥性 通过特殊手段,让count变成原子操作 举例:上厕所,人进入后上锁,用完了出来解锁,期…

编译原理【运行时环境】—什么是活动记录、 活动记录与汇编代码的关系

系列文章戳这里👇 什么是上下文无关文法、最左推导和最右推导如何判断二义文法及消除文法二义性何时需要消除左递归什么是句柄、什么是自上而下、自下而上分析什么是LL(1)、LR(0)、LR(1)文法、LR分析表LR(0)、SLR(1)、LR(1)、LALR(1)文法之间的关系编译原理第三章习…

专利撰写 为什么要申请专利 申请专利对个人有什么利益关系 专利申请实例 如何申请专利 专利申请办理流程

专利撰写 专利是对发明者或创造者所创造的发明或设计提供一定期限的独占权的法律保护。撰写专利需要考虑到多方面的因素,包括发明或设计的技术性、可行性、独创性、保密性等等。以下是一些关于专利撰写的常见问题和注意事项:专利类型:专利包括…

记一次后端生成Zip文件通过浏览器下载后文件损坏,无法打开,不可预知的末端错误,下载后文件比源文件增大

记一次后端生成Zip文件问题前言问题出现排查一、流没有关好二、写入了空白字节三、没有flush定位环节一、生成二、通过SwaggerUI、PostMan进行下载三、结论解决方法前言 在项目上线前夕,临时添加了个数据导出的接口,需求是导出压缩包,选择了项…

SpringCloud - Feign远程调用

目录 Feign的远程调用 RestTemplate方式调用存在的问题 介绍与初步使用 Feign的自定义配置 Feign运行自定义配置来覆盖默认配置,可以修改的配置如下: 配置Feign日志有两种方式: Feign性能优化 Feign底层的客户端实现: 连…

MATLAB R2020a 与PreScan8.5.0 详细安装教程(图文版)

目录MATLAB安装PreScan安装每文一语MATLAB安装 MATLAB是一款数学软件,用于科学计算、数据分析和可视化等任务。以下是MATLAB的几个优势: 丰富的工具箱:MATLAB拥有多种工具箱,包括信号处理、图像处理、优化、控制系统等&#xff0…

深度学习论文: EdgeYOLO: An Edge-Real-Time Object Detector及其PyTorch实现

深度学习论文: EdgeYOLO: An Edge-Real-Time Object Detector及其PyTorch实现 EdgeYOLO: An Edge-Real-Time Object Detector PDF: https://arxiv.org/pdf/2302.07483.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shangli…

SQL的四种连接-左外连接、右外连接、内连接、全连接

SQL的四种连接-左外连接、右外连接、内连接、全连接 内连接inner join…on… / join…on… 展现出来的是共同的数据 select m.Province,S.Name from member m inner join ShippingArea s on m.Provinces.ShippingAreaID; 相当于:select m.Province,S.Name from m…