小猴吃苹果-第12届蓝桥杯Scratch选拔赛真题精选

news2024/11/27 12:48:17

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

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

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

小猴吃苹果,本题是2020年9月20日举行的第12届蓝桥杯Scratch选拔赛真题编程第3题,初级组和中级组都有此题,题目要求编程实现小猴搭梯子吃苹果的有趣场景。

先来看看题目的要求吧。

一.题目说明

编程实现:

猴子想吃苹果但是苹果树太高了,它只好自己搭建梯子,来吃到苹果。

具体要求:

1). 当绿旗被点击后,显示Blue Sky背景、猴子和苹果角色(大小都为50),出现在如图位置(大致位置即可);

2). 鼠标点击猴子之后,猴子能搭建出如图的梯子(使用画笔)。图中小正方形边长为50;

3). 每按下一次空格键,猴子就可以爬一格梯子,猴子默认已经站在第一格;

4). 当猴子爬到上面碰到苹果时,苹果和猴子同时用2秒钟时间慢慢回到地面上,程序结束;

5). 重新点击绿旗,程序可以重复执行。

评判标准:

  • 2分:角色、背景符合要求;

  • 6分:正确画出符合要求的梯子;

  • 6分:猴子可以按照题目要求爬梯子;

  • 6分:猴子拿到苹果后可以按照要求回到地面;

  • 10分:程序可以重复执行,且完全符合要求。

二.思路分析

本题包含4个角色,分别是Tree,Monkey、Apple和Pencil,如图所示:

图中的梯子是通过画笔绘制出来的,所以,这是一个典型的运动和画笔相结合的作品。

从功能上看,本题并不复杂,点击猴子,使用画笔角色绘制出梯子,有了梯子之后,按下空格键,猴子就开始往上爬,每次爬一个格子。碰到苹果后,猴子和苹果一起返回地面。

这里的重点是如何衔接各个角色,很显然,这需要使用事件广播机制。除此之外,还需要进一步考虑各个事件的先后顺序,试想一下,每点击一次猴子,就绘制一个梯子,是否有这个必要?如果梯子还没搭好,按下空格键猴子就开始向上爬了,这样是否合理?

对于本题,我会先按照常规方式实现所有功能,以满足题目的要求,然后再进行优化,确保作品更完整,更合理。 

三.编程实现

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

  • 初始化设置

  • 绘制梯子

  • 猴子爬梯子吃到苹果

  • 作品优化

1. 初始化设置

这里的4个角色都需要进行初始化设置,对于Tree1角色,只需要固定好其位置即可,代码如下:

monkey也需要设置好位置,代码如下:

Apple角色的初始化代码如下:

对于Pencil角色而言,需要隐藏起来,同时需要清空舞台,对应的编写代码如下:

由于Pencil角色自始至终都是不用显示的,因此也就不需要设置其位置了。

2. 绘制梯子

鼠标点击猴子,就要开始绘制梯子了,需要注意的是绘制需要移动角色,最好不要直接使用猴子来绘制梯子,而是借助Pencil角色来实现,我们可以通过事件广播机制来实现角色之间的通信。

在Monkey角色中,编写代码如下:

相应的,Pencil角色在接收到广播消息后,就开始绘制梯子了,其实就是自下而上绘制6个正方形,切换到Pencil角色,编写代码如下:

代码比较简单,画一个正方形需要循环4次,然后再重复6次,就可以绘制好梯子了,但是要注意,一个正方形画好之后,需要向上移动50步。

3. 猴子爬梯子吃到苹果

画好梯子之后,当按下空格键时,猴子向上爬一格,当猴子碰到苹果时,猴子又慢慢回到地面,在Monkey角色中编写代码如下:

由于苹果要和猴子一起回到地面,所以碰到苹果时,发送了一个”回来“的广播消息。相应的苹果角色在接收到广播消息后,也慢慢滑行到舞台底部,切换到Apple角色,增加如下代码:

注意,猴子和苹果角色滑行的时间相同,这样可以保证两者是同步,但是位置并不相同,在创作时,需要多测试几次,找到合适的坐标值,确保二者的相对位置不变,滑行结束,就停止全部脚本,结束程序。

至此,所有的效果都已经实现了,你可以测试一下效果如何。

4. 作品优化

上面的代码,基本上是能够满足题目要求的,但是有些不合理的地方,比如反复点击猴子,画笔会一遍又一遍地绘制梯子,只不过它们重叠在一起,看起来不明显。

再比如,在没有画好梯子之前,直接按下空格键,猴子也会煞有介事的往上爬,这就有些不合理了,这个该怎么解决优化呢?

其实也不难,首先去掉”当角色被点击“指令,使用”碰到鼠标指令“和”按下鼠标“组合指令来判断是否按下鼠标,同时这里只需要判断一次,最简单的办法是使用”等待条件“指令。

当鼠标点击猴子后,发送”画梯子“广播消息,不同的是这一次我们使用”广播并等待“指令,在梯子画完之后再继续执行后续代码。

接下来继续判断是否按下空格键,同样的,去掉”当按下空格键“指令,使用”等待条件“和侦测模块中的“按下空格键”来判断是否按下空格键,对应的代码如下:

需要注意的是,使用等待条件判断是否按下空格键时,需要在尾部使用“等待按下空格键不成立”指令,以确保按下并松开鼠标是一次按键操作,这是一个非常经典的代码结构,你可以收藏起来。

经过优化之后,作品就非常合理,非常严谨了。

四.总结与思考

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

  • 设置角色位置,关键是要养成初始化角色位置的习惯;

  • 事件广播机制,重点是广播事件并等待指令的使用及特点;

  • 画笔的使用,使用画笔结合移动绘制梯子;

  • 点击角色的两种实现方式;

  • 按下某个键的两种实现方式。

本题相对比较简单,重点是如何对作品进行优化,让作品更完整,更符合逻辑。我们在创作任何作品时,都需要考虑作品的完整性、逻辑性,力争给玩家最好的用户体验,这是一个不断迭代,不断创新的过程,你会从中受益良多。

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

需要素材和源码的,可以联系本人,或者移步至同名wx号。

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

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

相关文章

JCTC:基于PWmat中的混合溶剂模型精确计算离子溶解自由能

溶液环境中溶质离子或中间体的自由能计算是电化学研究中最棘手的问题之一。目前单纯的实验手段并不能对发生在溶液中的化学反应过程/机理进行直接探测,许多信息仍主要依赖于理论模拟。对于这一问题,目前很多研究者采用经验势场的溶剂模型方法&#xff0c…

Casein-PEG-Rhodamine B 络蛋白-聚乙二醇-罗丹明B Casein-RB

产品名称:络蛋白-聚乙二醇-罗丹明B 英文名称:Casein-PEG-Rhodamine B 质量控制:95% 原料分散系数PDI:≤1.05 存储条件:-20C,避光,避湿 用 途:仅供科研实验使用,不用于诊…

SAP 电商云 Spartacus UI Configurable Product 的页面设置

关键字 CPQ,Product Configuration,Product Configure,Product Variant 变体是在某些方面彼此不同但基于相同基本模型的产品。 变体的一个示例是 T 恤的颜色和尺寸。 在 Spartacus 中启用变体功能,并在 SAP Commerce Cloud 中配…

基于python的pulp库使用,从基础模型到复杂模型,从一维变量到二维变量

写在前面 学习笔记,仅作参考。 个人觉得配合步骤和建模,直接看代码就能入门pulp,所以没有啥解释,见谅。 参考 https://blog.csdn.net/youcans/article/details/116371416 步骤 1、安装PuLp (pip install pulp) 2…

HRD特征及其检测方法简介

HRD特征及其检测方法简介1、HRD背景知识介绍1.1 HRR通路简介1.2 HRR基因突变可导致通路失活和HRD1.3 HRD高发癌种2、HRD的两类主要标志物2.1 致病基因2.2 基因组瘢痕3、HRD检测方法4、全景变异分析(CGP)5、关键信息6、参考文件1、HRD背景知识介绍 1.1 H…

(4)点云数据处理学习——其它官网例子

1、主要参考 (1)视频,大佬讲的就是好啊 【Open3D】三维点云python教程_哔哩哔哩_bilibili (2)官方的github地址 GitHub - isl-org/Open3D: Open3D: A Modern Library for 3D Data Processing (3&#…

BUUCTF Misc 被偷走的文件 snake

被偷走的文件 下载文件 wireshark打开,搜索flag字符串 可以看到一个带有flag.rar的FTP包进行TCP流追踪 看来流量中有flag.rar,使用kali中的foremost进行文件分离 发现一个文件夹内有一个需要密码的压缩包 密码是5790,解压 得到flag …

Redis数据结构和类型

Redis 包含五种数据类型,分别为String、List、Hash、Set、ZSet 底层实现的数据结构包SDS、双向链表、压缩列表、哈希表、整数集合、跳表 redis结构图数据类型和数据结构的关系Redis六种数据结构 一、动态字符串(SDS) Redis 是用 C 语言实现的,但是它…

Kotlin高仿微信-第12篇-单聊-图片

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

STC 51单片机45——51单片机对脉冲计数 汇编 16位除法

部分代码: ORG 0000H LJMP INIT ORG 0003H //外部中断0 LJMP INT0SUB ORG 0013H //外部中断1 LJMP INT1SUB ORG 0100H INIT: CLR P1.0 //控制端复位 …

D-019 EEROM硬件电路设计

EEROM硬件电路设计1 简介1.1 存储器的分类1.2EEPROM的特性2 接口介绍2.1 IIC接口2.2 SPI接口2.3 MicroWire 接口3 EEPROM 和 FLASH4 电路设计实战5 电路设计要点1 简介 1.1 存储器的分类 按照掉电数据是否丢失的特性,存储器可划分为: 易失性存储器&…

快排图文详解:快速排序算法的实现 - 【双边循环法与单边循环法 递归与非递归(栈的方式)的实现】

1.基本介绍 同冒泡排序一样,快速排序(Quicksort)也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。但快速排序是对冒泡排序的一种改进。 2.基本思想 关于基本思想,我们在这里先不考虑是如何具体实现的…

nuxtjs生命周期、项目创建、声明式导航与编程式导航、动态路由、嵌套路由、配置式路由、定制默认应用模板、扩展默认布局

文章目录1. 介绍2. 生命周期3. 项目创建4. 声明式导航和编程式导航5. 动态路由参数和验证6. 嵌套路由7. 404页面8. 配置式路由9. 定制默认应用模板10. 扩展默认布局10.1 默认布局10.2 自定义布局10.3 显示错误的布局1. 介绍 Nuxt.js 是一个基于 Vue.js 的通用应用框架。通过对…

离线解锁 CodeCombat 全关卡教程 使用docker安装实现

背景 暂时还没收入,想玩顺便,但官方的有点贵(是真的贵,扛不住) 前期准备 下载安装docker desktop https://www.123pan.com/s/fmvUVv-HqApH, 这个安装不会的随便搜一个教程,挺多的。我随便找了一…

创建实例化新表格及新行

这期讲一下如何创建创建实例化新表格及行进行添加数据, 在上图可以看到先实例化DataTable表格,用于接收数据, Columns 获取此表的列的集合, Add 创建并添加DataColumn对象, Typeof 数据类型 创建并添加表头。 接下来…

Java定时器选择

java计时器和死循环哪个好?哪个建议使用? 计时器性能更好,但是写起来稍微复杂一点。如果是非常短暂的延迟,用死循环也未尝不可。一般来说能不用死循环的尽量不用死循环!如果你使用的是JDK1.5以上的,可以使…

PyQt5可视化编程-控件

控件就像是应用这座房子的一块块砖。PyQt5有很多的控件,比如按钮,单选框,滑动条,复选框等等。我们将介绍一些很有用的控件: QCheckBox,ToggleButton,QSlider,QProgressBar, QCalendarWidget,QPixmap,QLineEdit,QSplitt…

实验四+ R型指令设计实验【计算机组成原理】

实验四+ R型指令设计实验【计算机组成原理】 前言推荐实验四+ R型指令设计实验结果附录defineInstMemIDEX最后前言 编写于 2022/11/22 VIP发布于 2022/11/22 实验于 2022/11/24 发布于 2022/11/24 以下内容源自计算机组成原理实验 仅供学习交流使用 推荐 实验四+ R型指令…

论文指标评价体系及权重计算

一 、评价指标体系 评价指标体系构建在实际研究中使用较为广泛,比如企业绩效评价指标体系构建、政府财政支出绩效评价、医院绩效评价研究等等。 ‍1、相关背景 在中国知网搜索 “ 评价指标 ”、“ 指标体系权重 ” 等相关关键词,可以发现,…

学习ASP.NET Core Blazor编程系列十三——路由(完)

九、NavigationManager 有的时候我们可能需要在代码里进行导航,如果是JavaScript我们会用window.location来切换页面,Blazor为我们提供了相应的封装:NavigationManager。使用NavigationManager可以通过代码直接进行页面间的跳转。我们在BookI…