植树节种树-第12届蓝桥杯Scratch选拔赛真题精选

news2025/1/29 13:52:46

[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第87讲。

蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。

第12届蓝桥杯青少年组第3次选拔赛于2020年10月25日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

植树节种树,本题是2020年10月25日举行的第12届蓝桥杯Scratch选拔赛真题编程第5题,初级组和中级组都有此题,题目要求编程创作植树节种树作品,通过程序把树木种到对应位置。

先来看看题目的要求吧。

一.题目说明

背景信息:

植物节是保护树木,并组织动员组织群众积极参加以植树造林为活动内容的节日,提倡通过这种活动,激发人们爱林造林的热情、意识到环保的重要性。每年3月12日为植树节。

编程实现:

通过程序把树木种到对应位置。

具体要求:

1). 点击绿旗,舞台上出现整齐排列的九块土地,右侧出现三种树木的列表。鼠标指针碰到其中一块土地时土地会改变颜色,鼠标离开时土地恢复成原来的颜色;

2). 在右侧选中一种树木用鼠标拖拽到指定的土地上,松开鼠标即为种下树木;

注意:

a. 必须移动土地上,才能种下,否则树消失;

b. 种下的树,必须在土地的正中央;

c. 已经种下的树不能再拖拽。

3). 每块土地上只能种一棵树,如果该块土地已经种树,第二次把树种在这块土地的时候拖拽出来的树会说:“这里已经有树了!”1秒,然后删除拖拽的树;

4). 当9块土地都种满了树,程序结束。

二.思路分析

本题一共有4个角色,如图所示:

其中土地角色有两个造型,分别为橙色和红色,如图所示:

本题考察的重点是Scratch克隆编程,9块土地以3行3列方式在舞台左侧整齐排列,这是典型的克隆编程,只需要使用嵌套循环,逐行克隆即可。

当鼠标点击右侧的树木时,立刻克隆出一棵树木,并跟随鼠标移动,当鼠标移到指定土地上,松开鼠标时,需要判断是否在该土地上种下树木。因此,我们必须要获取如下三大信息:

1). 当前土地是哪一块土地;

2). 当前土地上,是否已经种下树木了;

3). 当前土地的坐标,也就是树木要种下的位置;

这里的9块土地都是克隆出来的,要区分不同的克隆体,需要使用私有变量,我们可以定义一个私有变量”_id“,然后在克隆的时候分别将变量设置为1-9,这样就可以通过id来区分每块土地了。

每块土地是否已经种树及坐标信息,可以使用列表来进行保存,如图所示:

列表的初始值,可以在生成克隆体的时候进行,其中土地状态为0表示当前土地上还没有种树,为1则表示已经种树。

如此一来,问题就变得简单了,当松开鼠标时,先获取当前土地的id,然后通过列表就可以获取其状态,如果已经种树就删除克隆体,否则就将克隆体移到对应的位置上。

三.编程实现

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

  • 变量和列表初始化设置

  • 克隆土地角色

  • 克隆树木并种树

  • 种满土地结束程序 

1. 变量和列表初始化

首先创建3个变量,分别命名为”_id“、”当前土地“和”种树数量“,如图:

其中,"_id"是土地角色的私有变量,添加下划线是为了区分全局变量和私有变量。“种树数量”是用来记录已经种下树木的数量。

接着创建3个列表,封面命名为”土地状态“、”x坐标“和”y坐标“,如图所示:

切换到土地角色,编写代码如下:

注意,在Scratch编程中,使用列表时一定要记得清空列表数据。

2. 克隆土地角色

这是一个3行3列的规则排列,我们只需要逐行克隆即可,在上面的初始化代码下面,增加代码如下:

这是一个典型的克隆代码,使用的是两层循环,内层循环解决的是如何在一行克隆3个土地,而外层循环解决的则是如何克隆3行。

每次克隆之前,将x和y坐标保存到列表中,同时将_id加1,根据克隆体在克隆时和本体特征完全一致的原理,每个克隆体就都有自己的id和坐标值,并存放到列表中了。

生成克隆体之后,需要显示出来,当鼠标移到克隆体上时,切换到绿色造型,松开时切换到橙色造型,代码如图:

这里还做了一个非常重要的动作,就是“将当前土地设为_id”,如此一来,我们就可以通过变量“当前土地”获知要在哪一块土地上种树了。

3. 克隆树木并种树

对于树木角色来说,这里的3个树木角色逻辑完全一样, 接下来我们就以“tree1”角色为例进行讲解。

当鼠标点击tree1角色时,立刻生成一个克隆体,对应的代码如下:

简要说明两点:

1). 这里并没有使用事件指令“当角色被点击”,是为了避免点击克隆体也会生成一个克隆体的情况;

2). 在“克隆自己”指令后面增加了一个“等待按下鼠标不成立”指令,是为了确保在松开鼠标之前只有一个克隆体。

一旦生成了克隆体,克隆体就需要跟随鼠标移动,直到松开鼠标为止,如果此时不在土地上,就立刻删除克隆体,否则就需要考虑是否种树,这部分的代码如下:

如果克隆体碰到了土地,此时就需要判断当前土地是否已经种树了,还记得前面的“土地状态”列表和“当前土地”变量吧。

将两个指令进行组合就可以获取当前土地的状态了,如果状态为1,表示已经种树了,就提示“这里已经有树了”,然后删除克隆体。否则就将克隆体移到该土地的位置,并将状态值更新为1,同时增加“种树数量”的值。

在上面的“否则”指令中,增加代码如下:

4. 种满土地结束程序

当9块土地全部种满之后,需要结束程序,在上面的程序中,每成功种下一棵树,变量“种树数量”就增加1,当变量为9时,就说明已经全部种满了。

很多同学会想,这还不简单嘛,直接判断当变量等于9时,停止全部脚本不就行了。你可以试一下,会发现,一旦停止全部脚本,所有的克隆体都消失了,这是Scratch的特点,一旦停止全部脚本,克隆体都会消失。

实际上,在上面的代码中,只有两个地方是无限重复执行的,即土地克隆体和tree1角色绿旗代码块中,所以,我们只需要将它们改成条件循环即可。

将土地角色的克隆体代码块修改如下:

同理,在tree1角色中,修改绿旗代码块如下:

这样一来,当所有土地都种满数后,代码就都停止下来了,关键是克隆体也不会消失。另外两个树角色的代码和tree1基本一样,只是位置稍有不同,这里就不再列出了。

至此,整个作品就创作完成了,一个简单有趣的植树作品就诞生了,^_^。

四.总结与思考

本题难度系数为5,积木块数量73个左右 ,涉及到的知识点主要包括:

  • 克隆编程,重点是克隆按规则排列的克隆技巧;

  • 变量的使用,尤其是私有变量在克隆体中的应用;

  • 列表的应用;

  • 拖拽角色的实现;

  • 循环编程,包括循环嵌套和条件循环;

  • 条件语句的嵌套。

本题难度较大,关键是要找到判断当前土地是否已经种树的方法,这里结合了全局变量、私有变量和列表。这需要考生熟练掌握私有变量在克隆编程中的用法,以及对列表有着敏锐的感觉。

同时,这道题在很大程度上考察了孩子的逻辑思维能力,可以说是一道非常好的考题。

如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。

有需要素材和源码的,可以联系本人。

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

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

相关文章

用DIV+CSS技术设计的红酒主题网站(web前端网页制作课作业)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

【LeetCode144、145、94. 二叉树遍历】——递归算法、利用栈

144、145、94 二叉树遍历 这三道题分别考察二叉树的前序遍历、后序遍历、中序遍历。 二叉树的遍历问题是二叉树较为基础的一类问题,通常来讲,都是使用递归算法来实现的。而递归算法的关键就在于,确定递归函数的参数以及返回值、终止条件&am…

基于SqlNode的血缘解析

案例分析 基于社区当前最新版本calcite-1.32.0进行分析 当前的SqlValidatorTest$testFieldOrigin中有一个单测可以直接用来调试 调试后,很快就能在测试专用方法assertFieldOrigin找到SqlValidatorTest$getFieldOrigins这个血缘入口方法 public SqlValidatorFixtu…

AWR1843+DCA1000+mmwave_studio 采集原始数据

项目场景: AWR1843、DCA1000板与mmwave_studio的结合使用 实现数据采集工作 首先就是准备好各种相关的软件unfinish、matlabRuntime、mmwave_studio 没有涉及到css等 只是简单的数据采集工作。 问题1描述 在烧写完开箱demo后,开启mmwave_studio 出现找…

使用jmh框架进行benchmark测试

性能问题 最近在跑flink社区1.15版本使用json_value函数时,发现其性能很差,通过jstack查看堆栈经常在执行以下堆栈 可以看到这里的逻辑是在等锁,查看jsonpath的LRUCache //// Source code recreated from a .class file by IntelliJ IDEA// …

pytorch深度学习实战lesson30

第三十课 更多的芯片 虽然 GPU 现在是目前模型训练的主流芯片然后大家很多时候在做预测的时候也在 C PU 上做预测,但实际上来说这个在慢慢的发生改变。今天看一下目前的一些这样子的芯片。 上图是个手机芯片,可以看到有很多计算单元,比如CPU、…

【数字信号去噪】粒子滤波器与FBS、MAP平滑方法数字信号去噪【含Matlab源码 2179期】

⛄一、平滑分解简介 根据奈奎斯特定理,采样频率必须大于等于有用信号最高频率的2倍。假设对心电信号的采样满足奈奎斯特采样定理,则实测信号采样频率的1/2为有用心电信号的最高频率。通过三点平滑滤波,可以将频率大于1/2采样频率的信号滤除,将滤除的信号定义为第1阶平滑分解分…

使用 IDEA 的 Dedis 插件连接 Redis 服务器

IDEA 中的 Redis 插件作为 Redis 的可视化工具,可以通过此插件连接 Redis 服务器,并且进行增删改查操作 【一】 IDEA 安装 Redis 插件 1. 点击 File >> Setting 2. 点击 Plugings 3. 点击 Marketplace 一栏的搜索框中输入 redis 4. 点击第一个 R…

yocto machine class解析-st-partitions-image

yocto machine class解析 stm32mp157 yocto的meta-st-stm32mp layer中提供了几个class,后续几篇文章重点分析这些class文件: 第一篇就从st-partitions-image.bbclass 开始,st所有创建image的bb文件都会引用st-partitions-image,包括bootfs u…

审计日志功能实现优化及测试记录(参照若依系统,以dolphinscheduler 2.0.5 为例,实现相关功能)

目录🐬使用🐠若依-操作日志🐠引入海豚调度🐟引入审计日志包,增加LogAnnotation注解🐬问题记录及优化🐠service方法注解时而生效,时而不生效🐟不生效原因🐟修改…

基于springboot+mybatis+sqlserver+jsp运行会报名管理系统

基于springbootmybatissqlserverjsp运行会报名管理系统一、系统介绍二、功能展示1.用户登陆2.用户注册3.项目列表(运行员)4.报名列表(运动员)5.运动员项目列表(管理员)6.添加项目四、获取源码一、系统介绍 系统主要功能&#xff…

【计算机组成原理Note】2.4.2 加法器

文章目录加法器1. 一位全加器2. 串行加法器3. 串行进位加法器加法器4. 先行进位加法器加法器 1. 一位全加器 一位全加器,当前位输出:SiAi⨁Bi⨁Ci也就是输入中有奇数个1时输出为1(异或)向高位的进位:CiAiBi(Ai⨁Bi)Ci…

【目标检测】LLA: Loss-aware label assignment for dense pedestrian detection【标签分配】

总结 本文提出了一种用于行人目标检测的标签分配策略,具体来说,主要有以下几步流程。 构建代价矩阵。通过网络的前向传播得到网络的输出,CclsC^{cls}Ccls, CregC^{reg}Creg,构建代价矩阵CCclsλ∗CregCC^{cls}\lambda*C^{reg}CC…

小程序环境切换自定义组件

背景: 最近一直有参与小程序的项目,发现切换环境时经常要上传然后再设置为体验版,比较麻烦,所以尝试做了个切换环境的组件,分享给大家,希望大家能用得上,提点建议 组件长这个样子 展开后 功能&a…

JVM的垃圾回收机制(GC)

系列文章目录 JVM的内存区域划分_crazy_xieyi的博客-CSDN博客 JVM类加载(类加载过程、双亲委派模型)_crazy_xieyi的博客-CSDN博客 文章目录 一、什么是垃圾回收?二、java的垃圾回收,要回收的内存是哪些?三、回收堆上…

FPGA Base Xilinx跨时钟域宏XPM_CDC

FPGA Base Xilinx跨时钟域宏XPM_CDC最近看手底下的小伙子们写代码,对于跨时钟域的处理极度的不规范,还是放下这句话基础不牢,地动山摇 其实Xilinx公司已经为用户提供了宏定义,实现跨时钟域处理,见截图 XPM_CDC在命名上…

关于旅游景点主题的HTML网页设计——青岛民俗 7页 带登录注册

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作| HTML期末大学生网页设计作业 HTML:结构 CSS:样式 在操作方面上运…

【C++】简化源码——vector的模拟实现

文章目录一、前言二、无参构造&析构三、基础接口1.empty和clear2.size和capacity3.[]和iterator四、resize和reserve五、尾插尾删六、其他构造七、迭代器失效1.insert2.erase八、memcpy问题九、vector.h一、前言 本篇的目的很简单,只有一个:模拟实现…

C语言刷题(一)

🐒博客名:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 目录 用递归法求一个整数一维数组a的最大元素 猴子吃桃问题 奇偶数换位问题 水仙花数(0-100000) 换啤酒…

web前端电影项目作业源码 大学生影视主题网页制作电影网页设计模板 学生静态网页作业成品 dreamweaver电影HTML网站制作

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…