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