保卫地球-第16届蓝桥第1次STEMA测评Scratch真题第4题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥真题,这是Scratch蓝桥真题解析第203讲。

第16届蓝桥第1次STEMA测评已于2024年10月20日落下帷幕,编程题一共有5题(初级组只有前4道编程题),分别如下:

保卫地球,本题是2024年10月20日举行的蓝桥STEMA测评Scratch编程初中级组编程第4题。题目要求编程创作保卫地球作品,玩家通过键盘控制保护层转动以抵御飞碟入侵地球,10秒内飞碟未能入侵地球,游戏胜利,否则游戏失败。

先来看看题目的要求吧。

一.题目说明

编程实现:

保卫地球。

保卫地球小游戏是通过键盘控制黄色的保护层抵御飞碟入侵地球,若在规定的时间内抵御飞碟,使其未能入侵地球,则视为游戏胜利,否则视为游戏失败。

具体要求:

1). 点击绿旗,游戏开始,黄色保护层在地球的外围,且所有角色之间无接触,如图所示;

图片

2). 游戏开始后,“倒计时”从 10 开始,每隔 1 秒减小 1;

3). 保护层以地球为旋转中心,每按下一次键盘←方向键,左转 10 度,持续按下则持续左转,松开后停止转动(转动过程中不能碰到地球);

4). 保护层以地球为旋转中心,每按下一次键盘→方向键,右转 10 度,持续按下则持续右转,松开后停止转动(转动过程中不能碰到地球);

5). 飞碟初始向地球持续移动,如果碰到保护层,则其会朝相反方向移动;

6). 如果飞碟碰到舞台边缘则发生反弹;

7). 如果飞碟碰到地球,飞碟停止移动,保护层无法再转动,“倒计时”不再变化,而后呈现逐渐变大的“YOU LOSE”(能看到变大的过程);

8). 如果“倒计时”为 0,飞碟停止移动,保护层无法再转动,而后呈现逐渐变大的“YOU WIN”(能看到变大的过程)。

二.思路分析

本题一共有4个角色,分别是地球、飞碟、保护层和结果,如图所示:

图片

其中结果角色包括胜利和失败两个造型。

本题考查的知识点包括运动、变量、按键和事件广播等。这里一共有4个角色,我们可以分角色来展开分析和讨论。

1). 地球

地球角色几乎没有什么效果,只需要设置好位置即可。由于其它代码都有一定数量的代码块,因此,我们将计时功能放到地球角色中,这样可以让每个角色的代码块相对平均一点。

2). 保护层

保护层只有一个效果,就是左右旋转,需要重点关注按下左右键的处理方式。

按键有如下两种处理方式:

  • 直接使用“当按下xx键”指令;

  • 在循环和条件中使用“按下xx键”指令;

从效果上来看,二者有着较为细微的差别,主要是按下键不松开的时候,前者响应的速度要慢一些,有停顿的感觉。

更重要的区别是前者不受绿旗指令控制,也不受停止脚本指令控制,当程序结束后,按键仍然会执行代码。

因此,我们应该选择后者,即在循环和条件指令中使用侦测模块中的“按下xx键”指令。

3). 飞碟

飞碟角色是本作品的重点,游戏开始时它向地球移动,当碰到黄色的保护层后,向相反的方向运动,如果碰到舞台边缘直接反弹,如果碰到地球,则游戏失败。

这里的难点是如何让角色反向,我们一起来找找规律,如下图所示,如果原方向是90度,反向之后是-90,如果原方向是0度,反向之后是180度,你还可以举出更多的例子。

图片

相信聪明的你已经找到规律了,其实就是旋转180度,左转或右转都可以。

同时,需要注意一个小问题,左转和右转会影响角色的造型方向(角色显示的方向),要确保角色造型方向不变,需要设置角色的旋转方式。

4).  结果

结果角色功能比较简单,当游戏胜利时,显示胜利造型,并慢慢变大,当游戏失败时,显示失败造型,并慢慢变大。

需要注意一个细节,就是游戏胜利或失败时,其它角色都不能有任何效果了,所以,我们需要在胜利或失败的第一时间将其它代码停止下来,这就需要使用事件广播机制了。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

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

  • 地球

  • 保护层

  • 飞碟

  • 结果

1. 地球

在地球角色中编写代码块如下:

图片

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

1). 变量“倒计时”需要先创建好,使用全局变量就行;

2). 倒计时结束,说明游戏胜利了,发送了一个“胜利”的广播消息;

3). 游戏失败时的代码,稍后再加,避免造成逻辑混乱;

2. 保护层

切换到保护层角色,编写代码如下:

图片

代码也很简单,强调3点:

1).  一定要对角色进行初始化设置,包括位置和方向,以满足题目的要求1);

2). 根据前面的分析,要使用“重复执行” + “如果...那么” + “按下xx键”3个指令,确保在游戏停止后,不能再旋转,以满足题目的要求8);

3). 游戏胜利和失败时,要结束循环,我们稍后再加;

3. 飞碟

切换到到飞碟角色中,先来实现飞碟的移动效果,编写代码块如下:

图片

代码不多,说明3点:

1). 需要设置角色的旋转方式,可以设置为“左右旋转”,也可以设置为“不可旋转";

2). 对于角色有条件的重复移动,优先使用”重复执行直到“指令;

3). 当碰到地球后,循环结束,飞碟停止移动,此时游戏失败,发送广播消息”失败“;

当飞碟碰到保护层时,将角色的方向设置为反方向,继续变代码如下:

图片

代码不多,强调3点:

1). 这里单独使用了一个代码块来实现反向功能,可以更好的优化反向效果;

2). 此处使用了汉堡包结构(上面是等待条件指令,下面是等待条件不成立指令,中间是右转指令);

3). 这里增加了一个“等待0.1秒”指令,是避免飞碟在碰到保护层时出现来回抖动现象;

游戏胜利时,飞碟角色所有的代码块都要停止,我们稍后再处理。

4. 结果

对于结果角色,刚开始是隐藏起来的,当接收到”胜利“和”失败“的广播消息时,分别显示对应造型,并由小到大逐渐变化。

切换到结果角色,编写代码如下:

图片

代码比较简单,着重说明两个细节:

1). 要设置初始大小,我这里将大小设置为20;

2). 角色先显示,再逐渐变大,变大的次数和大小可以灵活设置;

不管是游戏胜利,还是游戏失败,地球、飞碟和保护层的程序都要停止下来。

在飞碟和保护层角色中,增加如下代码:

图片

在地球和保护层角色中,增加如下代码:

图片

郑重提醒,这两处代码必须要使用“停止该角色的其他脚本”,不能使用“停止全部脚本”指令。

至此,整个作品就创作好了。

四.总结与思考

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

  • 运动编程;

  • 按键处理;

  • 变量的使用;

  • 事件广播机制;

这是stema测评的第4题,也是初级组最后一题,难度中等,创作时间约20分钟。难点是飞碟角色反向运动效果,我们要运用归纳思维找到反向的本质和规律。

相对于前面3题,本题难度有了一定的提升,但难度不大。只是要处理好细节,比如:

  • 飞碟角色的碰撞检测及方向效果;

  • 游戏结束时所有角色都要及时停止下来;

只有把细节做好了,游戏体验才会更好,也才能完全符合题目的要求,正所谓细节决定成败。

超平老师给你留1道思考题,本题中的飞碟起始位置是固定的,如果要让飞碟随机出现在舞台的4周,你知道如何实现吗?

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值