神奇哈哈镜,本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程初级组真题第3题,题目要求通过编程实现神奇哈哈镜效果。当小猫走到右侧哈哈镜前时,哈哈镜子中开始出现胖胖的特效小猫,当小猫走到左侧哈哈镜前时,哈哈镜子中开始出现瘦瘦的特效小猫。
先来看看题目的要求吧。
一.题目说明
编程实现:
神奇的哈哈镜。
具体要求:
1). 点击绿旗,角色、背景如图所示;
2). 当按下键盘上的右方向键,小猫面向右,向右移动;当按下键盘上的左方向键,小猫面向左,向左移动;当松开按键,小猫停止移动;(小猫移动时持续切换造型)
3). 当小猫走到右侧哈哈镜前时,哈哈镜子中开始出现胖胖的特效小猫,并且镜子中的影像要跟随小猫一起移动;
4). 当小猫走到左侧哈哈镜前时,哈哈镜子中开始出现瘦瘦的特效小猫,并且镜子中的影像要跟随小猫一起移动。
评判标准:
- 5分:满足”具体要求”中的1);
- 11分:满足”具体要求”中的2);
- 17分,满足”具体要求”中的3);
- 17分:满足”具体要求”中的4)。
二.作品效果
在编程之前,先来看一下作品的完整效果吧:
三.思路分析
本题有3个角色,分别是舞台和两只小猫,如图所示:
其中舞台角色最为简单,只需要设置好其位置即可,cat角色也比较简单,当按下左右方向键时左右移动。本题的难点是cat2角色,根据题目要求,我们可以将其分成3个小功能:
- 和cat同步移动
- 显示和隐藏
- 设置外观特效
第一点,和cat同步移动,比较简单,可以使用广播消息,也可以直接使用按键指令,显然使用后者更为简单。
第二点,显示和隐藏,当cat走到哈哈镜前,cat2要显示,一旦cat离开哈哈镜,cat2则需要隐藏,这个可以通过x坐标所处范围进行判断。
第三点,cat2要呈现胖瘦效果,这需要通过角色的外观特效来实现,具体来说就是鱼眼特效。接下来,我们进入具体的编程实现环节。
四.编程实现
根据题目描述和思路分析,我们可以分角色来编写程序:
- 舞台角色
- cat角色
- cat2角色
1. 舞台角色舞台角色非常简单,只需要进行初始化设置即可,代码如下所示:
之所以将舞台角色移到最后面,是为了确保我们能看到两只小猫。
2. cat角色
首先是初始化设置,包括角色的位置、造型、旋转方式和方向,在cat角色中编写代码如下:
这里将旋转方式设置为左右翻转,是确保小猫不会出现头朝地的情况。
当按下←键,小猫向左移动,当按下→键时,小猫向右移动,在移动的过程,小猫还需要切换造型,继续编写代码如下:
关于按键的处理,在Scratch中有如下两种方式:
- 直接使用“当按下xx键”指令;
- 使用“重复执行” + “如果…那么” + “按下xx键”指令组合;
二者实现的效果是一样的,其区别在于前者不受绿旗控制,任何时候只要按键都会执行代码,而后者必须点击绿旗后才会执行。
有些同学比较纠结,到底什么时候该用前者,什么时候又该使用后者呢?
实际上非常简单,判断依据就是看是否有结束游戏/作品的要求,或者是明确说明在点击绿旗后按键。
很明显,本题没有结束作品的要求,所以两种方式都可以使用,但使用前者更为简单。
2. cat2角色
针对cat2角色,根据前面的思路分析,我们分3步来实现:
- 初始化设置
- 和cat同步移动
- 设置外观,包括显示、隐藏和鱼眼特效
首先也是初始化设置,在cat2角色中,编写代码如下:
需要说明的是,除了y坐标不同,这里的设置和cat完全一样,包括方向和造型,这样可以确保两只小猫是完全同步的,包括左右脚切换的效果。
接下来是按键操作,和cat的代码基本一致,对应的代码如下:
最后是外观设置,当小猫走到哈哈镜面前,需要显示,否则就隐藏。如果走到左边的哈哈镜,将鱼眼特效设置为负数,如果走到右边的哈哈镜,将鱼眼特效设置为正数,继续编写代码如下:
简要说明两点:
1). 为了方便讲解,我这里使用了一个新的绿旗代码块,实际上你可以和前面初始化代码放在一起;
2). 这里给出的坐标范围和鱼眼特效值,只是一个参考值,你可以进行相应的调整;
至此,整个作品就创作好了,赶紧来体验一下哈哈镜的神奇效果吧。
五.总结与思考
本题是初级组编程部分第3题,分数为50分,积木块数量50个左右,涉及到的知识点主要包括:
- 运动编程,包括移动、方向的设置;
- 外观编程,包括造型切换、显示、隐藏、图层和鱼眼特效;
- 事件编程,主要是按键处理;
- 运算指令,包括关系运算和逻辑运算;
本题难度中等,完成时间大概在10分钟左右,对于部分同学来说,可能会遇到以下两个难点:
- 不知道两只小猫如何同步移动;
- 对鱼眼特效不熟悉,不知道如何设置小猫胖瘦的效果;
如果你关注过超平老师的历届真题解析,不难发现,在往届的考试中,出现过类似的作品。
比如,在2022年11月27日举办的第3次STEMA测评中,编程题第3题《小猫照镜子》和本题的场景有类似之处。
再比如,2020年10月31日举行的第11届蓝桥杯国赛编程题第6题《3D打印小猫》中就出现过鱼眼特效的设置。
所以说,要想在省赛中取得好的成绩,往届的真题就是最好的复习资料,如果你做过这些题目,那本题就变得非常简单了,你说是吧。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香