能力雷达图-第15届蓝桥杯国赛Scratch初/中级组真题第4题
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第196讲。
如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。
第15届蓝桥杯国赛已于2024年9月7日正式落下帷幕,初级组和中级组共用一套试题,编程题一共有6题(初级组只有前5题),分别如下:
能力雷达图,本题是2024年9月7日举行的第15届蓝桥国赛Scratch初/中级组编程第4题,题目要求编程绘制一个能力雷达图。根据乒乓球运动员的经验、防守、发球 技术,速度、力量这6个方面能力值,绘制其能力雷达图,并且在改变任意能力值的大小时,都会实时呈现出当前能力的雷达图。
先来看看题目的要求吧。
一.题目说明
编程实现:
雷达图可以展示一个运动员多个维度的能力,如图所示。
雷达图的中心点表示零值,从中心点向外发散六条轴线代表六个能力,每条轴线上有多个刻度,代表能力值,其中最大值为100。
例如:某乒乓球运动员的经验、防守、发球 技术,速度、力量的能力值分别为100、80、60、40、20、100,他的能力雷达图如下所示:
请你根据以上信息以及一个乒乓球运动员的各项能力值制绘制出他的能力雷达图。
具体要求:
1). 点击绿旗,在舞台中间位置呈现由5个嵌套的正六边形及6条轴线组成的雷达图(线的颜色为黑色,粗细为 1),相邻两个正六边片的轴线间距为20,最小的正六边形边长为20,最大的正六形边长为100,如图所示(雷达图6个顶点的文字自行添加);
2). 1秒后,出现滑杆形式的变量“经验”、"防守”、“发球”、“技术”、“速度”和“力量”,初始值依次为100、80、 60、 40、20、100,表示运动员的各项能力值,所有变量的取值范围都为 0~100,如图所示;
3). 1秒后,根据各能力变量的值,绘制该运动员的能力雷达图(新绘制出的多边形为红色,线的粗细为3),如图所示;
4). 每次用鼠标拖动任意一个滑杆,改变能力值的大小,都会实时呈现出当前能力的雷达图,如图所示。(参考视频)
评判标准:
-
12分:满足"具体要求"中的1);
-
4 分:满足"具体要求"中的2);
-
22分:满足"具体要求"中的3);
-
22分:满足"具体要求"中的4)。
二.思路分析
本题只有一个角色,就是画笔,如图所示:
另外需要注意的是舞台背景图片,如图所示:
本题考查的知识点包括画笔、坐标知识、变量、列表、运动编程和自制积木等。
根据题目的描述,可以拆分成如下几个模块:
-
绘制六边形雷达图
-
添加文字描述
-
绘制能力图
-
实时更新能力图
接下来,我们逐一分析。
1.绘制六边形雷达图
这个相对比较简单,就是绘制5层正六边形,这个在历届考试中出现过多次,比如第10届蓝桥杯中的绘制蜘蛛网,第14届STEMA测评中的小蜘蛛结网等。
核心模型就是360万能公式,一个正六边形可以看成是6个正三角形构成的,绘制5层即可。
2.添加文字描述
题目已经明确告诉我们了,雷达图6个顶点的文字自行添加,通常有两种方式,一是添加新角色,二是直接在舞台背景上添加。
3.绘制能力图
这是本题的难点,难就难在如何确定6个点的坐标。
水平方向上的速度和防守两个点的坐标比较好计算,它们的y坐标都是0,x就是两个变量的值,其中速度是20,防守是-80,如图所示:
其它4个点,我们知道它们的方向,以及距离原点(0, 0)的距离,如图所示:
但是该怎么计算呢?
一般来说,有如下两个方案:
-
数学方法,使用三角函数来计算;
-
scratch方法,使用角色的运动来确定;
方法1需要用到三角函数,大部分同学并没有学到,所以不建议使用。
方法2则是更简单的方法,以力量为例,让画笔角色从原点(0, 0)开始,沿着30度方向移动100步,此时画笔的坐标就是该顶点的坐标,如图所示:
可以很容易得到力量顶点的坐标为(50, 87),利用同样的方法可以计算出其它各个点的坐标,为了方便,可以加这些坐标保存到列表中。
有了6个顶点的坐标,画图就变得非常简单了。
4.实时更新能力图
拖动任意滑杆,改变变量的值时,需要重新计算6个顶点的坐标,并重新绘制6能力图。
使用循环结合自制积木就可以了,这也是我们绘制动态图形的黄金搭档了。
思路有了,接下来,我们就进入程序实现环节。
三.编程实现
根据上面的思路分析,我们分5步来编写程序:
-
绘制5层正六边形
-
添加说明文字
-
计算顶点坐标
-
绘制能力图
-
完成主程序
1. 绘制六边形雷达图
为了更好的组织代码,我们使用自制积木来实现雷达图的绘制,在画笔角色中创建自制积木“雷达图”,编写代码如下:
代码不算少,说明4点:
1). 雷达图位于舞台中心(0, 0),需要进行初始化设置,方向可以设置为30、90、150等值,直接使用我们熟悉的90即可;
2). 这里嵌套了3层循环,最里层绘制一个正三角形,中间层将6个三角形旋转一圈,得到一个正六边形,最外层绘制出5个正六边形;
3). 根据题目要求,六边形的边长分别是20、40、60、80和100,我们使用变量”边长“来表示,初始值为20,每画一层,将边长增加20;
4). 创建自制积木时,记得要勾选”运行时不刷新屏幕“选项;
2. 添加说明文字
前面已经分析过了,既可以借助新角色来添加,也可以直接在舞台背景上添加,我这里选择后者。
选中舞台背景,切换到背景选项卡,选择文字工具,如图:
添加说明文字如下:
小技巧:请在绘制好六边形雷达图后再添加,可以更好地确定每一个文字的位置。
3. 计算顶点坐标
先创建好6个变量,分别表示6个方面的能力值,如图所示:
同时创建好两个列表,分别用于保存6个顶点的x和y坐标,如下:
6个顶点的计算过程方法完全一样,只是各自的方向和距离有所不同,为了节省代码,可以先定义一个自制积木用于计算指定能力值的坐标,代码如下:
然后再定义一个自制积木,完成6个顶点坐标的计算,代码如下:
代码比较简单,说明两点:
1). 在计算顶点之前,一定要清空列表,每一次都要从舞台中心位置(0, 0)出发;
2). 每个能力值的方向和对应变量要一一对应,不要搞错了;
4.绘制能力图
确定好了6个顶点坐标,绘制能力图就比较简单了,创建一个自制积木,编写代码如下:
代码不多,强调3点:
1). 一共有6个顶点,要绘制6条直线,需要7次移动操作,可以选择任意顶点作为起点,为了简化程序,我们选择第6个顶点作为起点,这样一来,循环6次,分别移到每一个顶点,就可以画好能力图了;
2). 注意落笔的位置,一定要放到设置好起点之后,画完之后,要记得抬笔;
3). 在创建自制积木时,一定要勾选”运行时不刷新屏幕“选项;
5.完成主程序
各个模块都已经准备好了,接下来就是组装了。
为了方便讲解,我使用一个自制积木来实现变量的初始化设置,代码如下:
然后在绿旗指令下,编写代码如下:
代码比较简单,强调两点:
1). 这里的两个”全部擦除“指令都不能少,尤其是在重复执行指令中,每次都需要先擦除之前的内容,然后重新绘制;
2). 这里的6个变量,需要将其设置为滑杆模式,如图:
同时要注意查看滑块的范围,默认是0~100。
至此,整个作品就创作好了,你可以拖动每个滑块,看看对应的能力图效果。
四.总结与思考
本题是初/中级组编程部分第4题,分数为60分,积木块数量88个左右,涉及到的知识点主要包括:
-
画笔技巧;
-
坐标知识;
-
运动编程;
-
变量的全面使用;
-
列表运算;
-
自制积木;
作为本次初/中级组国赛的第4题,题目难度中等,完成时间20分钟左右。关键点有两个,一是计算6个顶点的坐标,二是实时更新能力图。
对于第一点,我们一定要充分利用Scratch编程的特点,要确定舞台上某个位置的坐标,最简单的方法就是”3步定位法“(1拖2看3找)模型,把角色放到目标位置,就可以使用”x坐标“和”y坐标“指令获取其坐标了。
在本作品中,要多次反复进行定位操作,于是我们将这个工作交给画笔角色来完成,其本质都是一样的。
对于第二点,只要掌握了动图的绘制原理和技巧,应该就比较简单了。尽管雷达图不是时刻在变化,我们仍然需要使用循环来反复擦除并绘制,因为我们无法确定变量什么时候会改变。
细心的你肯定已经发现了,在整个作品的实现过程中,超平老师使用了6个自制积木,其中雷达图和能力图两个是必须的,因为他们要瞬间画好,必须借助自制积木的”运行时不刷新屏幕“功能。
其它的4个自制积木并非必须,但超平老师还是强烈建议你多使用自制积木,一是可以简化代码结构,重复使用代码,二是强化结构化思维的理解和应用。
你还有什么好的方法吗,非常欢迎您和超平老师交流分享。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄
原文地址:https://blog.csdn.net/diamondwang2012/article/details/144143583
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!