小猴吃苹果-第12届蓝桥杯Scratch选拔赛真题精选
第12届蓝桥杯青少年组第2次选拔赛于2020年9月20日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
小猴吃苹果,本题是2020年9月20日举行的第12届蓝桥杯Scratch选拔赛真题编程第3题,初级组和中级组都有此题,题目要求编程实现小猴搭梯子吃苹果的有趣场景。
先来看看题目的要求吧。

题目说明

1). 当绿旗被点击后,显示Blue Sky背景、猴子和苹果角色(大小都为50),出现在如图位置(大致位置即可);

2). 鼠标点击猴子之后,猴子能搭建出如图的梯子(使用画笔)。图中小正方形边长为50;

3). 每按下一次空格键,猴子就可以爬一格梯子,猴子默认已经站在第一格;
4). 当猴子爬到上面碰到苹果时,苹果和猴子同时用2秒钟时间慢慢回到地面上,程序结束;
5). 重新点击绿旗,程序可以重复执行。
评判标准:
2分:角色、背景符合要求;
6分:正确画出符合要求的梯子;
6分:猴子可以按照题目要求爬梯子;
6分:猴子拿到苹果后可以按照要求回到地面;
10分:程序可以重复执行,且完全符合要求。

思路分析

本题包含4个角色,分别是Tree,Monkey、Apple和Pencil,如图所示:


程序实现

根据题目描述和思路分析,我们可以分四步来编写程序:
初始化设置
绘制梯子
猴子爬梯子吃到苹果
作品优化

monkey也需要设置好位置,代码如下:

Apple角色的初始化代码如下:

对于Pencil角色而言,需要隐藏起来,同时需要清空舞台,对应的编写代码如下:

由于Pencil角色自始至终都是不用显示的,因此也就不需要设置其位置了。
2. 绘制梯子
鼠标点击猴子,就要开始绘制梯子了,需要注意的是绘制需要移动角色,最好不要直接使用猴子来绘制梯子,而是借助Pencil角色来实现,我们可以通过事件广播机制来实现角色之间的通信。
在Monkey角色中,编写代码如下:

相应的,Pencil角色在接收到广播消息后,就开始绘制梯子了,其实就是自下而上绘制6个正方形,切换到Pencil角色,编写代码如下:

代码比较简单,画一个正方形需要循环4次,然后再重复6次,就可以绘制好梯子了,但是要注意,一个正方形画好之后,需要向上移动50步。
3. 猴子爬梯子吃到苹果
画好梯子之后,当按下空格键时,猴子向上爬一格,当猴子碰到苹果时,猴子又慢慢回到地面,在Monkey角色中编写代码如下:

由于苹果要和猴子一起回到地面,所以碰到苹果时,发送了一个”回来“的广播消息。相应的苹果角色在接收到广播消息后,也慢慢滑行到舞台底部,切换到Apple角色,增加如下代码:

注意,猴子和苹果角色滑行的时间相同,这样可以保证两者是同步,但是位置并不相同,在创作时,需要多测试几次,找到合适的坐标值,确保二者的相对位置不变,滑行结束,就停止全部脚本,结束程序。
至此,所有的效果都已经实现了,你可以测试一下效果如何。
4. 作品优化
上面的代码,基本上是能够满足题目要求的,但是有些不合理的地方,比如反复点击猴子,画笔会一遍又一遍地绘制梯子,只不过它们重叠在一起,看起来不明显。
再比如,在没有画好梯子之前,直接按下空格键,猴子也会煞有介事的往上爬,这就有些不合理了,这个该怎么解决优化呢?
其实也不难,首先去掉”当角色被点击“指令,使用”碰到鼠标指令“和”按下鼠标“组合指令来判断是否按下鼠标,同时这里只需要判断一次,最简单的办法是使用”等待条件“指令。
当鼠标点击猴子后,发送”画梯子“广播消息,不同的是这一次我们使用”广播并等待“指令,在梯子画完之后再继续执行后续代码。
接下来继续判断是否按下空格键,同样的,去掉”当按下空格键“指令,使用”等待条件“和侦测模块中的“按下空格键”来判断是否按下空格键,对应的代码如下:

需要注意的是,使用等待条件判断是否按下空格键时,需要在尾部使用“等待按下空格键不成立”指令,以确保按下并松开鼠标是一次按键操作,这是一个非常经典的代码结构,你可以收藏起来。
经过优化之后,作品就非常合理,非常严谨了。

总结与思考

设置角色位置,关键是要养成初始化角色位置的习惯;
事件广播机制,重点是广播事件并等待指令的使用及特点;
画笔的使用,使用画笔结合移动绘制梯子;
点击角色的两种实现方式; 按下某个键的两种实现方式。
本题相对比较简单,重点是如何对作品进行优化,让作品更完整,更符合逻辑。我们在创作任何作品时,都需要考虑作品的完整性、逻辑性,力争给玩家最好的用户体验,这是一个不断迭代,不断创新的过程,你会从中受益良多。

添加 家长论坛微信

全部 0条评论