[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第68讲。
第10届蓝桥杯青少年组省赛于2019年3月24日举行,形式为线下考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
女孩顶球,本题是第10届蓝桥杯Scratch省赛真题编程第1题,初级组和中级组都有此题,题目要求编程实现女孩头顶足球的精彩一幕。
先来看看题目的要求吧。
一.题目说明
准备工作:
导入角色库中的两个角色小女孩“Anna”和足球“Ball-Soccer”。
![图片[1]-scratch女孩顶球_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-245.png)
编程实现:
小女孩正在表演用头托住足球。为了把足球一直托在头顶,小女孩需要不停地晃动双手。小女孩还可以跟着鼠标一起移动。
具体要求:
1、程序运行后,小女孩要跟随鼠标一起移动;
2、小女孩可以不停地切换造型(切换造型的间隔时间参考值为 0.2 秒);
3、无论小女孩是否移动,足球都始终处于小女孩的头顶。不用考虑足球是否遮挡住小女孩的头部,只要靠着就可以,参考下图所示。
![图片[2]-scratch女孩顶球_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-246-1024x259.png)
将程序保存到桌面,命名为“1.sb2”。
评判标准:
- 10 分:程序开始,未移动鼠标时,球在小女孩头上;
- 30 分:在 10 分的基础上,小女孩在跟随鼠标移动的过程中没有明显卡顿现象,小女孩可以一直切换造型;
- 50 分:在 30 分的基础上,球始终在小女孩头部,如果存在足球脱离小女孩头顶的情况,只能得 30 分。
二.效果预览
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本题有两个角色,分别是女孩和足球,如图所示:
![图片[3]-scratch女孩顶球_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-247-902x1024.png)
其中,女孩跟随鼠标移动,而足球始终位于女孩的头顶,我们只需要设置好角色的位置即可。
四.编程实现
根据题目描述和思路分析,我们可以分角色来编写程序:
- 女孩角色随鼠标移动
- 足球位于女孩头顶
1. 女孩角色随鼠标移动
绿旗点击时,女孩就跟随鼠标移动,在Scratch运动模块中,有一个“移到鼠标指针”的指令可以实现这一效果,编写代码如下:
![图片[4]-scratch女孩顶球_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-248.png)
在移动的同时,女孩不停的切换造型,这可以使用“下一个造型”指令,很多同学毫不犹豫的写出如下代码:
![图片[5]-scratch女孩顶球_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-249.png)
执行这段代码,会发现女孩切换造型的速度太快,于是又增加了一个“等待1秒”指令,如下:
![图片[6]-scratch女孩顶球_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-250.png)
再次执行代码,又出现一个奇怪的现象,女孩的反应有些迟钝,这是什么情况?仔细想想,也不难理解,当增加了“等待0.2秒”指令后,女孩每一次移到鼠标指针位置后,需要等待0.2秒,才会再次移到鼠标指针位置,这就造成了卡顿现象。
解决方法也比较简单,就是使用两个绿旗代码块,将移动和切换造型的代码分开同步运行,互不干扰,这就是编程中的多线程,代码如下:
![图片[7]-scratch女孩顶球_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-251.png)
实际上,在Scratch中经常采用多线程的编程实现,在一个角色中编写多个绿旗代码块。
2. 足球位于女孩头顶
对于足球角色来说,每次移到女孩角色位置即可,可编写代码如下:
![图片[8]-scratch女孩顶球_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-252.png)
执行代码,结果如下:
![图片[9]-scratch女孩顶球_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-253.png)
足球位于女孩的腰部,你知道这是为什么吗?原因很简单,就是将足球移动女孩角色位置,其实是将足球角色的造型中心和女孩的造型中心重叠起来,而女孩的造型中心刚好是在腰部。
要将足球放到女孩头顶,可以将足球在当前位置向上移动一定距离(大概100步)即可,因此,我们可以在每次移到女孩所在位置的同时,将y坐标增加100,代码如下:
![图片[10]-scratch女孩顶球_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-254.png)
五.总结与思考
本题难度系数为1,积木块数量在12个左右,涉及到的知识点主要包括:
- 无限循环及重复执行指令的使用;
- 移到角色指令,包括特殊的移到鼠标指针指令;
- 切换造型;
- 多线程的编程思想。
本题非常简单,作为省赛的第一题,基本上是送分题,重点是要处理好等待时间指令造成的卡顿现象。我们不仅要明白卡顿的原因,同时还要掌握多线程解决卡顿现象的编程思想。
需要素材和源代码的,可以转到这里,女孩顶球-2019.3.24蓝桥杯省赛第1题。
暂无评论内容