这是Scratch蓝桥杯真题解析第116讲。蓝桥杯选拔赛现已更名为STEMA,即STEM 能力测试,是蓝桥杯大赛组委会与美国普林斯顿多文化教育研究中心合作推出的考试项目。STEM能力测试致力于综合评价学生的 STEM 水平,对学生的科技素养、逻辑思维和编程能力等三方面进行客观科学的测试。
神奇画笔,本题是2022年11月27日举行的第14届蓝桥杯STEMA考试Scratch图形化编程真题第5题,是中级组最后一题。题目要求编程创作神奇画笔作品,按下鼠标左键,在舞台上绘制一个图案,然后按下空格键,图案向右侧水平移动,直到碰到舞台右侧边缘停止移动,结束程序。
先来看看题目的要求吧。
一.题目说明
编程实现:
神奇画笔。
具体要求:
1). 运行程序,背景如图所示;
2). 等待1秒后切换到下一个角色、背景(画板中简笔画为参照绘制样例);
3). 按下鼠标左键,画笔隐藏并跟随鼠标移动同时在空白处画线(松开鼠标左键,画笔停止画线,画笔颜色随机,笔粗10);
4). 按下空格键,绘制图案向右侧水平移动(能看到移动过程);5). 当图案碰到舞台右侧边缘时,图案停止移动,程序结束。
二.作品效果
在编程之前,先来看一下作品的完整效果吧:
三.思路分析
本题只有一个角色,就是画笔,如图所示:
舞台有两张背景图片,分别表示初始界面和绘制界面,如图:
本作品属于画笔编程,可以将功能分成如下两个部分:
- 按下鼠标绘制图形
- 图案持续向右移动
其中,第一点比较容易实现,在按下鼠标时落笔,让角色跟随鼠标移动就可以绘制出各种不同的图案。第二点就有些难度了,如何让绘制出来的图案向右移动呢?使用画笔绘制出来的图案又不是一个角色,怎么能移动起来呢,真的有这么神奇?实际上,在Scratch中,只有角色才能移动,绘制出来的图案是不能运动的。不过我们可以换一个思路,就是不停地绘制图案,每绘制一个图案,立刻将其擦掉,然后右移一点,再绘制出相同的图案,如此一来,看起来就像是图案向右移动。因此,在鼠标拖动画笔绘制图案的时候,需要将图案的每一个点的坐标保存到列表中。当按下空格键后,循环从列表中取出对应的x、y坐标,并将x向右偏移一定距离,就可以自左至右重新绘制出图案。
接下来,我们进入具体的编程实现环节。
四.编程实现
根据题目描述和思路分析,我们分3步来编写程序:
- 初始化
- 按下鼠标绘制图案
- 图案持续向右移动
1. 初始化本作品的初始化设置包括如下4个方面:
- 创建列表并清空列表
- 画笔相关设置
- 背景切换
- 角色先隐藏后显示
创建两个列表,分别命名为“x坐标”和“y坐标”,在画笔角色中,编写代码如下:
2. 按下鼠标绘制图案
一旦按下鼠标,就将画笔角色隐藏起来,并开始绘制图案,在绘制每个点的同时,将对应的x、y坐标分别保存到两个列表中,继续编写代码如下:
关于按下鼠标的编程实现,在Scratch中通常有如下两种方法:
- “重复执行” + “如果…那么” + “按下鼠标”三指令组合
- “等待条件” + “按下鼠标” 两指令组合
它们的区别是前者是重复执行,每次按下鼠标都会执行同样的操作,后者只会执行一次。
结合本题的描述,在绘制好图案后,按下空格键,图案开始移动,当到达舞台右边缘时结束游戏,所以,使用后者更为简单。
还有一个细节需要注意,就是画笔的大小,显示的时候设置为100,而隐藏之后则变成了20,其目的是为了避免在到达舞台右边缘时画笔过大导致图案变形了。
运行程序,绘制一个图案,两个列表中记录的x、y坐标值如图所示:
有了这些数据,我们就可以重新绘制图案了。
3. 图案持续向右移动
图案绘制完毕,当按下空格键,图案就要持续向右移动了,根据前面的思路分析,其实就是不断擦除,再不断绘制的过程。
在不断绘制的过程中,需要将列表“x坐标”和“y坐标”中的坐标值逐一取出来,由于是水平向右移动,x方向还需要加上相应的偏移距离。
为了方便起见,我们创建变量“x偏移距离”,用来表示绘制点在x轴上的偏移距离,同时使用变量“最大x坐标”表示图案中最靠右的点的x坐标。
因此,我们可以继续编写如下代码:
在循环中,每次都先擦除之前的图案,然后调用自制积木绘制新的图案,接着将“x偏移距离”增加1。
如何判断到达舞台右侧边缘,不能通过角色碰到舞台边缘来判断,原因有二:
1). 角色处于隐藏状态,是无法进行碰撞检测的;
2). 画笔在碰到舞台边缘时,图案可能还没有画完整。
因此,这里使用了变量”最大x坐标“来表示处在最右边的点的x坐标,一旦变量值大于230,就可以停止绘制了。
对应的,自制积木的代码如下:
简单说明四点:
1). 为了取出列表中的每一项,这里定义了一个变量“i”作为计数器,从1开始,每取出一对坐标值,就增加1,直到所有的列表项数据都获取完毕;
2). 每获取一对坐标值,将x、y的坐标再加上偏移距离,其中参数x对应于变量”x偏移距离“,参数y对应的值则是0;
3). 每获取一对坐标值,就比较一下当前的最大x坐标,并及时更新;
4). 为了确保瞬间画好图案,在创建自制积木时需要勾选“在运行时不刷新屏幕”。
至此,整个作品就创作好了,你可以绘制各种不同的图案,看看图案移动的效果,体验一下画笔的神奇吧。
五.总结与思考
本题是中级组编程部分第5题,也是最后一题,分数为30分,积木块数量65个左右,涉及到的知识点主要包括:
- Scratch画笔的使用;
- 按键编程,包括按下鼠标和空格键;
- 列表操作,重点是结合循环遍历列表;
- 变量的使用;
- 自制积木的使用。
作为中级组最后一题,本题难度较大,关键是对图案移动原理的理解。
在Scratch中,我们可以借助画笔绘制出各种各样的角色,然后擦掉,换个位置重新绘制,这样就可以让图案动起来。利用这种机制,可以编程实现常见的经典游戏,比如贪吃蛇、俄罗斯方块等。
一旦你掌握了这个编程技巧,你也可以使用Scratch画笔创作出各种各样的游戏效果。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香