[导读]:蓝桥杯大赛是工业和信息化部人才交流中心举办的全国性专业信息技术赛事。蓝桥杯大赛首席专家倪光南院士说:“蓝桥杯以考促学,塑造了领跑全国的人才培养选拨模式,并获得了行业的深度认可。”
春雷课堂计划推出Scratch蓝桥杯真题解析100讲,这是春雷老师解读Scratch蓝桥杯真题系列的第003讲。
3D打印小猫
来源:第11届蓝桥杯Scratch国赛真题编程第6题,是中级组最后一题,初级组没有此题。
代码:若需要代码可添加小助手微信索取。
1. 题目说明
背景信息:3D打印技术,它与普通打印工作原理基本相同,打印机内装有液体或粉末等“打印材料”,与电脑连接后,通过电脑控制把“打印材料”一层层叠加起来,最终把计算机上的蓝图变成实物。
编程实现:通过滑杆控制小猫造型变化,按下空格键,传感器进行扫描并在小猫右侧打印它的造型。
具体要求:
(1)当小绿旗被点击后,角色出现在舞台对应位置;
(2)通过滑杆控制小猫形状变化(外观特效:鱼眼,滑杆范围:-100~100);
(3)按下空格键,小猫左侧出现传感从下到上对小猫进行全身扫描,同时在右侧从下到上依次画出扫描过的部分身体;
(4)当完成扫描后,右侧程序完整造型效果;
(5)点击绿旗,程序可重新开始。
2. 设计思路
(1)整体思路
我们可以将小猫从下到上分成若干层,每一层又由若干个点构成的。如果能确定小猫的层数,以及每一层中所要打印点的位置,那么我们就可以使用Scratch画笔来绘制出黑色的小猫。
在对小猫进行逐层扫描的过程中,对点的大小把握显得至关重要,点越小,效果越好,但需要扫描的次数也更多,一般来说,选择1个像素(等于Scratch中的1步)是最合适的。所以绘制一个大小为1的小圆点作为“扫描点”角色,等待玩家按下空格键,将该角色移到小猫的左下方,从左到右,从下到上进行逐层扫描。此处注意小圆点要放置在中心点位置(角色的坐标即为该角色中心点的坐标)。
为了让“Magic Wand”与题目所给图形一致,也为了更好地跟随“扫描点”移动,需要对“Magic Wand”的造型进行修改。此处注意,中心点位置为“Magic Wand”的头部。
本题一共使用了4个角色,如下图所示:
根据题目描述,我们可以绘制流程图来整理思路,小猫的执行流程如下:
“扫描点”的执行流程如下:
“Magic Wand”的执行流程如下图:
“Pencil”的执行流程如下图:
(2)本题关键
- 如何让“扫描点”进行由下到上,由左到右的逐层扫描?
- 在“扫描点”逐层扫描的过程中,如何让“Magic Wand”跟随“扫描点”移动?
- 在“扫描点”逐层扫描的过程中,如何让“Pencil”绘制对应的打印点?
可以使用循环嵌套的方式来实现由下到上,由左到右的逐层扫描。首先让“扫描点”移到小猫的左下方,外层循环控制由下到上越过小猫,内层循环控制由左到右越过小猫,这样就完成了对小猫的扫描。
在“扫描点”逐层扫描的过程中不断记录“扫描点”的坐标,并通过广播的方式通知“Magic Wand”来更新坐标位置,从而实现“Magic Wand”跟随“扫描点”移动。
在“扫描点”逐层扫描的过程中侦测是否碰到小猫,若碰倒小猫,则通过广播的方式通知“Pencil”进行描点,在“Pencil”接收到广播后,X坐标增加一些步数,开始描点,从而实现在小猫的右侧绘制对应的打印点。
3. 实现脚本
(a)小猫角色
主要是实现鱼眼特效。
(b)扫描点角色
这里使用了两层嵌套循环,外层的循环重复执行了152次,表示将小猫分152层进行逐行扫描,每一层扫描完毕,都回到左边,并向上移动一层,进行下一层的扫描。
内层循环则是自左至右重复执行120次,每移动1步,都需要记录下该点的x,y坐标,分别保存在变量x
和y
中,发送给Magic Wand。在扫描过程中,如果碰到小猫,就说明这个点是有效的打印点,发送给画笔。
(c)Magic Wand角色
该角色的作用就是让用户看到扫描的过程,但真正完成扫描工作的是”扫描点“角色。
(d)Pencil角色
需要注意的是,这里的x坐标值为“打印点x + 120”,其作用是在小猫的右侧120步处开始打印小猫,如果没有右移的话,那么打印出来的小猫和原来的小猫会重叠,至于右移多少,可以自己设定,比如100步、150步都可以。