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

[导读]:超平老师计划推出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). 运行程序,出现下图所示的角色与背景;

图片[1]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

图片[2]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

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

评判标准:

  • 10分:运行程序,苹果树上随机出现1-10个苹果,且小猫询问:树上一共有多少个苹果(苹果不能重叠);
  • 10分:在询问框中输入正确的苹果个数,小猫会说:“正确”1秒,如输入错误的苹果个数,小猫会说:“错误”1秒;
  • 10分:之后苹果树上再次随机出现1-10个苹果,小猫会接着询问有几个苹果。

二.效果预览

在编程之前,先来看看作品的完整效果吧:

三.思路分析

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

图片[3]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

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

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

四.编程实现

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

  • 准备工作
  • 克隆苹果
  • 小猫判断数量是否正确
  • 再次出现苹果
  • 代码优化

1. 准备工作

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

图片[4]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

2. 克隆苹果

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

图片[5]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

图片[6]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

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

图片[7]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

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

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

图片[8]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

4. 再次出现苹果

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

图片[9]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

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

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

5. 代码优化

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

图片[10]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

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

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

图片[11]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

图片[12]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

图片[13]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

图片[14]-scratch数苹果_第12届蓝桥杯scratch选拔赛真题解析教程-超平的编程课

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

五.总结与思考

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

  • 设置角色位置,包括指定位置和随机位置;
  • Scratch克隆,重点是如何先删除克隆体再生成新的克隆体
  • Scratch问答,包括询问并等待和回答两个指令;
  • 事件广播机制;
  • 使用自制积木或事件广播来优化代码。

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


需要素材和源代码的,可以转到这里,数苹果-2020.8.23蓝桥杯stema第3题

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容