[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第195讲。
第15届蓝桥杯国赛已于2024年9月7日正式落下帷幕,初级组和中级组共用一套试题,编程题一共有6题(初级组只有前5题),分别如下:
保护大熊猫,本题是2024年9月7日举行的第15届蓝桥国赛Scratch初/中级组编程第3题,题目要求编程创作一个保护大熊猫作品。每隔1秒怪物从舞台右侧上边缘出现,向下降落到达地面后,再向左侧的大熊猫持续移动,如果碰到大熊猫,游戏结束。玩家控制士兵在平台上方上下移动,按下空格键发射子弹,如果子弹击中怪物,怪物消失,得分加1,当得分为3时游戏胜利。
具体要求:
1). 点击绿旗,游戏开始,变量“得分”为0,士兵与舞台上边缘以一条竖线连接(竖线由画笔模块实现、 颜色和粗细不限),如图所示;
2). 每按下一次键盘↑或↓按键,可以分别让士兵向上或向下移动5步;
3). 士兵在移动的过程中,竖线长度随着士兵的上下移动而变化,并且士兵向下最多移动到熊猫上方的平台上,如图所示;4). 游戏开始后,每隔1秒,从舞台右半部分上边缘的随机位置出现一个怪物,并向下降落,如图所示;5). 每次按下空格键,枪口处只发射出一发子弹,子弹水平向右移动并且碰到怪物或舞台边缘后消失;
6). 被子弹击中的怪物会消失,同时 “得分”增加1,当 “得分”为3时,游戏胜利,程序结束,如图所示;
7). 未被击中的怪物到达地面后,朝向大能猫持续移动,并不断切换造型;(参考视频)
8). 当怪物碰到大熊猫后,大熊猫爆炸,游戏失败,程序结束,如图所示。
5 分:满足"具体要求"中的1);
3 分:满足"具体要求"中的2);
10分:满足"具体要求"中的3);
7 分:满足"具体要求"中的4);
10分:满足"具体要求"中的5);
5 分:满足"具体要求"中的6);
6 分:满足"具体要求"中的7);
在编程之前,先来看一下作品的完整效果吧:
本题有5个角色,分别是士兵、子弹、大熊猫、游戏结果和怪物,如图所示:
其中大熊猫有两个造型,一个是正常造型,一个是爆炸造型,如图:
游戏结束有两个造型,分别表示游戏胜利和游戏失败,如图:本题考查的知识点包括运动编程、画笔、按键处理、克隆、变量和广播机制等。题目涉及的角色较多,我们可以按照角色的先后出场顺序将功能分成如下6个模块:题目已经明确要求使用画笔来绘制,连分析都省了,这是画笔在游戏创作中的典型应用。在历届真题中多次出现过,比如第14届国赛中的《矿工挖宝》,第13届STMEA测评中的《小猫钓鱼》。根据数学中的“两点确定一条直线”原理,只需要确定好吊绳的两个端点坐标就可以了。
由于士兵只能上下移动,所以两个端点的x坐标是固定的,大概是-180,舞台顶部的y坐标是180,这个也是固定的,另外一个端点的y坐标则随士兵上下移动而变化,可以直接使用士兵的y坐标。
为了方便起见,一般都会借助一个新的角色来绘制图形。在按下↑、↓方向键的时候,士兵上下移动,这涉及到按键处理,在Scratch编程中,按键侦测通常有如下两种方式:从编写代码的角度来看,前者更加简单;如果从作品效果的角度来看,后者更好,因为它可以确保只有在游戏过程中按键才有效,建议使用后者。每隔1秒出现一个怪物,显然需要使用克隆,设置好克隆体的起点坐标,y肯定是固定的180,x则是在0~240之间取随机值。有了克隆体,首先只考虑怪物的运动效果,这是一个非常重要的编程小技巧。正常情况下(不考虑子弹的情况下),怪物先从上到下,然后从右到左,使用“重复执行直到”指令最方便,其中水平移动的时候还要不停地切换造型。按下空格键时会发射一颗子弹,这一步很容易出现bug,需要格外小心,有两个关键点:首先是按键处理,如果使用事件指令的话,则任何时刻按键都会执行程序,游戏体验不好;如果使用侦测指令的话,可能会出现按住不放连续发射的情况,需要增加一个松开按键的处理。
其次是克隆子弹,这里要避免克隆陷阱,即避免在事件指令中克隆角色,包括按键处理和广播,因为所有的克隆体都会响应按键,都会接收广播消息。有了子弹和怪物,接下来就可以处理二者的碰撞问题了,当子弹击中怪物时,二者都要消失,这是典型的克隆体碰撞模型。在克隆体碰撞模型中,要确保克隆体双方都消失,不能简单的使用碰到对方就删除方式,因为双方在碰撞时,代码执行一定会有先后顺序,一旦某一方先删除自己了,那么对方就无法检测碰到对方了,这就导致有一方没有删除的bug。
处理方式也比较简单,就是在删除之前等一下,或者使用广播并等待,比如子弹在碰到怪物时,发生一个广播消息给怪物,等待击中的怪物先删除,再删除子弹克隆体。这部分比较简单,当击中3个怪物时,游戏胜利,如果怪物碰到大熊猫了则游戏失败。在Scratch自带的角色库中,添加一个画笔角色,如图所示:
1). 角色可以任意选择,但是要将角色变小,这样才能确保可以移到舞台的上边缘;2). 士兵在上下移动时,吊绳也跟随变化,因此要循环绘制,每次绘制前先将之前的擦除掉;3). 在画笔角色中,要获取士兵的y坐标,需要使用侦测模块中的“舞台的背景编号”指令,如下:
1). 要确保士兵在平台和舞台上边缘之间上下移动,在按键的同时还要看当前所处位置,两个条件是逻辑与的关系,当然也可以在“如果...那么”指令中嵌套一个“如果...那么”指令;2). 对于上下移动,允许连按操作,所以不需要判断是否松开按键;
执行这段代码,每隔1秒钟就会克隆出一个怪物,注意本体是隐藏的。1). 第一个循环用于实现下落运动的,注意条件是 "y坐标 < -110",这样可以保持和题目效果图一致,不要使用“碰到舞台边缘”,因为怪物是从舞台上边缘出现的;2). 第二个循环用于实现左移运动,左移过程中有造型变化,增加“等待0.05秒”是为了确保造型变化不至于太快,同时要调整x坐标增加的值;这里使用了两个等待条件指令,确保按下鼠标发射一颗子弹,松开后再按下鼠标才发射下一颗子弹。
代码非常简单,克隆体生成后,从士兵所在位置,持续向右移动直到碰到舞台边缘后消失。注意一个细节,就是在绿旗下使用了“移到最后面”指令,让士兵覆盖在子弹的上面,效果更好。子弹和怪物各自的功能实现之后,就需要考虑二者之间的碰撞了,这是典型的克隆体碰撞模型,需要确保两个克隆体都能删除。1). 碰撞是双方的,在哪个角色中先判断都可以,这里选择了子弹角色;2). 这是一段独立的代码,只用于碰撞处理,因此这里使用了“等待条件”指令,这种写法是最简单的;3). 这里使用了“广播并等待”指令,确保对方删除之后再删除自己,相应的在怪物角色中,需要判断是否碰到子弹,确保只有碰到子弹的克隆体才需要删除;4). 击中一个怪物,得分加1,相应的要创建好变量,初始化的工作稍后进行;
胜利和得分相关,当得分增加到3时,游戏胜利,在子弹角色再添加一个新的代码块,如下所示:代码非常简单,强调一点,又一次在独立代码段中使用了“等待条件”指令,一定要确保在等待指令之前得分为0。1). 角色一定要进行初始化设置,包括位置和隐藏;当大熊猫碰到怪物时游戏失败,切换到大熊猫角色,编写代码如下:
至此,整个作品就创作好了,可以运行程序测试效果啦。
本题是初/中级组编程部分第3题,分数为50分,积木块数量98个左右,涉及到的知识点主要包括:
运动编程;
画笔;
按键处理;
克隆编程;
事件广播机制;
变量;
作为本次国赛的第3题,难度中等,完成时间15分钟左右。关键点有两个,一是吊绳效果,二是子弹击中怪物时二者都消失的效果。
关于吊绳效果,这是一个老生常谈的问题了,就是通过画笔角色来绘制,很多小游戏中都有类似的应用,比如小猫钓鱼游戏中的丝线,矿工游戏中的绳子,愤怒的小鸟中的橡皮筋等。
子弹击中怪物二者都消失,这是一个典型的克隆体碰撞模型,在很多游戏中都会出现。题目其实并没有明确要求两者都消失,只要保证怪物碰到子弹时消失,基本上就可以拿分了,如果可以的话,还是要尽量做到二者都消失,这样的游戏体验才会更好嘛。
本题所涉及的角色比较多,代码量不小,要注意编写代码的先后顺序,同时要灵活地拆分代码块,尽量确保一个代码块只负责一个功能。
你还有什么好的方法吗,非常欢迎您和超平老师交流分享。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄需要素材和源码的,可以添加本人微信。
另外,超平老师创建了一个蓝桥杯备考交流群,这是专门为老师和家长打造的免费社群,您可以与来自全国各地的老师、家长共同交流经验,分享学习心得。
超平老师也会给大家带来及时的赛事动态,备考攻略,真题资源分享,帮助各位更好地备考第15届蓝桥杯赛事,力争取得优异的成绩。
扫码或长按加入微信群