消失的水母-第15届蓝桥第三次STEMA测评Scratch真题精选

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

第15届蓝桥杯第3次STEMA测评已于2023年12月17日落下帷幕,编程题一共有6题,分别如下:

  • 多变的太阳

  • 转动的风车

  • 六花阵图

  • 变色游戏

  • 筛选数据

  • 消失的水母

消失的水母,本题是2023年12月17日举行的第15届蓝桥STEMA测评Scratch编程中级组编程第6题,题目要求编程创作消失的水母。当用户输入一个2~10之间的数字后,在舞台随机出现大小不同的水母,每按下一次空格键就将最大的水母删除掉。

先来看看题目的要求吧。

一.题目说明

编程实现:

消失的水母。

具体要求:

1). 每次点击绿旗,水母说“请输入2~10的整数”,同时在舞台下方显示输入框,如图所示;

图片

2). 输入完成后,在舞台的随机位置,出现输入数量的水母,水母不碰到舞台边缘且大小随机(随机范围为50~150),如图所示;

例如:输入的是5

图片

3). 等待1秒后,每只水母一直说自己的大小,如图所示;

图片

4). 然后,当第一次按下空格键时,最大的水母消失,如图所示;

图片

5). 接下来每按下一次空格按键,当前最大的水母都会消失,当所有水母都消失后,程序结束。

评判标准:

  • 8分:满足"具体要求"中的1);

  • 20分:满足"具体要求"中的2);

  • 12分:满足"具体要求"中的3);

  • 15分:满足"具体要求"中的4);

  • 45分:满足"具体要求"中的5)。

二.思路分析

本题只有1个水母角色,如图所示:

图片

对于水母角色而言,基本上只有克隆、说话和消失几个动作,很显然,这又是一道以算法为主的作品。

根据题目的描述,可以将本题的核心功能拆分成如下两大模块:

  • 克隆水母

  • 从大到小依次删除水母

这里的难点在于如何按照从大到小的顺序依次删除水母,又是排序,是不是又回到咱们熟悉的场景---列表排序。

传统的思路是在克隆水母时,将水母的大小保存到列表中,然后对列表进行排序,在按下空格键的时候,每次取出最大的一项,并将对应的水母删除,同时在列表中删除最大项。

按照这个思路编写程序是能够满足题目要求的,但是有一个细节需要注意,如果随机出来的水母大小相同,在按下空格键的时候,会删除多个。这就要求我们在随机水母大小的时候,确保没有重复的数字。

上面的思路是先有水母,然后才有列表数据,我们完全可以转换一下思路,反其道而行之。

图片

具体来说,就是先构造随机列表,确保列表中没有重复的数据,然后再根据列表中的数据来克隆水母;在按下空格键的时候,找到列表的最大项,将对应的水母删除,同时删除最大项。

看起来只是顺序上的调整,但是后者的逻辑更加清晰,其实这是编程中经典的数据思维。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们分5步来编写程序:

  • 准备工作

  • 构造随机列表

  • 克隆水母

  • 获取列表最大值

  • 依次删除水母

1. 准备工作

准备工作比较简单,设置好水母的位置和大小,然后询问,具体的代码如下:

图片

2. 构造随机列表

水母的数量并不是固定的,它是根据用户输入来定的,范围是2~10之间,所以,列表的项目数也是不固定的。

为了方便,我们使用自制积木来构造随机列表,编写代码如下:

图片

简单说明3点:

1). 自制积木使用了参数”数量“,调用自制积木时,传入具体的数字,就可以构造相应的列表;

2). 在插入之前,一定要先清空列表;

3). 水母的大小要求在50~150之间,由于需要判断每次随机的数字是否重复,因此使用了一个”随机大小“变量,如果列表中包含这个数据,说明重复了,就重新生成,直到没有重复为止。

有了这个自制积木,当你输入一个数字后,就可以构造好一个随机列表了。

3. 克隆水母

有了列表数据,就可以克隆水母了,并根据列表中的数据依次设置大小,继续编写代码如下:

图片

代码不难,说明4点:

1). 先调用自制积木构造列表,再将本体隐藏起来; 

2). 利用克隆体的继承特性,在克隆之前,设置好水母的位置和大小;

3). 设置水母坐标时,和舞台边缘要保留一定的距离;

4). 在循环取出列表数据时,需要使用计数器变量,就是这里的变量"i";

对应的,需要将克隆体显示出来,1秒之后,说出自己的大小,编写代码如下:

图片

需要说明的是,在Scratch编程中,”大小“指令相当于是私有变量,每个克隆体都有自己的大小。

4. 获取列表最大值

根据前面的思路分析,在按下空格键时,要找到列表中的最大项,我们可以将这部分功能定义成自制积木,代码如下:

图片

代码稍微有些复杂,简单说明4点:

1). 获取最大值的过程其实就是比较的过程,如果当前项比最大值还大,那么就将最大值设置为当前项,直到列表中所有项都比较完;

2). 整个过程使用了3个变量,其中变量"i"是计数器, 用于获取每一个列表项,变量"最大值"用来表示当前列表中最大的数字,变量”最大值编号“用来保存最大项的编号,以便于循环完成后删除最大的列表项;

3). 由于列表中的数据大小都在50~150之间,所以可以将”最大值“的初始值设置为0;

4). 找到列表中的最大值,一定要记得删除,表示该水母已经删除了。

5. 依次删除水母

当按下空格键时,要删除当前最大的水母,直到所有的水母都消失,在绿旗代码块下继续编写代码如下:

图片

代码比较简单,说明3点:

1). 按下空格键需要重复判断,直到列表清空,即所有的水母都删除完毕; 

2). 对于空格键的按键处理,不要直接使用事件模块中的”当按下空格键“指令,应该写在本体当中,因为克隆体也能响应事件指令;

3). 避免在按下空格键时一次删除多个水母,需要加上松开空格键的判断,也就是”按下空格键不成立“;

在找到最大的水母后,发送了一个”消失“的广播消息,克隆体在接收到广播后需要判断并删除,代码如下:

图片

这样一来,在按下空格键时,就可以将当前最大的水母删除掉。

至此,整个作品就创作好了,你可以输入不同的数字来测试作品的效果啦

四.总结与思考

本题是中级组编程部分第6题,分数为100分,积木块数量75个左右,涉及到的知识点主要包括:

  • Scratch问答指令;

  • 循环编程,包括指定次数循环和直到循环;

  • 条件编程;

  • 变量的使用;

  • 列表的运算;

  • 克隆编程;

  • 获取最大值的算法;

这是中级组最后一题,难度较大,完成时间25分钟左右,难点有两个,一是如何生成随机大小的水母并确保没有相同大小的水母,二是每次找到最大的水母将其删除。

在编程创作的时候,我们不仅要看到水母的显示和删除效果,更应该看到其后面的列表数据。我们真正要处理的是数据,包括数据的增加、删除、修改和查询,然后再控制角色根据数据来展示不同的效果,这就是数据驱动显示的编程思想。

这就需要我们将数据和显示进行拆分,先处理好数据,再来考虑角色如何显示。实际上,很多作品都可以采用这种编程思想,一定要好好体会哦。

超平老师给你留一个思考题,如果我们允许有相同大小的水母,但每次只能删除一只水母,上面的程序能满足这个需求吗,为什么呢?

你知道如何编程实现吗,赶紧动手试试吧。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【野火i.MX6NULL开发板】Linux系统下的Hello World

0、前言 参考资料: 《野火 Linux 基础与应用开发实战指南基于 i.MX6ULL 系列》PDF 第25章 本章比较抽象,涉及理论知识,不明白,可以看看视频讲解: https://www.bilibili.com/video/BV1JK4y1t7io?p29&vd_sourcef…

Day6 Qt

思维导图 1.数据库增删改查 头文件widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QSqlDatabase> //数据库管理类 #include <QSqlQuery> // 执行sql语句类 #include <QSqlRecord> //数据库记录类 #include <QSqlErro…

程序员的健康手册

大家好&#xff0c;我是 javapub。 马上迎来 2024 农历新年&#xff0c;这个是 COVID-19 后的第一个春节。用女朋友的话来说&#xff0c;这几年像在梦里一样&#xff0c;可能生活了几十年的人都想象不到会发生这样的事。不过不论世界怎么变&#xff0c;我们都要过生活、过好当…

leetcode 349 两个数组的集合

题目 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2] 示例 2&#xff1a; 输入&#xff1a…

LeetCode 0082.删除排序链表中的重复元素 II:模拟

【LetMeFly】82.删除排序链表中的重复元素 II&#xff1a;模拟 力扣题目链接&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/ 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字…

windows的换行符与linux风格的换行符不同的问题

问题展示&#xff1a; 说明&#xff1a; 出现这个错误的原因是脚本文件包含了windows风格换行符&#xff08;‘\r\n’&#xff09;&#xff0c;而在linux环境下&#xff0c;通常使用unix风格的换行符&#xff08;‘\n’&#xff09;.这个问题通常在windows环境下编辑脚本文件然…

leetcode 17 电话号码字母组合

题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits “23” 输出&#xf…

模拟瑞幸的购物车

是根据渡一大师课来写的&#xff0c;如有什么地方存在问题&#xff0c;还请大家在评论区指出来。ど⁰̷̴͈꒨⁰̷̴͈う♡&#xff5e; index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http…

《产业结构调整指导目录(2024年本)》发布,模糊测试首次纳入

近日&#xff0c;第6次委务会议通过了新版的《产业结构调整指导目录&#xff08;2024年本&#xff09;》&#xff0c;该目录自2024年2月1日起正式实施。 与之前的版本相比&#xff0c;本次目录在行业设置上进行了全面升级&#xff0c;新增了“网络安全”这一重要行业大类&#…

数据管理-首选项

文章目录 1 概述2 什么是首选项3 首选项运作机制4 常用接口介绍常用接口使用前提保存数据&#xff08;put&#xff09;获取数据&#xff08;get&#xff09;是否包含指定的key&#xff08;has&#xff09;数据持久化&#xff08;flush&#xff09;删除数据&#xff08;delete&a…

spring cloud nacos注册与配置中心

简介 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos: Dynamic Naming and Configuration Service Nacos就是注册中心&#xff0b;配置中心的组合 -> Nacos EurekaConfigBus docker安装 https://nacos.io/zh-cn/docs/quick-start-docker.html…

手把手教你如何搭建Spring本地编译环境

大家好&#xff0c;我是极客涛&#xff0c;不知道小伙伴有没有和我一样的情况&#xff0c;在阅读Spring源码时&#xff0c;只通过静态的代码阅读很难有更深刻的理解&#xff0c;所以建议通过写测试类进行debug的方式&#xff0c;对核心的代码进行运行时的状态调试&#xff0c;这…

Python简介-Python入门到精通

Python的创始人为荷兰人吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;。1989年圣诞节期间&#xff0c;在阿姆斯特丹&#xff0c;Guido为了打发圣诞节的无趣&#xff0c;决心开发一个新的脚本解释程序&#xff0c;作为ABC语言的一种继承。之所以选中Python&#xff08;…

深入浅出Pytorch宝典1.0

文章目录 前言1. 张量操作2. 自动微分3. 数据加载和处理4. 模型构建和训练5. 预训练模型和迁移学习6. 调试和性能7. 高级特性总结 torch中主要的数据对象主要特点和功能张量的创建 数据处理和转换1.torch.tensor() 创建一个新的张量&#xff08;Tensor&#xff09;2.torch.zero…

数据结构学习 jz39 数组中出现次数超过一半的数字

关键词&#xff1a;排序 摩尔投票法 摩尔投票法没学过所以没有想到&#xff0c;其他的都自己想。 题目&#xff1a;库存管理 II 方法一&#xff1a; 思路&#xff1a; 排序然后取中间值。因为超过一半所以必定在中间值是我们要的结果。 复杂度计算&#xff1a; 时间复杂度…

【docker笔记】DockerFile

DockerFile Docker镜像结构的分层 镜像不是一个单一的文件&#xff0c;而是有多层构成。 容器其实是在镜像的最上面加了一层读写层&#xff0c;在运行容器里做的任何文件改动&#xff0c;都会写到这个读写层。 如果删除了容器&#xff0c;也就是删除了其最上面的读写层&…

ClientHttpRequestInterceptor报错Timeout waiting for connection from pool

restTemplate实现ClientHttpRequestInterceptor&#xff0c;报错org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool 代码如下&#xff1a; Configuration public class HttpConfig {private static final Integer RETRY_COUNT…

最新Win11系统怎么删除开机密码 Win11取消登录密码图文教程

将账户设置为自动输入微软账户的密码&#xff0c;就是省略了手动打密码的步骤而已变成自动化了。 教程如下&#xff1a; A方法↓第一步:打开设置——账户——登录选项 ↓第二步:登录选项——其他设置——为了提高安全性&#xff0c;这里选择关闭&#xff0c;这一步是为了降低…

Python-高阶函数

在Python中&#xff0c;高阶函数是指能够接收函数作为参数&#xff0c;或者能够返回函数的函数。这种特性使得函数在Python中可以被灵活地传递和使用。以下是一些关于Python高阶函数的详细解释&#xff1a; 函数作为参数&#xff1a; 高阶函数可以接收其他函数作为参数。这样的…

黑马苍穹外卖学习Day6

HttpClient 介绍 HttpClient 是 Apache 提供的一个开源的 Java HTTP 客户端库&#xff0c;用于发送 HTTP 请求和处理 HTTP 响应。它提供了一种更简便的方式来执行 HTTP 请求&#xff0c;并支持多种协议&#xff0c;如 HTTP、HTTPS、FTP 等。 使用 HttpClient 可以方便地与远程…