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

news/2024/9/18 10:42:20

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

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

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

数苹果,本题是2020年8月23日举行的第12届蓝桥杯Scratch选拔赛真题编程第3题,初级组和中级组都有此题,题目要求编程创作数苹果作品,苹果树上会随机出现1-10个苹果,小猫询问树上一共有几个苹果,输入数字回答后,小猫可以判断对错。

先来看看题目的要求吧。

一.题目说明

编程实现:

数苹果:苹果树上会随机出现1-10个苹果,小猫询问树上一共有几个苹果,输入数字回答后,小猫可以判断对错。

具体要求:

1). 运行程序,出现下图所示的角色与背景;

2). 按下空格键,苹果树上会随机出现1-10个苹果,小猫会问一共有几个苹果且屏幕下边缘出现询问框;

3). 在询问框中输入正确的苹果个数,小猫会说:“正确”1秒,如输入错误的苹果个数,小猫会说:“错误”1秒;

4). 之后苹果树上再次随机出现1-10个苹果,小猫会接着询问有几个苹果。

评判标准:

  • 10分:运行程序,苹果树上随机出现1-10个苹果,且小猫询问:树上一共有多少个苹果(苹果不能重叠);

  • 10分:在询问框中输入正确的苹果个数,小猫会说:“正确”1秒,如输入错误的苹果个数,小猫会说:“错误”1秒;

  • 10分:之后苹果树上再次随机出现1-10个苹果,小猫会接着询问有几个苹果。

二.思路分析

本题包含两个角色,分别是小猫和苹果,如图所示:

当按下空格键时,树上随机出现1-10个苹果,肯定需要使用克隆,由于后续小猫要判断玩家输入的数量是否正确,因此苹果的数量可以用变量保存起来,苹果出现的位置是随机的,但是要注意随机数的范围。

苹果出现之后,小猫才开始询问,等待玩家回答完之后,再次出现苹果,程序在两个角色之间来回切换,如何确保各个流程的执行顺序呢,这需要用到事件广播机制。

因此,随机数、变量、克隆和事件广播是创作本作品的核心知识点。

 

三.编程实现

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

  • 准备工作

  • 克隆苹果

  • 小猫判断数量是否正确

  • 再次出现苹果

  • 代码优化

1. 准备工作

使用Scratch自带的背景库和素材库,分别添加好舞台背景和苹果角色,将默认的小猫角色拖到舞台的左下角,切换到小猫角色,编写代码如下:

有了这两行代码,就可以确保每次点击绿旗时,小猫都可以回到正确的位置。

2. 克隆苹果

选中苹果角色,绿旗点击的时候,是没有苹果的,因此,需要将苹果角色隐藏起来,编写代码如下:

当按下空格键时,要随机出现1~10个苹果,这个可以通过克隆来实现,同时需要使用变量保存苹果的数量,对应的代码如下:

克隆完所有的苹果之后,就轮到小猫提问了,因此这里发送了一个广播消息,需要注意,广播只需要发一次就可以了,所以不能在当“作为克隆体启动时”指令下下面发送广播消息。

对于苹果克隆体,需要设置好其位置,代码如下:

苹果要出现在树上,也就是舞台左上方,x坐标的范围为-180到0,y的范围为100到150,当然你也可以扩大或缩小范围。注意,这里使用了“将x坐标设为”和“将y坐标设为”两个指令,它和直接使用“移到x,y”指令的效果是一样的。

3. 小猫判断数量是否正确

小猫角色在接收到“提问”广播消息后,就开始询问并等待玩家输入数字,然后判断是否正确,切换到小猫角色,编写代码如下:

判断的逻辑非常简单,回答等于苹果个数,则说正确,否则说错误,不管是正确还是错误,会重新随机出现1-10个苹果,因此这里发送了一个“再来一次”的广播消息。

4. 再次出现苹果

苹果角色在接收“再来一次”广播消息之后,需要做两件事情,一是删除原来的苹果克隆体,二是重新生成克隆体,我们可以编写如下代码:

由于“删除此克隆体”指令是一个尾指令(所谓尾指令是指它只能作为最后一个指令,后面不能再接任何其他指令了),所以,这里使用了两个独立的代码块,其中上面的代码块用于删除所有的苹果克隆体,下面的代码块则用于重新生成新的克隆体。

这两个代码块都是在接收到“再来一次”广播消息时就立刻执行的,那到底是谁先执行,谁后执行呢?

如果上面的删除此克隆体后执行,那岂不是把新生成的克隆体也一并都删除了么。为确保我们先执行删除指令,然后再删除,因此在下面的代码块中,添加了一个等待0.5秒的指令,这个小技巧你可要学会哦 。

5. 代码优化

我们再回头看一下苹果角色的代码,其中有两个代码段,一个是按下空格键代码块,一个是当接收到“再来一次”广播消息代码块,如图所示:

有什么问题吗?相信聪明的你已经发现了,这两个代码块中的核心代码,也就是随机生成1~10个苹果克隆体的代码是一模一样的,针对这种情形,我们有什么办法可以让代码变得更简洁吗?

技巧有两个,第一个技巧就是使用自制积木,第二个技巧则是使用事件广播机制。

我们先来看第一个技巧,使用自制积木,我们可以将随机生成1~10个苹果克隆体的代码做出自制积木,如图所示:

然后在两个代码块中,都使用这个自制积木,如图所示:

第二个技巧则是使用事件广播机制,我们可以在两个不同的时刻,给苹果角色自己发广播,即在按下空格键和当接收到“再来一次”广播线消息时,发送一个“随机生成1~10个苹果”广播消息,如图:

然后在接收到“随机生成1~10个苹果”这一广播时克隆苹果即可,如图所示:

如此一来,我们的代码就变得更加简洁了,你学会了吗?

四.总结与思考

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

  • 设置角色位置,包括指定位置和随机位置;

  • Scratch克隆,重点是如何先删除克隆体再生成新的克隆体

  • Scratch问答,包括询问并等待和回答两个指令;

  • 事件广播机制;

  • 使用自制积木或事件广播来优化代码。

本题相对比较简单,重点是如何对代码进行优化,提高代码的重用性。编程最高的境界就是使用最少的代码实现指定功能,有了这样的目标,你就会不断的探索学习,不断的摸索更好的算法和编程技巧,从而写出让自己满意的代码。

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

需要素材和源码的,可以练习作者,或者移步至同名wx号。


http://lihuaxi.xjx100.cn/news/295571.html

相关文章

(四) 共享模型之管程【Monitor 概念】

一、Java 对象头(P75) 二、原理之 Monitor(锁) Monitor 被翻译为监视器或管程。 每个 Java 对象都可以关联一个 Monitor 对象,如果使用 synchronized 给对象上锁(重量级)之后,该对象头的 Mark Word 中就被设…

Kotlin高仿微信-第27篇-朋友圈-相册选择图片或小视频

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

计算机毕业设计Java高校防疫物资管理系统(源码+系统+mysql数据库+lw文档)

计算机毕业设计Java高校防疫物资管理系统(源码系统mysql数据库lw文档) 计算机毕业设计Java高校防疫物资管理系统(源码系统mysql数据库lw文档)本源码技术栈: 项目架构:B/S架构 开发语言:Java语…

项目的坎坷一生

一、从产品到项目 项目的定义:只会进行一次,包含多项互相关联的任务,并且有绩效、时间、成本和范围限制的一项工作。 产品是解决某个问题的东西,项目是一个过程。 1、做产品VS做项目 ①从生命周期角度区别 做产品的生命周期相…

Stable Diffusion 关键词tag语法教程

Stable Diffusion 关键词tag语法教程 AI绘图在线体验 二次元绘图 在线体验地址:Stable Diffusion 模型包括: NovelAI,NovelAI的模型训练使用了数千个网站的数十亿张图片,包括 Pixiv、Twitter、DeviantArt、Tumblr等网站的作品。 Waifu&am…

`Computer-Algorithm` 最短路Shortest-Path,Dijkstra,SPFA,Floyd

Contents最短路Shortest-PathAlgorithm: Dijkstra最短路Shortest-Path Algorithm: Dijkstra Given a graph GGG, an total-order ≤\leq≤ on the set of the weight of all path ∣AB∣|AB|∣AB∣ (AB can be same) and a binary operator , then the weight of a path (the…

Rust权威指南之错误处理

一. 简述 在Rust中,我们将错误分为两大类:可恢复错误和不可恢复错误。 可恢复错误:例如文件未找到等,一般需要它们报告给用户并再次尝试进行操作; 不可恢复错误:这类错误往往就是Bug的另一种说法&#xf…

LeetCode 0895. 最大频率栈

【LetMeFly】895.最大频率栈 力扣题目链接:https://leetcode.cn/problems/maximum-frequency-stack/ 设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。 实现 FreqStack 类: FreqStack() 构造一个空的堆栈。…