海底世界-第16届蓝桥第4次STEMA测评Scratch真题第5题
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥真题,这是Scratch蓝桥真题解析第222讲。
第16届蓝桥第4次STEMA测评已于2025年1月12日落下帷幕,编程题一共有5题(初级组只有前4道编程题),分别如下:
-
太空遨游
-
阿拉丁神灯
-
滚动的足球
-
完美的图形
-
海底世界
海底世界,本题是2025年1月12日举行的蓝桥STEMA测评Scratch编程中级组编程第5题。题目要求编程创作海底世界作品,点击绿旗,等待用户输入一个随机整数,然后会出现对应数量的鱼,按下空格键,左边的鱼向左移动,右边的鱼向右移动,到达舞台边缘后消失。
先来看看题目的要求吧。
一.题目说明
编程实现:
海底世界。
具体要求:
1). 点击绿旗,角色、背景如图所示;
2). 1秒后,小鱼说“请输入1~20的整数”,同时舞台下方出现输入框,如图所示;
3). 输入完成后,小鱼消失,在舞台上出现与输入整数相同数量的鱼;
4). 出现的鱼的种类和位置是随机的,所有鱼不能碰到舞台边缘,鱼之间也不能相互碰撞;
例如:输入6后的效果如下:
5). 鱼出现后,按下键盘空格键,此时所有x坐标小于0的鱼面向左侧,所有x坐标大于等于0的鱼面向右侧,如图所示;
6). 1秒后,所有x坐标小于0的鱼向左移动,所有x坐标大于等于0的鱼向右移动(能看到移动的过程);
7). 当鱼移动到舞台的左边缘或右边缘后消失。
评分标准:
-
5分:满足“具体要求”中的1);
-
7分:满足“具体要求”中的2);
-
12分:满足“具体要求”中的3);
-
20分:满足“具体要求”中的4);
-
12分:满足“具体要求”中的5);
-
12分:满足“具体要求”中的6);
-
12分:满足“具体要求”中的7)。
二.思路分析
本题只有1个角色,就是海底生物,如图所示:
虽然只有一个角色,但是它有4个造型,分别表示不同的鱼儿,如图:
本题考查的知识点包括克隆编程、运动编程和条件侦测等。
首先是克隆,在玩家输入1~20之间的数字后,立刻生成对应数量的克隆体。克隆本身比较简单,但这里有一个特殊要求,所有的鱼儿不能碰到到舞台边缘,且鱼儿之间也不能相互碰撞。
关于这个问题,在之前的真题中多次出现,比如:
-
《矿工挖宝-第14届蓝桥杯国赛Scratch真题初中级组第4题》
-
《栽花-第15届蓝桥第4次STEMA测评Scratch真题精选》
-
《消除数字球-第15届蓝桥省赛Scratch初级组真题第5题》
解决这个问题的关键是要掌握超平老师总结的”借鸡生蛋“模型。
所谓借鸡生蛋,是指借助其它角色,拖出一个”碰到海底生物“的指令,将其复制到海底生物角色中,这样就可以在海底生物角色中检查是否碰到其它鱼儿了。
其次是按键检测问题,检测按键问题通常有如下两种方式:
-
事件模块中的“当按下空格键”指令;
-
侦测模块中的“按下空格键”指令;
前者比较简单,但是不受绿旗控制,任何时候按键空格键都会执行代码;后者则更加灵活,可以结合“等待条件”指令,确保只能在特定的时候按键才有效,同时还可以控制按键的次数,尤其是只需要单次按键的场景,比如本题。
解决了这克隆和按键检测这两个核心问题,其它的就比较简单了。
思路有了,接下来,我们就进入具体的编程实现环节。
三.编程与实现
根据上面的思路分析,我们分3步来编写代码:
-
生成对应数量的克隆体;
-
设置克隆体的位置和造型;
-
鱼儿的移动;
1. 生成对应数量的克隆体
根据前面的思路分析,在海底生物角色中编写代码如下:
代码比较简单,说明两点:
1). 角色的初始化一定要设置,包括位置、方向和显示;
2). 用户输入的数字可以通过“回答”指令来获取,这里不需要处理非数字的情况,实际上,如果输入的不是大于0的数字,循环是不会执行的。
2. 设置克隆体的位置和造型
在随机鱼儿位置的时候,一旦碰到其它鱼儿或者舞台边缘的时候,会重新随机一个位置,直到没有碰到任何鱼儿和舞台边缘,这是一个循环过程。
为了瞬间设置好鱼儿的位置,我们可以使用一个自制积木来编写代码,如下所示:
代码不多,说明4点:
1). 定义自制积木的时候请勾选“运行程序时不刷新屏幕”选项;
2). 鱼儿一共有4个不同的造型,直接在1到4之间取随机数即可;
3). 要先将克隆体显示出来,再设置其位置,这样才能检测是否碰到其它角色或舞台边缘;
4). 鱼儿角色中没有“碰到海底生物”指令,需要借助其他角色,可以先添加一个小猫角色,拖出“碰到海底生物”指令, 复制到鱼儿角色中,然后删除小猫角色,这就是借鸡生蛋模型。
然后在“当作为克隆体启动时”指令中调用自制积木就可以了,代码如下:
这样就可以确保克隆出来的鱼儿不会碰到舞台边缘,也不会碰到其它鱼儿了。
3. 鱼儿的移动
在“当作为克隆体启动时”代码块中,继续编写代码如下:
代码不多,说明两点:
1). 此处使用“等待条件” + “按下空格键”指令,可以确保只需要按下一次空格键,效果非常棒;
2). 在按下空格键之后,左边的鱼儿面向左边,右边的鱼儿面向右边,直接使用“移动10步”指令,就可以让鱼儿各自向左边和右边移动了,一旦碰到舞台边缘,循环结束,鱼儿消失。
至此,整个作品就创作好了。
四.总结与思考
本题是中级组编程部分第5题,分数为80分,积木块数量35个左右,涉及到的知识点主要包括:
-
问答指令;
-
克隆编程;
-
自制积木;
-
运动编程;
-
按键检测;
-
碰撞检测的技巧;
这是本次stema测评的第5题,也是中级组的最后一题,初级组没有此题,难度中等,完成时间15分钟左右。
本作品的关键点有两个,一是使用借鸡生蛋模型来检测鱼儿是否碰到其它鱼儿,二是使用“等待条件”+“按下空格键”组合指令来检测是否按下空格键。
超平老师给你留一道思考题,这里限定玩家输入的数字范围是1~20,但是你也可以输入更大的数字,或者非数字,如果要增加一个提示功能,当玩家输入错误的时候,给出提示并重新输入,该怎么做呢,赶紧试一下吧。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄