画矩形-第15届蓝桥杯国赛Scratch初/中级组真题第2题

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

如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。

第15届蓝桥杯国赛已于2024年9月7日正式落下帷幕,初级组和中级组共用一套试题,编程题一共有6题(初级组只有前5题),分别如下:

  • 金箍棒变化

  • 画矩形

  • 保护大熊猫

  • 能力雷达图

  • 九宫格博弈战

  • 扫雷游戏

画矩形,本题是2024年9月7日举行的第15届蓝桥国赛Scratch初/中级组编程第2题,题目要求编程绘制一个矩形。按下鼠标左键不松开,移动鼠标绘制一个矩形,矩形的边长随着鼠标的移动而不断发生变化,松开鼠标左键后矩形消失。

先来看看题目的要求吧。

一.题目说明

背景信息:

矩形:四个内角都是直角的四边形是矩形。

现有如下图所示的矩形,矩形的四个顶点为 A、B、C、D。

图片

其中A和C 是两个不相邻顶点,B和D也是两个不相邻顶点。

编程实现:

画矩形。

具体要求:

1). 点击绿旗,角色、 背景如图所示;

图片

2). 1秒后,画笔持续随着鼠标移动;(参考视频)

3). 按下鼠标左键不松开,并移动鼠标,会绘制出一个矩形(颜色为红色,线的粗细为4),矩形的边长随着鼠标的移动而不断发生变化,矩形的两个不相邻顶点的位置分别为刚按下鼠标左键时的鼠标位置和当前鼠标所在位置,如图所示;(参考视频)

图片

4). 松开鼠标左键后,矩形消失;

5). 重复执行 “具体要求”3)、4)。

评判标准:

  • 5 分:满足"具体要求"中的1);

  • 5 分:满足"具体要求"中的2);

  • 10分:满足"具体要求"中的3);

  • 10分:满足"具体要求"中的4);

  • 10分:满足"具体要求"中的5)。

二.思路分析

本题只有一个角色,就是画笔,如图所示:

图片

这是一道典型的画笔题目,考查的知识点包括画笔、坐标知识和变量等。

如果是常规的画矩形,直接使用360万能公式模型就可以了,非常简单。对于本题的要求,定点法模型显然是更好的选择。

所谓定点法模型就是确定图形的各个顶点,然后使用“移动x,y”指令绘制出每条边,因此,这里的关键是要确定矩形4个顶点的坐标。

按下鼠标左键时,左上角的顶点A就确定下来了,移动鼠标时,右下角的顶点C也确定下来了,如图所示:

图片

要获取鼠标的坐标,可以使用侦测模块中的两个指令,如下:

图片

由于鼠标随时都会移动,所以需要使用变量将A点的x和y坐标保存起来,创建两个变量如下:

图片

这样一来,在任意时刻,我们都可以获取顶点A和顶点C的坐标了。

根据Scratch舞台坐标系的特点,B点的x坐标和A点相同,B点的y坐标和C点相同,D点的x坐标和C点相同,D点的y坐标和A点相同。

有了这4个顶点的坐标,就可以使用定点法模型来绘制了,同时要解决两个小问题:

1). 谁来画?

2). 矩形如何变化?

先说第一个问题,由于画笔本身是跟随鼠标移动的,因此具体绘制的工作还需要借助其他角色来完成,两个角色之间的通信则可以使用广播机制来实现。

至于第二个问题,其实大家应该都比较熟悉了,绘制的图形本身是不会变化的,因此,我们需要不停擦除,然后重新绘制图形。

思路有了,接下来,我们就进入程序实现环节。

三.编程实现

根据上面的思路分析,我们分3步来实现程序:

  • 画笔跟随鼠标移动

  • 检测鼠标操作

  • 绘制矩形

1. 画笔跟随鼠标移动

在画笔角色中,编写代码如下:

图片

代码够简单吧。

2. 检测鼠标操作

在画笔角色中,再来一个绿旗代码块,编写代码如下:

图片

代码不难,说明3点:

1). 之所以使用一个新的绿旗代码块,是因为这段代码中有“等待条件”指令;

2). 一旦按下鼠标,就将鼠标的x和y坐标保存到变量“起点x”和“起点y”中,然后发送“绘制”广播消息,注意顺序不能搞反了;

3). 如果松开鼠标了, 则发送一个“擦除”的广播消息;

3. 绘制矩形

根据前面分析,我们需要借助一个新角色来绘制矩形,添加一个角色如下:

图片

添加哪个角色都可以,反正角色是要隐藏起来的,不过要注意,尽量把角色设置得更小一点,避免碰到舞台边缘,导致图形变形了。

切换到pencil角色,先做好初始化设置,代码如下:

图片

当接收到“绘制”广播消息时,开始绘制,在pencil角色中继续编写代码如下:

图片

这是本题的核心代码,强调3点:

1). 鼠标位置发生变化,矩形也跟着变化,所以要使用循环,在循环中,要先擦除之前绘制的,再重新绘制;

2). 在绘制的时候,一定先将画笔移到顶点A,然后再落笔;

3). 一旦绘制完成,立刻抬笔;

当接收到“擦除”广播消息时,需要擦除全部,并停止绘制,在pencil角色中继续编写代码如下:

图片

代码非常简单,但是两个指令少一个都不行,尤其要注意“停止该角色的其他脚本”指令,它的作用是把上面重复绘制的代码停下来。

至此,整个作品就创作好了,还算简单吧。

四.总结与思考

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

  • 画笔指令;

  • 舞台坐标;

  • 变量;

  • 广播机制;

  • 按键侦测;

作为本次国赛的第2题,难度一般,完成时间8分钟左右。关键点有两个,一是如何获取4个顶点的坐标,二是如何控制矩形跟随鼠标变化;

关于图形绘制,一定要熟练掌握各种经典模型,超平老师给大家总结了一些常见的模型,比如360万能公式、定点法、中心法、边线法和螺旋法等,一定要多加练习,做到灵活运用。

只要你掌握了这些经典模型,所有的画图题都可以十拿九稳,轻松拿下。

超平老师给你留一道思考题,如果不借助其他角色,直接在画笔角色中绘制矩形,会出现什么效果,为什么?

你还有什么好的方法吗,非常欢迎您和超平老师交流分享。

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

需要素材和源码的,可以移步至“超平的编程课”gzh。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值