[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第19讲。
第10届蓝桥杯青少年组国赛于2019年5月25日举行,形式为线下考试,考生自带电脑。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
沙漠变绿洲,本题是第10届蓝桥杯Scratch国赛真题编程第4题,题目要求考生编程实现水滴从鼠标处呈抛物线落下,当水滴落在小树上后,小树慢慢长大的效果。
先来看看题目的要求吧。
题目说明
准备工作:
导入“Trees”角色,自行绘制1个水滴的角色,导入背景”desert“,在背景上绘制4个树坑。
![图片[1]-scratch沙漠变绿洲_第10届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-170-904x1024.png)
编程实现:
游戏开始,按下并移动鼠标,水滴会从鼠标处呈抛物线落下,水滴落在小树上后,小树慢慢长大。
具体要求:
1). 点击绿旗,程序开始,舞台上只看到4个树坑,而小树以虚像的状态存在于树坑中。
![图片[2]-scratch沙漠变绿洲_第10届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-171.png)
2). 每次按下鼠标,多个水滴从鼠标处呈抛物线落下,水滴的运动轨迹是向右的抛物线,抛物线运动的实现方法见下面的程序图。
![图片[3]-scratch沙漠变绿洲_第10届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-172.png)
3). 如果水滴落到树坑(小树的虚像)上,小树开始出现,并且小树在碰到更多的水滴时慢慢长大,当长到角色大小为100(原始大小)时,就不再长大了。
![图片[4]-scratch沙漠变绿洲_第10届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-173.png)
4). 注意:在小树长大的过程中,小树的根部应始终在树坑里,不能上下移动。
评判标准:
- 0分:符合具体要求1),即点击绿旗,只看到树坑,没有树;
- 30分;在10分基础上,符合具体要求2),即每次点击舞台,多个水滴呈抛物线落下,水滴不重叠在一起;
- 50分:在30分基础上,符合具体要求3),即当水滴落在小树上,小树慢慢长大,当长到大小为100时,不再长大;
- 60分:在50分基础上,符合具体要求4),即小树底部始终在树坑中,不能上下移动。
效果预览
在编程之前,先来看看作品的完整效果吧:
思路分析
本题有两类角色,一是雨滴角色,二是小树角色,其中雨滴角色是要通过Scratch自带的绘图工具来绘制的,小树角色有4个,其功能是一样的。需要注意的是这里的树坑并不是角色,它是直接在背景上绘制出来的。
对于雨滴角色来说,每当按下鼠标时,就有一颗水滴出现,既然有大量的水滴角色同时出现在舞台上,就肯定离不开克隆。水滴运动的轨迹是抛物线,不过这里已经给出了抛物线的程序,直接使用即可。
对于小树角色而言,刚开始时不显示的,但并不是直接隐藏的,而是通过设置虚像特效来实现隐藏的。因而,当小树碰到水滴时,它不仅要慢慢变大,同时还需要改变虚像特效,让小树显示出来。
编程实现
根据上述思路分析,我们可以分角色来编写程序:
- 水滴角色
- 小树角色
1. 水滴角色
绿旗点击时,水滴角色处于隐藏状态,当按下鼠标时,在鼠标位置处克隆一个水滴角色,代码如下:
![图片[5]-scratch沙漠变绿洲_第10届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-174.png)
一旦生成水滴克隆体,就开始以抛物线的方式下落,直到碰到舞台边缘消失,关于抛物线的运动程序,直接使用参考代码,创建好变量”x速度“和”y速度“,为了确保每个水滴的速度不同,这里的变量需要使用私有变量,编写代码如下:
![图片[6]-scratch沙漠变绿洲_第10届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-175.png)
为了丰富雨滴效果,这里将雨滴的大小设置为随机大小。这段代码只考虑了雨滴碰到舞台边缘时要消失的情况,实际上,当碰到4棵小树时,也需要删除,我们可以单独再写一个代码块,如下:
![图片[7]-scratch沙漠变绿洲_第10届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-176-1024x257.png)
有两点需要说明:
1). 之所以将这段代码放到独立的代码块中,是为了让代码结构更清晰,逻辑也更简单。一个代码块只负责水滴正常下落,另一个代码块则只负责碰到小树角色时的逻辑,这是一个非常有用的编程技巧,在很多作品中都可以使用。
2). 细心的你肯定发现了,在删除克隆体之前,加了一个“等待0.1秒”指令,看似可有可无的代码,实际上有着非常重要的作用。如果水滴角色碰到小树时立刻删除,那么小树角色在碰撞检测时,就有可能检测不到碰到水滴角色了,加了等待指令,就可以解决这个问题了。
2. 小树角色
小树角色在碰到水滴后,开始慢慢长大,需要明白的是,一个角色在大小发生变化时,它是以角色造型中心为中心点,向四周伸缩,换句话说,除了角色的造型中心位置保持不变,角色其它部位的位置都会发生变化。
题目要求在小树长大的过程中,小树的根部应始终在树坑里,不能上下移动。因此,我们需要修改小树角色的造型中心,将中心改为小树的根部,如图所示:
![图片[8]-scratch沙漠变绿洲_第10届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-177.png)
接下来,我们再来编写代码,绿旗点击时,将小树大小设置为10,虚像值设为100,然后不停的检测是否碰到水滴,如果碰到水滴,则同时改变大小和虚像值,直到小树长到大小为100,具体代码如下:
![图片[9]-scratch沙漠变绿洲_第10届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-178.png)
这是第一棵小树Trees1的代码,其它3棵小树代码基本一样,唯一不同的是它们的位置,注意修改。
你可能有一个疑问,为什么这里使用“将虚像特效设定为100”指令将小树角色隐藏起来,而不是直接使用“隐藏”指令呢?
这是因为在Scratch中,一个角色在隐藏的时候,是不能与其它角色碰撞的,而在指定虚像特效的时候,哪怕是虚像特效值为100(此时完全看不见角色),它也是可以与其它角色碰撞的。在很多游戏创作中,我们经常利用这个特性,来实现角色之间的碰撞检测。
总结与思考
本题逻辑比较简单,代码量也不多,去掉重复的代码,一共大概50个积木块,涉及到的知识点包括:
- 使用scratch自带的绘图工具绘制背景和角色;
- 造型中心的作用及修改角色造型中心;
- 私有变量的使用;
- 角色的大小设置及改变;
- 虚像特效的作用和设置;
- Scratch克隆编程,尤其要注意克隆体的碰撞检测。
尽管题目给出了抛物线的参考程序,但是并没有说明变量“x速度”和“y速度”是私有变量,导致一部分考生直接使用了全局变量,导致水滴角色的运动有些奇怪。所以,对于私有变量,必须要有深入的理解,并且要熟悉其使用场景,通常和克隆体一起结合使用较多。
需要素材和源代码的,可以转到这里,沙漠变绿洲-2019.5.25蓝桥杯国赛第4题。
暂无评论内容