当前位置: 首页 > news >正文

海底世界-第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,但是你也可以输入更大的数字,或者非数字,如果要增加一个提示功能,当玩家输入错误的时候,给出提示并重新输入,该怎么做呢,赶紧试一下吧。

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

    http://www.xdnf.cn/news/180847.html

    相关文章:

  • 【jax】ms(毫秒)和 μs(微秒)
  • Leetcode395.至少有 K 个重复字符的最长子串
  • Qt从零开始(1)了解
  • Golang | 倒排索引Value的设计
  • Python爬虫实战:获取ya马逊最新销售飙升榜数据并做分析,为电商选品做参考
  • 【AI】MCP协议,AI界的USB接口
  • FastAPI系列06:FastAPI响应(Response)
  • leetcode--盛最多水的容器,接雨水
  • 数值分析、数值代数之追赶法
  • Linux课程五课---Linux进程认识1
  • MySQL----查询
  • 树莓派超全系列教程文档--(43)树莓派内核简介及更新
  • 机器学习基础——Seaborn使用
  • C++11
  • 自然语言处理之机器翻译:Statistical Machine Translation(SMT)的评估方法解析与创新实践
  • 小集合 VS 大集合:MySQL 去重计数性能优化
  • 常用第三方库:sqflite数据库应用
  • Python语言基础知识详解:数据类型及运算
  • 【MQ篇】RabbitMQ之消费失败重试!
  • 2、Linux操作系统下,ubuntu22.04版本安装搜狗输入法
  • <PLC><汇川><工控>汇川PLC实现光纤缠绕设备
  • ollama的若干实践
  • Step1X-Edit: A practical framework for general image editing
  • PaddleX的安装
  • Moment 在 JavaScript 中解析、校验、操作、显示日期和时间
  • web 开发中,前端部署更新后,该怎么通知用户刷新
  • 新闻数据接口开发指南:从多源聚合到NLP摘要生成
  • 一些可用于监控服务器响应时间稳定性的工具
  • 【神经网络与深度学习】端到端方法和多任务学习
  • 来自B站AIGC科技官的“vLLM简介“视频截图