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

转动的图形-第16届蓝桥第5次STEMA测评Scratch真题第4题

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

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

  • 变色龙

  • 左顾右盼

  • 比较大小

  • 转动的图形

  • 动物乐园

转动的图形,本题是2025年3月9日举行的蓝桥STEMA测评Scratch编程初/中级组编程第4题。题目要求编程创作转动的图形作品,点击绿旗,先绘制一个蓝色的正六边形,接着在六边形的六条边上各画出一个等边三角形,然后绘制两段颜色不同的半圆弧,最后除圆之外的所有图形开始顺时针持续转动。

先来看看题目的要求吧。

一.题目说明

编程实现:

转动的图形。

具体要求:

1). 点击绿旗,在舞台中心出现一个蓝色的正六边形(线的粗细为 5),如图所示;

图片

2). 1秒后,依次在六边形的六条边上各画出一个等边三角形(线的粗细为 5),且每个等边三角形与正六边形有一条重合边;

3). 等边三角形与正六边形重合边的颜色都为蓝色,其他边颜色均为黄色,如图所示;

图片

4). 1秒后,在舞台中心画出一个圆(线的粗细为 8),且六个等边三角形的顶点均在圆上;

5). 圆由两段颜色不同、长度相同的弧线组成(自选两种颜色),如图所示;

图片

6). 1秒后,除圆之外的所有图形开始顺时针持续转动。

评分标准:

  • 10分:满足“具体要求”中的1);

  • 12分:满足“具体要求”中的2);

  • 12分:满足“具体要求”中的3);

  • 12分:满足“具体要求”中的4);

  • 12分:满足“具体要求”中的5);

  • 12分:满足“具体要求”中的6)。

二.思路分析

本题只有1个画笔角色,如图所示:

图片

本题考查的知识点包括scratch画笔、运动编程和自制积木等,我们从形状和状态两个维度对本作品进行讨论和分析。

从形状来看,要绘制的图形包括如下三种:

  • 正六边形

  • 六角星

  • 半圆环

这里要重点说明的是六角星,题目要求要绘制6个等边三角形,其中底边和正六边形颜色相同,并且位置重合,如果去掉蓝色的正六边形,黄色部分就是一个六角星,如图所示:

图片

因此,我们可以直接绘制一个黄色六角星,其基本单位是两条直线和一个夹角(120度),类似于符号“^”,如图:

图片

然后将这个^图案旋转6次,就可以得到一个完整的六角星了。

从状态来看,分为旋转和静止两种不同的状态,如下:

  • 旋转,包括正六边形和六角星;

  • 静止,包括两个半圆环;

如果都是静止不动的,处理起来比较容易;如果都是旋转的,处理起来也比较容易,可此处偏偏是动静结合,很多同学开发犯难了。

要实现正六边形和六角星的旋转,就必然要改变画笔的方向;但对于一白一红两个半圆来说,其分界线是固定不变的,也就意味着画笔的方向应该保持不变,如此看来,岂不是自相矛盾?

其实,解决思路也非常简单,再来一支画笔。

这样一来,一支画笔负责绘制动态旋转的正六边形和六角星,一支画笔负责绘制静止的半圆环。

至于增加画笔的方式有两种,一种是再添加一个角色,一种则是使用克隆体。

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

    三.编程实现

    根据上面的思路分析,我们分4步来编写代码:

    • 绘制正六边形

    • 绘制六角星

    • 图形的旋转

    • 绘制两个半圆

    1. 绘制正六边形

    由于代码比较多,超平老师建议使用函数的编程思想,使用自制积木来组织代码。

    在画笔角色中,定义自制积木来绘制正六边形,代码如下:

    图片

    代码不难,强调4个细节:

    1). 在定义自制积木的时候,勾选“运行时不刷新屏幕”,这样可以瞬间绘制好正六边形;

    2). 为了灵活绘制不同大小的正六边形,这里增加了一个参数“边长”,这不是必须的,你也可以去掉,直接使用固定的数值;

    3). 画笔的初始位置是舞台中心(0, 0),这也是图形旋转的中心,初始方向是90度,我们要使用相对运动将画笔移到正六边形的左上角,因此先左转120度,前进一条边的距离,然后在右转120度,恢复到初始方向;

    4). 六边形绘制完成后,画笔处在正六边形的左上角,方向向右,这一点非常重要,如图所示:

    图片

    是否要回到舞台中心呢,暂时不需要,因为接下来要从这个位置开始绘制六角星了。

    2. 绘制六角星

    在画笔角色中使用自制积木来绘制六角星,代码如下:

    图片

    代码比较多,强调4点:

    1). 在定义自制积木的时候,请勾选“在运行时不刷新屏幕”,确保瞬间绘制六角星;

    2). 此处的参数“边长”是为了灵活设置六角星的大小而添加的,并不是必须的;

    3). 每次绘制^形状时,先左转60度,完成后再右转180度,确保恢复到绘制前的方向,然后旋转60度,重复6次,就可以绘制一个完整的六角星了,为了方便理解,这里连续使用了两个右转指令(右转180度和右转60度);

    4). 绘制完六角星之后,画笔又回到了左上角,此时要使用相对运动的方式回到舞台中心,这就是最后3行代码的作用。

    在上面定义的两个自制积木中,我们使用了两个非常重要的模型,“复原模型” + “相对运动模型”,这是图形旋转的两个核心要素。

    所谓复原模型是指每次绘制完成之后,要确保回到初始状态,包括位置和方向;所谓相对运动模型,是指使用“移动10步”指令来实现角色的移动。

    3. 图形的旋转

    在画笔角色中,添加绿旗指令,并编写代码如下:

    图片

    代码不难理解,说明3点:

    1). 初始位置和方向一定要设置,确保旋转之前的效果和题目要求一致;

    2). 所谓的旋转其实就是换个方向重新绘制,在绘制之前要先擦除之前所有的图形;

    3). 六边形的边长可以自由设置,尽量和题目要求效果一致,右转的度数也可以自由设置。

    4. 绘制两个半圆

    根据前面的思路分析,我们再添加一支画笔,此处我使用第一种方式,复制一个画笔角色,如图:

    图片

    切换到画笔2角色,定义一个自制积木用于绘制半圆环,代码如下:

    图片

    都是大家比较熟悉的代码,说明两点:

    1). 添加参数“半径”,是为了灵活设置圆环的大小,并不是必须的;

    2). 这是经典的中心法,每次离开圆心一定的距离(半径长度),落笔打一个点,然后回到圆心位置,旋转1度,重复180次,就可以绘制一个半圆环了;

    在画笔2角的绿旗指令下,编写代码如下:

    图片

    代码比较短,强调3点:

    1). 注意角色的初始化,初始位置是舞台中心,方向是0度(向上),这是两个圆环的分界线,你也可以设置为面向180度(向下);

    2). 这里使用了等待2秒,目的是等待正六边形和六角星绘制完成之后才开始绘制圆形;

    3). 之所以要重复执行,是因为任何角色中的“擦除全部”指令会将画笔绘制的所有内容全部擦掉。

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

    四.总结与思考

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

    • Scratch画笔;

    • 运动编程;

    • 自制积木及参数;

    • 循环及嵌套循环;

    这是本次stema测评的第4题,也是初级组最后一题,难度较大,完成时间35分钟左右。关键点有两个,一是运用分解思维,将复杂的问题变成多个简单问题,并逐一解决;二是使用两支画笔来绘制图形,一支画笔负责绘制旋转的图形,另一支画笔负责绘制静止的圆环。

    在绘制图形的过程中,灵活运用了如下几个模型:

    • 360万能公式模型;

    • 中心法模型;

    • 复原模型;

    • 相对运动模型;

    • 先擦再画模型;

    这些模型并不是孤立使用的,通常需要结合多种模型来绘制一个图形,只要你熟练掌握了这些模型,就没有你画不出来的图形和效果。

    超平老师给你留两道思考题:

    1). 如果将题目稍作修改,绘制6个等边三角形,其中底边是蓝色的,另外两条边是黄色的,然后再旋转,该怎么做呢?

    2). 如果采用克隆方案来绘制两个半圆,代码又该怎么写呢?

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

    相关文章:

  • Hugging Face汉化教程及注册使用详解
  • 23.(vue3.x+vite)引入组件并动态切换(component)
  • linux小主机搭建自己的nas(三)docker安装nextcloud
  • pth的模型格式怎么变成SafeTensors了?
  • 克隆虚拟机组成集群
  • 如何优化一条SQL语句的性能?
  • React中的useSyncExternalStore使用
  • Cross Encoder 架构类型
  • UART16550 IP core笔记二
  • SpringDataRedis的入门案例,以及RedisTemplate序列化实现
  • 小皮面板从未授权到RCE
  • 【pypi镜像源】使用devpi实现python镜像源代理(缓存加速,私有仓库,版本控制)
  • 基于Python的高效批量处理Splunk Session ID并写入MySQL的解决方案
  • 【人工智能-agent】--Dify中自然语言生成SQL查询数据库
  • 如何快速入门大模型?
  • 精益数据分析(55/126):双边市场模式的挑战、策略与创业阶段关联
  • o.redisson.client.handler.CommandsQueue : Exception occured. Channel
  • 【深度学习】计算机视觉(18)——从应用到设计
  • 【大模型MCP协议】MCP官方文档(Model Context Protocol)一、开始——1. 介绍
  • Java—— 集合 Set
  • 听企业聊感受,《外企聊营商》5月13日起推出
  • 第一集丨《亲爱的仇敌》和《姜颂》,都有耐人寻味的“她”
  • 普京提议于15日在土耳其恢复俄乌直接谈判
  • 长沙潮宗街内“金丝楠木老屋文旅博物馆”起火:明火已扑灭,无伤亡
  • 这座古村,藏着多少赣韵风华
  • “科创板八条”后百单产业并购发布,披露交易金额超247亿