儿童编程启蒙:3.基础:Scratch脚本标签
这一篇打算将Scratch脚本标签的10个模块过一遍。
大家可能说内容会不会太多?我的回答是:不会!
-
第一,不是所有的模块都需要细讲,第一篇文章说过,Scratch的帮助指南做得特别友好,简单的模块都可以通过帮助指南掌握清楚,只是需要大家动手尝试;
-
第二,脚本标签下的《数据》和《更多模块》稍微高阶一点,放后面讲;
-
第三,我想说的是,对大多数指令模块的学习,只有通过实际做一些项目才能达到真正理解和掌握,所以这里只会提及我认为比较重要需着重说的知识点。
So这里我只会涉及到动作、事件、控制和侦测四个模块,外观、声音、画笔、数字和逻辑运算四个模块比较简单,让大家自己动手学习了解。
另外,脚本区的指令积木很多种,遵循下图的通用规则:
01
运动模块
角色绝大多数都不是一个点那么小,当角色在移动、转动时,在背景中所处的坐标到底是角色的哪个位置为参照呢,答案是角色的中心点,在Scratch这个体系中就是按角色的中心点来决定角色的在背景中位置以及旋转中心。如果一个角色是在坐标x:0 y:0这个位置,那么一定是这个角色的中心点在这个坐标,这个角色旋转也是以这个点为中心旋转。
我们手绘一个角色-正方形,将正方形的造型中心点设置为正方形正中间,然后加了段旋转代码,
再对比将正方形的造型中心点设置为正方形的左上角(同样的代码)。
如何设置角色的中心点呢?
先选中角色,然后点击造型,选中右上角的设置造型中心,然后光标变成十字,在点击希望的中心点即可。
运动模块中的代码指令简介:
02
事件模块
这个模块下的指令积木都是触发类,当这个模块中描述的事件发生时,后面的代码才会执行。需要注意的一点是,这个模块中积木的形状,除了广播消息有两条积木有卡口外,其他积木指令上部都没有卡口,说明事件指令基本都是作为指令块的第一条指令。
下图中,鼠标点击红色框中的绿旗,那么绿旗被点击的事件发生,“移动10步、向右旋转15度....”这三句代码就会被执行。
再加一个“当按下空格键”的事件代码块,那么当我们按下空格键时,小猫就先上移50步,等待0.5秒,然后下移50步。
这个事件模块中需要着重讲的是广播指令,因为它在这个事件模块里算稍微难一些,但它用得非常频繁,是非常重要的指令。Scratch的消息广播机制是用来协调各个角色间的行为的,任何角色都可以广播带有名称的消息,这个名称可以根据程序的需要自行指定,广播的消息会发送给所有角色(包括当前广播这条消息的角色),只要积木指令“当接收到abc”收到的消息名为abc的广播,则这块积木代码触发执行。只要程序没停止,“当接收到abc”会一直等待并接收名为abc的广播消息。
这里我们用一个小男孩和恐龙对话来演示广播指令的使用,角色boy1的指令如下:1.当绿旗被点击,2.说一句hello,3.广播一条sayhi的消息出去
恐龙的指令如下:1.当接受到sayhi消息 2.说 hi,boy!
相信大家通过这个演示能大概了解广播的机制。另外“广播xxxx消息并等待”与“广播xxx”非常相似,但是前者会一直等待所有接收消息的脚本执行完毕后才继续往下执行。
03
控制模块
控制模块顾名思义,就是控制程序的走向,涉及到等待、循环、判断。循环分有限循环和无限循环,有限循环是程序设计者知道循环次数时使用,无限循环一般用于侦测并等待某种事件的发生或者满足某种条件前一直要做的事情。判断家长们多少有点熟悉,Scratch判断仅仅是把if...和if...else做成了积木块,没啥好讲的。控制模块直观上比较容易理解,但具体到应用是非要考验逻辑思维的,这就需要脑袋中有清晰的程序流程图,如果脑袋中这个流程图还不清晰,请先在纸上画出来再编程。关于程序流程图我们在后续文章中会讲到。
克隆是Scratch2中新引入的特性,“克隆自己(其他角色)”能快速复制出一模一样的角色出来,为了避免无限制创建克隆体将系统资源耗尽,目前限制只能克隆300次。当一个克隆体被创建时,它就会自动启动,同时激发事件:“ 当作为克隆体启动时”。
这个演示中,正方形本体每次旋转15度后克隆一个正方形不动,一共克隆24个正方形,每次克隆一个正方形就会触发“当作为克隆体启动”这个事件,所以这24个正方形3秒后被删除消失。
04
侦测模块
侦测模块是用于侦测位置、声音、视频、以及没有放入事件模块中的其他事件,从指令积木的形状来看,带问号的都是六边形,可以嵌入控制模块的判断中,其他基本都是圆角矩形(带卡口的是执行语句,没卡口的是变量类均需要嵌入其他语句),
侦测、控制两个模块平时联系得特别紧密,比如侦测两个角色是否碰到,是否碰到某种颜色等等,都需要涉及到判断和循环。
既然是世界杯期间,这里用一个简单的踢足球的例子组合使用移动、事件、控制、侦测、造型这些模块!
为了让小女孩走路显得更自然,这个女孩角色有4个造型
足球的代码和造型
最后效果是:
今天的内容到这里结束了,欢迎大家评论给出建议。谢谢!
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com