海底世界-第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之间的数字后,立刻生成对应数量的克隆体。克隆本身比较简单,但这里有一个特殊要求,所有的鱼儿不能碰到到舞台边缘,且鱼儿之间也不能相互碰撞。

关于这个问题,在之前的真题中多次出现,比如:

解决这个问题的关键是要掌握超平老师总结的”借鸡生蛋“模型。

图片

所谓借鸡生蛋,是指借助其它角色,拖出一个”碰到海底生物“的指令,将其复制到海底生物角色中,这样就可以在海底生物角色中检查是否碰到其它鱼儿了。

其次是按键检测问题,检测按键问题通常有如下两种方式:

  • 事件模块中的“当按下空格键”指令;

  • 侦测模块中的“按下空格键”指令; 

前者比较简单,但是不受绿旗控制,任何时候按键空格键都会执行代码;后者则更加灵活,可以结合“等待条件”指令,确保只能在特定的时候按键才有效,同时还可以控制按键的次数,尤其是只需要单次按键的场景,比如本题。

解决了这克隆和按键检测这两个核心问题,其它的就比较简单了。

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

三.编程与实现

根据上面的思路分析,我们分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,但是你也可以输入更大的数字,或者非数字,如果要增加一个提示功能,当玩家输入错误的时候,给出提示并重新输入,该怎么做呢,赶紧试一下吧。

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

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值