切换子弹-第12届蓝桥杯Scratch国赛真题第4题

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

第12届蓝桥杯青少年组国赛于2021年5月29日举行,本次赛事仍然采取了在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

Scratch切换子弹,本题是第12届蓝桥杯Scratch国赛真题编程部分第4题,初级组和中级组都有此题。题目要求考生编程实现切换子弹效果,按1发射火焰弹,按2发射火焰散弹,本题难度系数为3,分值为80分。

先来看看题目的详细说明吧。

题目说明

编程实现

切换子弹

具体要求

1). 点击绿旗,呈现对应的角色与背景;

图片[1]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

2). 按下数字键1,发射1类型子弹-火焰弹;

图片[2]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

3). 按下数字键2,发射2类型子弹-火焰散弹;

图片[3]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

4). 再次按下数字键1,发射1类型子弹-火焰弹;

5). 子弹为持续发射状态,数字键1与数字键2可以持续切换发射子弹的类型。

评判标准:

  • 5分:满足要求1;
  • 25分:满足要求2
  • 25分:满足要求3;
  • 10分:满足要求4;
  • 15分:满足要求5。

效果预览

先来看看作品的完整效果吧:

思路分析

本题逻辑比较简单,当按下数字键1时,沿着正前方不停地发射火焰弹,当按下数字键2时,沿着5个方向同时发射火焰散弹。

本题只有两个角色,其中子弹角色是重点,几乎所有的代码都是在子弹角色中来编写的。

按键处理,我们可以使用事件模块中的“当按下xx键”指令,也可以使用控制模块中的“如果…那么”指令结合侦测模块中的“按下xx键”指令。不停的发射子弹,这需要使用Scratch中的克隆技术。

本题的难点在于,如何沿着5个方向同时发射火焰散弹,这会用到Scratch克隆中的一个小技巧,稍后详细为你介绍。

程序实现

接下来,我们就分3步来编写程序:

  • 实现按键处理
  • 发射1类型子弹-火焰弹
  • 发射2类型子弹-火焰散弹

1. 实现按键处理

针对按键处理,根据前面的介绍,有两种方式实现,不过我还是比较推荐第二种方式,也就是使用“如果…那么”指令结合“按下xx键”指令,原因很简单,使用这种方式,只有在点击绿旗之后才能启动程序,如果使用第一种方式,不用点击绿旗,直接按键盘就可以启动程序。

切换到子弹角色,编写代码如下:

图片[4]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

注意:很多刚开始学编程的孩子,经常会漏掉这里的”重复执行“指令,导致没有任何效果,切记,”如果…那么“指令只能执行一次,通常需要和”重复执行“指令配合使用。

接下来就需要分别处理发射两种不同的子弹了。

2. 发射1类型子弹-火焰弹

1类型子弹始终沿着90度方向发射,因此,只需要将子弹角色设置为90度,不停的克隆即可,只是要控制一下克隆子弹的频率,通常的做法就是等待一下,比如0.05秒,这部分的代码如下:

图片[5]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

一旦生成了子弹克隆体,就可以让它不停地向前移动,直到碰到舞台边缘消失,代码如下:

图片[6]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

这样一来,1类型子弹就可以成功发射出去了。

3. 发射2类型子弹-火焰散弹

这是本题的重点,也是难点,沿着5个不同的方向发射子弹,意味着我们需要在按下数字键2的时候,一次性克隆5个子弹,并设置不同的方向。看起来挺简单的,大部分学生都会这么写:

图片[7]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

从逻辑上来讲,这么写没有任何问题,但是效果看起来却有点奇怪,如下图所示:

图片[8]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

眼尖的你,估计已经发现了,这里的5颗子弹并不是同时发射出去的,明显的有先后顺序。

尽管这里没有”等待1秒“指令,但是代码执行还是要占用时间的,所以这里的5颗子弹还是有先后顺序的,也就导致出现了上图所示的效果。

(O_O)? 能否让5颗子弹同时克隆出来呢?

当然能,今天超平老师就教你一招,借助自制积木就可以,将克隆5颗子弹的程序定义成自制积木,如图所示:

图片[9]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

同时确保在定义自制积木的时候,勾选左下角的”运行时不刷新屏幕“,如图:

图片[10]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

然后在程序中使用自制积木来替换刚才的代码,如图:

图片[11]-scratch切换子弹_第12届蓝桥杯scratch国赛教程-超平的编程课

那么,你可能要问了,这里的”运行时不刷新屏幕“是个啥意思呢?

其实,更确切地说,“运行时不刷新屏幕”,是不刷新舞台。其作用是,使得自制积木中的代码在执行时省去舞台刷新的步骤,并在整个自制积木执行完毕后再刷新屏幕。

由于刷新舞台会消耗计算机资源,需要一定的时间,因此使用“运行时不刷新屏幕”功能可以使特定的代码加快执行效率,缩短运行时间,但是用户无法通过舞台看到程序运行过程中的效果变化,可以简单的理解这部分的代码是同时执行的。

除了本例中的确保多个子弹同时克隆的效果,还可以用于Scratch画笔瞬间绘制好图形,以及角色碰撞时控制其行为的物理引擎等。

总之,“运行时不刷新屏幕”功能为在Scratch中实现更多更丰富的效果提供了可能,是一个比较强大的功能。

至此,发射2类型子弹的效果也完成了。

总结与思考

本题相对较为简单,重点考察了下面4个知识点:

  • 按键处理程序,建议使用”如果…那么“和”按下xx键“组合方式;
  • 克隆的使用,重点是克隆3指令的含义和用法;
  • 自制积木的使用,分为定义和调用两个阶段;
  • ”运行时不刷新屏幕“设置项的意义和妙用;

最后需要强调一下,不管是发射1类型子弹还是2类型子弹,其克隆体运动的代码都是一样的,都是通过重复执行”移到10步“来实现的。有的同学可能在想,使用”将x坐标增加10“不是也可以吗?

这个还真不行,使用”将x坐标增加10“指令除了x坐标发生变化之外,还有一个隐含信息,那就是它始终面向右方,也就是90度。这就导致,所有的子弹只会沿着90度方向发射出去,而这里的2类型子弹,子弹是沿着5个不同方向发射出去的。

实际上,我们可以这么理解,”将x坐标增加10“只是”面向方向“ + ”移动10步“组合的一个特例,如果x增加的是正数,那么方向就是90度,如果x增加的是负数,那么方向就是-90度。

关于角色的运动,在Scratch中有3种实现方式,我们需要根据具体的问题,具体分析,然后采取最优的方案,这也是计算思维的实际运用和体现。


需要素材和源代码的,可以转到这里,切换子弹-2021.5.29蓝桥杯国赛第4题

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

请登录后发表评论

    暂无评论内容