学好Scratch必知的二三事,别样的Scratch积木分类(下)
利利:上一篇文章当中,我们谈到可以将Scratch当中的积木分为两大类,分别是“基础效果类”和“复杂功能类”。基础效果类包含表现层以及交互层两种,那么,复杂功能类积木包含哪些内容呢?
今天我们继续来谈Scratch当中的积木类别,以及这些积木的特点~
全文字数3300字,推荐阅读时长12分钟
复杂功能类积木及特点
基本解析
复杂逻辑类,分为逻辑层、数据层和优化层,逻辑层又可以细化为“基础逻辑”“优化逻辑”和“角色逻辑”。
● 基础逻辑:条件语句(如果...那么...)、循环语句(重复执行)、条件表达式(侦测)
● 优化逻辑:运算操作,以及与条件表达式相关的所有值类型积木(运算、较为复杂的侦测)
● 角色逻辑:背景切换、消息(广播消息、接收消息)、克隆
复杂逻辑积木分类
逻辑层
基础逻辑
基础逻辑部分,包含编程的三大结构中的“循环结构”和“分支结构”,以及分支结构当中必不可少的“条件表达式 / 侦测条件”,主要对应于Scratch中“控制”与“侦测”两大模块中的大部分积木。
循环结构:重复执行系列积木,对应于其他语言当中的while、for等语句
分支结构:如果...那么...系列积木,对应于其他语言当中的if else语句
侦测条件:菱形的侦测类积木,对应于其他语言当中的“条件表达式”,在侦测类模块当中,提供了各种各样的侦测条件,可以检测当前角色是否碰到颜色、指定角色,判断是否按下鼠标或某个键盘键位等等,这些侦测积木很简单,但它们是组成分支结构以及部分循环结构的重要一环。
基础逻辑积木的分类
各个基础逻辑积木,能够互相进行嵌套,形成更复杂的逻辑,实现更丰富多彩的功能。
多种多样的嵌套关系
优化逻辑
优化逻辑,主要基于当前已经搭建好的逻辑功能,进行细节优化与修缮,或者进行更复杂的控制(“侦测条件”更多样而复杂),主要对应于Scratch中的“运算”模块,以及各个模块当中的“值类型”积木。
优化逻辑中的各类积木
这些积木,对应于其他语言当中的各类运算(逻辑运算、算术运算、关系运算、字符操作、数学函数方法等)
在案例作品当中,优化逻辑相关积木的加入,一方面,让“侦测条件”变得复杂起来,便于我们更好地检测角色状态,并根据角色状态执行相应功能;
另一方面,让“基础逻辑”(如果...那么...等)积木得到了优化,降低了一个功能当中需要的积木量与复杂度。
实现复杂的侦测(点击图片可放大)
通过与或非,优化如果...那么...等复杂的嵌套逻辑
硕硕
什么是值类型积木?
利利
在Scratch当中用于存储值,“椭圆”形状的积木
硕硕
还有哪些类型的积木呢?
利利
这是对Scratch另一种维度的分类,后面有机会我们单独开文详细来讲吧~!
角色逻辑
角色逻辑,是能够跨越角色进行操控的相关积木,主要对应于Scratch“事件”模块当中的部分积木 —— 背景的切换、消息的广播和接收、克隆。
角色逻辑相关的积木
背景的切换、消息的广播和接收,隶属于“事件类模块”,但是和其他“事件类”积木,却有所不同。
其他事件类积木,均需要用户(作品的使用者)通过外部环境触发(按下键盘、鼠标、点击绿旗、发出声响等等);
背景切换与广播消息,由程序内部触发,并不直接受外部控制。
这两种事件能够将“角色”与“背景”、“角色”与“角色”连接在一起,是实现“跨角色跨背景”控制必不可少的积木。
恰恰是这种关联,进一步丰富了案例功能,最重要的是,让Scratch制作的东西,从“案例”变成了“作品”!
硕硕
案例与作品的区别是什么?
利利
我们可以把案例理解为一个简单的demo,简单的样例,它是一个作品的核心功能部分
硕硕
为何说,背景切换和消息广播的功能,能够把案例变成作品?
利利
如果希望一个作品当中包含“开始”“结束”“帮助”“游戏核心功能”等几个部分,必然要出现多个场景(背景),不同角色在不同场景当中展示的效果也会有所不同。
利利
实现场景切换,并控制不同场景当中不同角色的状态,建立角色与角色之间的关系,都需要使用到此类(角色逻辑)积木。
克隆,隶属于“控制类模块”,它能够基于一个角色,复制多个“虚拟”的相同角色(复制的角色不会出现在角色面板当中),并且能够为这些“虚拟”角色设置不同的功能。
小贴士
背景切换、广播消息事件的用法
使用背景切换、广播消息,创建事件。
通过“当背景切换为”和“当接收到某消息”,来接收这些事件,并定义发生这些事件时要执行的具体功能(积木组)。
事件的发生与接收
小贴士
关于特殊的响度检测
响度是使用相对较少的一类积木,它隶属于“基础效果类 - 交互层”积木,用户通过外部声音的大小,来控制角色发生变化。
在前一篇文章当中,并没有太多提及,所以,就在这里做个补充吧~哈哈
逻辑层积木小结
基础逻辑、优化逻辑、角色逻辑在案例当中的功能以及关系:
● 基础逻辑:实现了对角色状态的判断;
● 优化逻辑:在“基础逻辑”之上,使用更少的积木,实现了对角色状态“更精确更精细”的判断;
● 角色逻辑:功能逻辑更复杂,实现角色与角色/背景间的逻辑与交互,多个类似角色的功能操作。
数据层
在Scratch中,充当数据层的积木,是变量和列表(均隶属于变量模块)。
在几乎所有的编程语言当中,变量能够存储数据,也能够优化积木逻辑。
在Scratch当中,变量更多的作用在于存储数据,而非优化功能,这与Scratch本身特点相关。
此外,与其他语言相比,Scratch在数据存储方面相对较为弱势,只有“变量”和“一维列表”,无法使用多维列表(其他语言当中成为“多维数组”),也缺少了非常重要的“对象”。
路人甲
Scratch在数据层做得不好?
硕硕
数据存储上的不便,的确会导致制作时的一些局限性,譬如在制作“需要存储大量数据”或“有关联数据”的项目时,相对比较复杂。
利利
Scratch在数据层上的这种处理方式,其实也是因Scratch软件本身特点所限制的
硕硕
是的,既需要满足“按照角色进行积木编写”的功能,又需要满足“漂亮的视觉呈现”,在数据层上自然会有根据整体软件的定位做出一定的调整
利利
其实任何一门语言都不是万能的,作为编程语言的使用者,要做的是了解这门语言,并将这门语言的优势和长处发挥到极致
优化层
在Scratch中,目前我们还没有提及的,就是“自制积木”了,这个模块属于优化层积木,对应于其他语言当中的函数。
自制积木的作用,在于将一个角色当中通用功能“打包”起来,之后多次使用,增强积木组的复用性,提升积木组的扩展性。
优化层 - 自制积木 - 通过参数控制具体功能
需要注意的是,自制积木,只能够应用于当前角色当中,无法应用于所有角色(无法跨角色使用)。
路人甲
在Scratch当中,有没有能够应用于所有角色的“自制积木”(方法 / 函数)?
利利
没有
路人甲
为何自制积木只能应用于当前的角色呢?
利利
在上一篇文章当中我们提及到,Scratch当中存在对象、方法、属性,每个角色都是一个对象,自制积木,是定义在这个角色当中的,因此,自制积木是相应角色的方法。
文章传送门:学好Scratch必知的二三事,别样的Scratch积木分类(上)
简言之,我们作为Scratch作品的编写者,无权操作底层功能函数(方法),只能够为角色 / 背景这些对象添加一些方法。
小贴士
没有继承功能的Scratch
在Scratch当中,角色和角色之间并没有“继承”关系。
当作品中,有多个角色存在相似功能时,虽然积木类似,但是都需要单独编写。
编写时自然会比较“累”,好在我们还有“复制大法”……
总结 ~ ~ ~!
已经讲解完Scratch所有积木的分类了,我们一起来回顾一下!
● 基础效果类积木 —— 让角色的属性(样式)能够发生简单的变化
● 基础逻辑类积木 —— 对角色进行状态检测和控制,并根据角色状态执行不同的功能
● 优化逻辑类积木 —— 使用更少的积木,对角色更精确更精细地检测与控制
● 角色逻辑类积木 —— 实现角色与角色/背景间的逻辑与交互
● 数据类积木 —— 进行数据记录,增强作品的可玩性
● 优化类积木 —— 减少角色的积木量,增强积木扩展性
在了解Scratch积木分类之后,什么样的学习顺序更有利于我们又快又好的掌握Scratch呢?学习Scratch又有哪些注意事项呢?后面我们慢慢来谈~
教育的路上,不忘初心!
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com