小猴吃苹果-第12届蓝桥杯Scratch选拔赛真题精选

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

蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。

第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,如图所示:

图中的梯子是通过画笔绘制出来的,所以,这是一个典型的运动和画笔相结合的作品。

从功能上看,本题并不复杂,点击猴子,使用画笔角色绘制出梯子,有了梯子之后,按下空格键,猴子就开始往上爬,每次爬一个格子。碰到苹果后,猴子和苹果一起返回地面。

这里的重点是如何衔接各个角色,很显然,这需要使用事件广播机制。除此之外,还需要进一步考虑各个事件的先后顺序,试想一下,每点击一次猴子,就绘制一个梯子,是否有这个必要?如果梯子还没搭好,按下空格键猴子就开始向上爬了,这样是否合理?

对于本题,我会先按照常规方式实现所有功能,以满足题目的要求,然后再进行优化,确保作品更完整,更合理。 

三.编程实现

根据题目描述和思路分析,我们可以分四步来编写程序:

  • 初始化设置

  • 绘制梯子

  • 猴子爬梯子吃到苹果

  • 作品优化

1. 初始化设置

这里的4个角色都需要进行初始化设置,对于Tree1角色,只需要固定好其位置即可,代码如下:

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

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

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

由于Pencil角色自始至终都是不用显示的,因此也就不需要设置其位置了。

2. 绘制梯子

鼠标点击猴子,就要开始绘制梯子了,需要注意的是绘制需要移动角色,最好不要直接使用猴子来绘制梯子,而是借助Pencil角色来实现,我们可以通过事件广播机制来实现角色之间的通信。

在Monkey角色中,编写代码如下:

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

代码比较简单,画一个正方形需要循环4次,然后再重复6次,就可以绘制好梯子了,但是要注意,一个正方形画好之后,需要向上移动50步。

3. 猴子爬梯子吃到苹果

画好梯子之后,当按下空格键时,猴子向上爬一格,当猴子碰到苹果时,猴子又慢慢回到地面,在Monkey角色中编写代码如下:

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

注意,猴子和苹果角色滑行的时间相同,这样可以保证两者是同步,但是位置并不相同,在创作时,需要多测试几次,找到合适的坐标值,确保二者的相对位置不变,滑行结束,就停止全部脚本,结束程序。

至此,所有的效果都已经实现了,你可以测试一下效果如何。

4. 作品优化

上面的代码,基本上是能够满足题目要求的,但是有些不合理的地方,比如反复点击猴子,画笔会一遍又一遍地绘制梯子,只不过它们重叠在一起,看起来不明显。

再比如,在没有画好梯子之前,直接按下空格键,猴子也会煞有介事的往上爬,这就有些不合理了,这个该怎么解决优化呢?

其实也不难,首先去掉”当角色被点击“指令,使用”碰到鼠标指令“和”按下鼠标“组合指令来判断是否按下鼠标,同时这里只需要判断一次,最简单的办法是使用”等待条件“指令。

当鼠标点击猴子后,发送”画梯子“广播消息,不同的是这一次我们使用”广播并等待“指令,在梯子画完之后再继续执行后续代码。

接下来继续判断是否按下空格键,同样的,去掉”当按下空格键“指令,使用”等待条件“和侦测模块中的“按下空格键”来判断是否按下空格键,对应的代码如下:

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

经过优化之后,作品就非常合理,非常严谨了。

四.总结与思考

本题难度系数为2,积木块数量40个左右 ,涉及到的知识点主要包括:

  • 设置角色位置,关键是要养成初始化角色位置的习惯;

  • 事件广播机制,重点是广播事件并等待指令的使用及特点;

  • 画笔的使用,使用画笔结合移动绘制梯子;

  • 点击角色的两种实现方式;

  • 按下某个键的两种实现方式。

本题相对比较简单,重点是如何对作品进行优化,让作品更完整,更符合逻辑。我们在创作任何作品时,都需要考虑作品的完整性、逻辑性,力争给玩家最好的用户体验,这是一个不断迭代,不断创新的过程,你会从中受益良多。

如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。

需要素材和源码的,可以联系本人,或者移步至同名wx号。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值