收集松果-第15届蓝桥省赛Scratch中级组真题第4题

news2024/9/21 7:32:52

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

如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。

第15届蓝桥杯省赛已于2024年8月24日落下帷幕,中级组编程题一共有6题,分别如下:

  • 抓不住的蜜蜂

  • 穿越病毒区

  • 画台扇

  • 收集松果

  • 占领矩阵

  • 截取递增数

收集松果,本题是2024年8月24日举行的第15届蓝桥省赛Scratch中级组编程第4题,题目要求编程创作收集松果游戏。松鼠和松果出现在随机的两个方格中,然后松鼠经过最少的方格到达松果所在方格,然后松果又重新随机到一个新的方格,不断重复这个过程。

先来看看题目的要求吧。

一.题目说明

编程实现:

收集松果。

具体要求:

1). 点击绿旗,瞬间呈现 6行8列的绿色方格铺满整个舞台区域,如图所示;

图片

2). 1秒后,松果和松鼠出现在随机的两个方格中,如图所示;

图片

3). 然后,每隔0.5 秒松鼠会向上下左右四个方向选择一个方向走一格,并经过最少的方格到达松果所在方格,如图所示;

图片

4). 松鼠到达松果所在方格后,松鼠停下来,松果消失,1 秒后松果再次出现在随机的一个方格中,如图所示;

图片

5). 重复执行“具体要求”3)、4)。

评判标准:

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

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

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

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

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

二.思路分析

本题有3个角色,分别是方格,松果和松鼠,如图所示:

图片

本题考查的知识点主要包括克隆技巧、变量、舞台坐标系、事件广播机制和自制积木等。

根据题目的描述,我们分3步进行分析:

  • 克隆方格

  • 随机松鼠和松果位置

  • 收集松果

1. 克隆方格

这是一个典型的克隆场景,可以直接套用超平老师总结的“克隆4兄弟”模型,又快又好。

2. 随机松鼠和松果位置

松鼠和松果要出现在随机的方格中,这就说明我们不能直接使用“移到随机位置”指令。正确的做法是在6行8列的矩阵中随机选择一个方格,并计算出对应的坐标,然后使用“移到x,y”指令。

以松鼠为例进行说明,我们可以定义两个变量“松鼠行“和”松鼠列“,用来表示松鼠所处的行和列,然后分别将它们设置为随机数字,“松鼠行“的范围是0~5,”松鼠列“的范围是0~7。

为了方便计算,我们规定列从左到右,行从下到上,并且都是从0开始,如下:

图片

比如,这里的松果位于第1行第2列,松鼠位于第3行第5列,那怎么其坐标是多少呢?

首先要确定好位于第0行第0列的格子坐标,即最左下角的方格,其坐标为(-210,-150),如图所示:

图片

由于这是一个6行8列的矩阵,所以方格是正方形的,边长为60。我们可以将(-210,-150)作为起点,然后使用偏移量来计算每个方格的坐标。

对于上图的松鼠来说,它处在第2行第2列,所以其x坐标是在-210的基础上偏移两个格子的长度,即 -210 + 2 * 60 = -90;而y坐标是在-150的基础上偏移两个格子的长度,即 -150 + 2 * 60 = -30。

需要注意的是,x坐标和列偏移相关,而y坐标则和行偏移有关。

在随机方格的时候,还需要确保松鼠和松果不在同一个方格中,这个题目是有明确说明的。

3. 收集松果

这是本题的难点,很多同学都有这样的疑问,我怎么知道哪个是最短路径呢?

其实没那么复杂,我们直接看图说话,假定松果位于第1行第2列,松鼠位于第4行第4列,如图:

图片

第一种走法,先左后下,一共需要5步,如图:

图片

第二种走法,先下后左,一共需要5步,如图:

图片

第三种走法,按照左下左下的阶梯走法,还是5步,如图:

图片

第四种走法,按照下左下左的阶梯走法,仍然是5步,如图:

图片

相信聪明的你已经看明白了,只要确定了松鼠和松果的相对位置,它们的最短路径长度是固定的,尽管路径不唯一。

所以,只需要在众多的路径(不止上面列出的四种)选择一条路径就可以了,为了简单,可以选择先行后列,或者先列后行。

如此一来,思路就非常清晰了,我们只需要判断松鼠和松果所处的行和列,根据他们的位置关系,让松鼠逐渐向松果靠近,同时要更新当前所在的行和列,当二者处在同行同列,说明松鼠吃到松果,重新随机松果位置。

思路有了,接下来,我们就进入程序实现环节。

三.编程实现

根据上面的思路分析,我们分4步来完成作品:

  • 克隆方格

  • 随机松鼠位置

  • 随机松果位置

  • 收集松果

1. 克隆方格

直接使用克隆4兄弟模型克隆6行8列的方格,在方格角色中定义自制积木如下:

图片

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

1). 定义自制积木时,一定要勾选”运行时不刷新屏幕“选项;

2). 注意设置好x和y坐标的起始位置;

在方块角色中继续编写代码如下:

图片

执行代码,就可以瞬间生成一个6行8列的方格矩阵。

2. 随机松鼠位置

根据前面的思路分析,在松鼠角色中,编写代码如下:

图片

代码不多,说明4点:

1). 这里对角色做了一些初始化设置,包括旋转方式和面向,是为后面改变角色方向做准备;

2). 这里定义的两个变量”松鼠行“和”松鼠列“要提前创建好;

3). 根据松鼠所在的行和列,计算好松鼠的x和y坐标,然后显示出来;

4). 确定好松鼠的位置,发送一个”出现松果“的广播消息;

3. 随机松果位置

切换到松果角色,编写代码如下:

图片

简单说明3点:

1). 使用自制积木是为了重用代码,后面需要多次使用这个自制积木;

2). 随机位置的方式和松鼠一样,但是要确保不和松鼠重叠,所以需要使用”重复执行直到“代码块;

3). 这里使用了两个变量”松果行“和”松果列“,需要提前创建好;

然后,在接收到”出现松果“广播中调用自制积木,继续编写代码如下:

图片

别忘了在绿旗下将松果隐藏起来。

4. 收集松果

根据前面的分析,我们可以根据松鼠和松果所处的位置来移动松鼠,为了方便组织代码,在松鼠角色中定义自制积木如下:

图片

代码不少,强调4点:

1). 处理上下左右的逻辑基本是一样的,每个“如果...那么”指令处理一个方向;

2). 在修改x和y坐标的同时,也要更新变量的值,确保“松鼠行”、“松鼠列”、“松果行”和“松果列”4个变量和当前所在位置始终一一对应;

3). 在每个如果指令的结尾有一个“停止这个脚本”指令,这可以确保每次只能移动1格;

4). 左移和右移时,分别设置了松鼠的方向,这个题目没有要求,不写也是可以的;

在松鼠角色的绿旗代码块中,继续编写代码如下:

图片

代码不多,但是要理解其意思,说明3点:

1). 每隔0.5秒,调用自制积木,让松鼠自动移动1格;

2). 重复执行前进一格,直到碰到松果,说明松鼠吃到松果了,此时发送”吃掉“的广播消息给松果角色;

3). 这里使用的是”广播并等待“指令,可以确保松果的位置重新设置完之后再进行下一次移动;

对应的,切换到松果角色,编写代码如下:

图片

代码非常简单,先将松果隐藏起来,等待1秒后,调用自制积木重新随机松果位置。

至此,一个自动版本的松鼠追逐松果作品就创作好啦。

四.总结与思考

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

  • 克隆编程;

  • 自制积木;

  • 变量;

  • 事件广播机制;

  • 舞台坐标系;

作为本次中级组省赛的第4题,难度中等,完成时间30分钟左右。本题的难点有两个,一是在随机松鼠和松果位置时,如何确保放到格子中间,二是如何让松鼠自动追逐松果,同时确保路径长度最小。

实际上,类似的场景在第12届选拔赛中出现过,题目要求在16 * 12的方格矩阵中实现贪吃蛇游戏, 如图所示:

图片

具体可以参考《贪吃蛇-第12届蓝桥杯Scratch选拔赛真题精选》这篇教程。怎么样,是不是一模一样,所以超平老师常说,最好的备考资料就是历届真题。

如何让松鼠沿着最短路径追逐松果,看起来有些难度,但是你仔细一分析,也就那么回事。最好的分析方法就是画图列出各种不同的行走路径,找到其中的规律。

实际上,这个最短路径问题在数学和编程中十分常见,数学里面叫做标数法,编程里则是动态规划,一定要熟练掌握哦。

超平老师给你留3个思考题:

1). 为何要先随机松鼠位置,再随机松果位置呢?

2). 如何让松鼠的移动是随机的,假定松果在松鼠的右上方,当松鼠在移动的时候,第一次向右,第二次向上,第三次向上,第四次向右...;

3). 如何更好地设置松鼠的方向,确保松鼠的方向一开始就是正确的,如果松果在右方,松鼠一开始就要面向右方,否则一开始就面向左方。

你还有什么好的方法吗,非常欢迎您和超平老师交流分享。

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

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

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

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

相关文章

我的AI工具箱Tauri版-FunAsr音频转文本

本教程基于自研的AI工具箱Tauri版进行FunAsr音频转文本服务。 FunAsr音频转文本服务 是自研AI工具箱Tauri版中的一个高效模块,专为将音频或视频中的语音内容自动转化为文本或字幕而设计。用户只需简单配置输入、输出路径,即可通过FunAsr工具快速批量处理…

教你把PDF电子画册加背景音乐

​如何让您的PDF电子画册更具吸引力,让人一眼就能爱上它呢?答案就是为画册添加背景音乐!添加背景音乐的PDF电子画册相较于普通画册,更能吸引读者的注意力,提升阅读体验。那么,如何为PDF电子画册添加背景音乐…

杭电OJ1009——猫鼠交换问题

杭电的OJ居然通不过<bits/stdc.h>这个头文件&#xff0c;需要小心 提供一个翻译版本 这里给两个版本 简单贪心拿下 //#include<bits/stdc.h> #include<iostream> #include<algorithm> using namespace std; struct Node{double j,f,p;//p是单价 }a[…

29. 查看threejs自带几何体顶点

查看three.js自带几何体顶点结构&#xff0c;基类(父类)BufferGeometry three.js提供的矩形平面PlaneGeometry、长方体BoxGeometry、球体SphereGeometry等各种形状的几何体&#xff0c;他们都有一个共同的父类BufferGeometry。这意味着这些几何体有哪些属性或方法&#xff0c;…

Java进阶之集合框架(Set)

【基本内容】 二、Set接口(接上一章) Set是Java集合框架中不允许有重复元素的无序集合&#xff0c;其典型的实现类是HashSet&#xff0c;它完全是遵循Set接口特性规范实现的&#xff0c;无序且不允许元素重复&#xff1b;而Set接口下的实现类还有LinkedHashSet和TreeSort&#…

Submariner 部署全过程

Submariner 部署全过程 部署集群配置 broker 集群&#xff1a; pod-cidr&#xff1a;11.244.0.0/16 service-cidr 11.96.0.0/12 broker 172.100.0.109 node 172.100.0.108 集群 1&#xff08; pve3 &#xff09;&#xff1a; pod-cidr&#xff1a;10.244.0.0/16 service-…

nodejs 011: nodejs事件驱动编程 EventEmitter 与 IPC

在 Node.js 和许多 JavaScript 环境中&#xff0c;EventEmitter 是一个非常重要的类&#xff0c;用于处理事件驱动编程。EventEmitter 是一个能够发射&#xff08;emit&#xff09;和监听&#xff08;on&#xff09;事件的对象。它常用于创建和处理事件机制&#xff0c;使得程序…

Dubbo与SpringCloud的区别和优缺点

经常会有同学问我&#xff0c;Dubbo和SpringCloud的选择。甚至也经常会有面试官就这个问题刨根问底。 说实话&#xff0c;其实我不太喜欢回答这个问题&#xff0c;本质上来讲&#xff0c;Dubbo的SpringCloud可以算是完全不同赛道的两种东西&#xff0c;就好像问大家西瓜和土豆我…

【Java】多线程前置知识 初识Thread

多线程前置知识 & 初识Thread 冯诺依曼体系结构初步认识存储设备CPU指令 操作系统初识操作系统内核态和用户态 进程/任务进程是什么进程的管理进程的调度虚拟内存地址进程间的通信 线程线程的出现线程是什么线程可能出现的问题线程与进程的联系和区别 协程初识Thread类Thre…

VSCode引用Eigen库无法识别问题解决

VSCode引用Eigen库无法识别问题解决 问题解决 问题 在Ubuntu下使用vscode开发C/C项目时引用了Eigen库&#xff0c;出现Eigen::Vector3d无法识别的问题&#xff0c;提示"no definition found for Vector3d"。但是程序可以正常编译通过。 解决 将 intelli Sense Engi…

【学习资料】袋中共36个球,红白黑格12个,问能一次抽到3个红4个白5个黑的概率是多少?

1、公式计算 1.1 题目1 袋中共 36 36 36个球&#xff0c; 红 \fcolorbox{red}{#FADADE}{\color{red}{红}} 红​ 白 \fcolorbox{white}{#808080}{\color{white}{白}} 白​ 黑 \fcolorbox{#808080}{#0D0D0D}{\color{#808080}{黑}} 黑​各 12 12 12个&#xff0c;问能一次抽到 3…

事件循环异步代码输出顺序题目【基础考核】

简单的事件循环&#xff0c;一道异步代码执行输出顺序问题? 第一题 setTimeout(() > {console.log("A")Promise.resolve().then(() > { console.log("B"); });}, 1000);Promise.resolve().then(() > { console.log("c"); });new Prom…

JSON.parseArray 内存溢出

实际上我的JSON如下&#xff1a; 如果用以下代码&#xff1a;JVM的内存直接飙到内存溢出&#xff0c;报错OutOfMemoryError: Java heap space Object oo JSON.parseArray(json, TestVo.class) 如果我换成了这样&#xff0c;就没事&#xff1a; Object oo JSON.parseObject(…

1.2 测试基础

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 测试分类1.1 按生产阶段划分1.2 按代码可见度划分1.3 其他测试 2 质量模型 前言 在软件开发过程中&#xff0c;测试是确保产品质量的重要环节。本文详细讲解了软件测试分类以及…

Python Email库:发送与接收邮件完整指南!

Python Email库如何集成&#xff1f;怎么优化Python Email库性能&#xff1f; Python作为一种强大的编程语言&#xff0c;提供了丰富的库来处理电子邮件&#xff0c;其中最著名的就是Python Email库。AokSend将深入探讨如何使用Python Email库来发送和接收邮件&#xff0c;帮助…

SpringCloud config native 配置

SpringCloud config native 配置 1.概述 最近项目使用springCloud 框架&#xff0c;使用config搭建git作为配置中心。 在私有化部署中&#xff0c;出现很多比较麻烦的和鸡肋的设计。 每次部署都需要安装gitlab 有些环境安装完gitlab&#xff0c;外面不能访问&#xff0c;不给开…

适合运动的骨传导耳机哪款好?分享五款性能卓越骨传导耳机

面对琳琅满目的骨传导耳机市场&#xff0c;是不是既兴奋又迷茫&#xff1f;别怕&#xff0c;我来给你支几招&#xff01;选耳机&#xff0c;最重要的是适合自己&#xff0c;别被各种噱头和价格差异绕晕了头。价格高低与品质好坏并非绝对正比&#xff0c;关键看性价比和个人需求…

Google SERP API 对接说明

Google SERP API 对接说明 Google SERP&#xff08;Search Engine Results Page&#xff09;是用户在Google搜索引擎中输入查询后看到的结果页面。它显示自然搜索结果、广告、特色摘要、知识图谱以及图片、视频等多种内容&#xff0c;旨在为用户提供最相关的信息。 本文将详细…

物联网开发+充电桩管理系统+充电桩系统源码

简述 SpringBoot 框架&#xff0c;充电桩平台充电桩系统充电平台充电桩互联互通协议云快充协议1.5新能源汽车电动自行车公交车-四轮车充电充电源代码充电平台源码Java源码无加密项目 介绍 云快充协议云快充1.5协议云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充…

鸿蒙应用生态构建的核心目标

保护开发者和用户利益的同时维护整体系统的安全性&#xff0c;对生态构建者是至关重要的。以开发者为中心&#xff0c;构建端到端应用安全能力&#xff0c;保护应用自身安全、运行时安全&#xff0c;保障开发者权益&#xff0c;是鸿蒙应用生态构建的核心目标。 应用生命周期主要…