自学内容网 自学内容网

保护大熊猫-第15届蓝桥杯国赛Scratch初/中级组真题第3题

[导读]:第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);

  • 4 分:满足"具体要求"中的8)。 

二.思路分析

本题有5个角色,分别是士兵、子弹、大熊猫、游戏结果和怪物,如图所示:

图片

其中大熊猫有两个造型,一个是正常造型,一个是爆炸造型,如图:

图片

游戏结束有两个造型,分别表示游戏胜利和游戏失败,如图:

图片

怪物也有两个造型,如图:

图片

本题考查的知识点包括运动编程、画笔、按键处理、克隆、变量和广播机制等。

题目涉及的角色较多,我们可以按照角色的先后出场顺序将功能分成如下6个模块:

  • 绘制吊绳

  • 士兵上下移动

  • 怪物出没

  • 发射子弹

  • 击中怪物

  • 游戏结束

接下来,我们逐一分析。

1. 绘制吊绳

题目已经明确要求使用画笔来绘制,连分析都省了,这是画笔在游戏创作中的典型应用。在历届真题中多次出现过,比如第14届国赛中的《矿工挖宝》,第13届STMEA测评中的《小猫钓鱼》。

根据数学中的“两点确定一条直线”原理,只需要确定好吊绳的两个端点坐标就可以了。

由于士兵只能上下移动,所以两个端点的x坐标是固定的,大概是-180,舞台顶部的y坐标是180,这个也是固定的,另外一个端点的y坐标则随士兵上下移动而变化,可以直接使用士兵的y坐标。

为了方便起见,一般都会借助一个新的角色来绘制图形。

2. 士兵上下移动

在按下↑、↓方向键的时候,士兵上下移动,这涉及到按键处理,在Scratch编程中,按键侦测通常有如下两种方式:

  • 使用事件模块中的“当按下xx键”指令;

  • 使用侦测模块中的“按下xx键”;

从编写代码的角度来看,前者更加简单;如果从作品效果的角度来看,后者更好,因为它可以确保只有在游戏过程中按键才有效,建议使用后者。

至于上下移动,直接使用“将y增加10”指令即可。

3. 怪物出没

每隔1秒出现一个怪物,显然需要使用克隆,设置好克隆体的起点坐标,y肯定是固定的180,x则是在0~240之间取随机值。

有了克隆体,首先只考虑怪物的运动效果,这是一个非常重要的编程小技巧。

正常情况下(不考虑子弹的情况下),怪物先从上到下,然后从右到左,使用“重复执行直到”指令最方便,其中水平移动的时候还要不停地切换造型。

4. 发射子弹

按下空格键时会发射一颗子弹,这一步很容易出现bug,需要格外小心,有两个关键点:

  • 按键处理

  • 如何克隆子弹

首先是按键处理,如果使用事件指令的话,则任何时刻按键都会执行程序,游戏体验不好;如果使用侦测指令的话,可能会出现按住不放连续发射的情况,需要增加一个松开按键的处理。

其次是克隆子弹,这里要避免克隆陷阱,即避免在事件指令中克隆角色,包括按键处理和广播,因为所有的克隆体都会响应按键,都会接收广播消息。

注意,在编写子弹的时候,也不需要考虑怪物角色。

5. 击中怪物

有了子弹和怪物,接下来就可以处理二者的碰撞问题了,当子弹击中怪物时,二者都要消失,这是典型的克隆体碰撞模型。

在克隆体碰撞模型中,要确保克隆体双方都消失,不能简单的使用碰到对方就删除方式,因为双方在碰撞时,代码执行一定会有先后顺序,一旦某一方先删除自己了,那么对方就无法检测碰到对方了,这就导致有一方没有删除的bug。

处理方式也比较简单,就是在删除之前等一下,或者使用广播并等待,比如子弹在碰到怪物时,发生一个广播消息给怪物,等待击中的怪物先删除,再删除子弹克隆体。

6. 游戏结束

这部分比较简单,当击中3个怪物时,游戏胜利,如果怪物碰到大熊猫了则游戏失败。

思路有了,接下来,我们就进入程序实现环节。

三.编程实现

根据上面的思路分析,我们分7步来编写程序:

  • 绘制吊绳

  • 士兵上下移动

  • 怪物出没

  • 发射子弹

  • 击中怪物

  • 游戏胜利

  • 游戏失败

1. 绘制吊绳

在Scratch自带的角色库中,添加一个画笔角色,如图所示:

图片

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

图片

代码比较简单,强调3点:

1). 角色可以任意选择,但是要将角色变小,这样才能确保可以移到舞台的上边缘;

2). 士兵在上下移动时,吊绳也跟随变化,因此要循环绘制,每次绘制前先将之前的擦除掉;

3). 在画笔角色中,要获取士兵的y坐标,需要使用侦测模块中的“舞台的背景编号”指令,如下:

图片

点击左边的三角箭头,可以选择相应的角色,如图:

图片

再点击右边的三角箭头,选择

图片

2. 士兵上下移动

切换到士兵角色,编写代码如下:

图片

代码比较简单,说明两点:

1). 要确保士兵在平台和舞台上边缘之间上下移动,在按键的同时还要看当前所处位置,两个条件是逻辑与的关系,当然也可以在“如果...那么”指令中嵌套一个“如果...那么”指令;

2). 对于上下移动,允许连按操作,所以不需要判断是否松开按键;

3. 怪物出没

切换到怪物角色, 在绿旗指令下编写代码如下:

图片

执行这段代码,每隔1秒钟就会克隆出一个怪物,注意本体是隐藏的。

然后编写克隆体代码,如下:

图片

代码不多,说明两点:

1). 第一个循环用于实现下落运动的,注意条件是 "y坐标 < -110",这样可以保持和题目效果图一致,不要使用“碰到舞台边缘”,因为怪物是从舞台上边缘出现的;

2). 第二个循环用于实现左移运动,左移过程中有造型变化,增加“等待0.05秒”是为了确保造型变化不至于太快,同时要调整x坐标增加的值;

4. 发射子弹

切换到子弹角色,在绿旗指令下编写代码如下:

图片

这里使用了两个等待条件指令,确保按下鼠标发射一颗子弹,松开后再按下鼠标才发射下一颗子弹。

对应的,在克隆体中编写代码如下:

图片

代码非常简单,克隆体生成后,从士兵所在位置,持续向右移动直到碰到舞台边缘后消失。注意一个细节,就是在绿旗下使用了“移到最后面”指令,让士兵覆盖在子弹的上面,效果更好。

5. 击中怪物

子弹和怪物各自的功能实现之后,就需要考虑二者之间的碰撞了,这是典型的克隆体碰撞模型,需要确保两个克隆体都能删除。

在子弹角色中,编写代码块如下:

图片

对应的,在怪物角色中,编写代码块如下:

图片

代码不多,但需要强调4点:

1). 碰撞是双方的,在哪个角色中先判断都可以,这里选择了子弹角色;

2).  这是一段独立的代码,只用于碰撞处理,因此这里使用了“等待条件”指令,这种写法是最简单的;

3). 这里使用了“广播并等待”指令,确保对方删除之后再删除自己,相应的在怪物角色中,需要判断是否碰到子弹,确保只有碰到子弹的克隆体才需要删除;

4). 击中一个怪物,得分加1,相应的要创建好变量,初始化的工作稍后进行;

6. 游戏胜利

胜利和得分相关,当得分增加到3时,游戏胜利,在子弹角色再添加一个新的代码块,如下所示:

图片

代码非常简单,强调一点,又一次在独立代码段中使用了“等待条件”指令,一定要确保在等待指令之前得分为0。

对应的,切换到游戏结果角色,编写代码如下:

图片

代码比较简单,注意两点:

1). 角色一定要进行初始化设置,包括位置和隐藏;

2). 在显示游戏胜利造型后,要停止全部脚本;

7. 游戏失败

当大熊猫碰到怪物时游戏失败,切换到大熊猫角色,编写代码如下:

图片

然后在游戏结果角色中编写代码如下:

图片

至此,整个作品就创作好了,可以运行程序测试效果啦。

四.总结与思考

本题是初/中级组编程部分第3题,分数为50分,积木块数量98个左右,涉及到的知识点主要包括:

  • 运动编程;

  • 画笔;

  • 按键处理;

  • 克隆编程;

  • 事件广播机制;

  • 变量;

作为本次国赛的第3题,难度中等,完成时间15分钟左右。关键点有两个,一是吊绳效果,二是子弹击中怪物时二者都消失的效果。

关于吊绳效果,这是一个老生常谈的问题了,就是通过画笔角色来绘制,很多小游戏中都有类似的应用,比如小猫钓鱼游戏中的丝线,矿工游戏中的绳子,愤怒的小鸟中的橡皮筋等。

子弹击中怪物二者都消失,这是一个典型的克隆体碰撞模型,在很多游戏中都会出现。题目其实并没有明确要求两者都消失,只要保证怪物碰到子弹时消失,基本上就可以拿分了,如果可以的话,还是要尽量做到二者都消失,这样的游戏体验才会更好嘛。

本题所涉及的角色比较多,代码量不小,要注意编写代码的先后顺序,同时要灵活地拆分代码块,尽量确保一个代码块只负责一个功能。

你还有什么好的方法吗,非常欢迎您和超平老师交流分享。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄


原文地址:https://blog.csdn.net/diamondwang2012/article/details/143628092

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!