学好Scratch必知的二三事,别样的Scratch积木分类(下)

网友投稿 2019-10-09 14:09

利利:上一篇文章当中,我们谈到可以将Scratch当中的积木分为两大类,分别是“基础效果类”和“复杂功能类”。基础效果类包含表现层以及交互层两种,那么,复杂功能类积木包含哪些内容呢?

今天我们继续来谈Scratch当中的积木类别,以及这些积木的特点~

全文字数3300字,推荐阅读时长12分钟

复杂功能类积木及特点

基本解析

复杂逻辑类,分为逻辑层、数据层和优化层,逻辑层又可以细化为“基础逻辑”“优化逻辑”和“角色逻辑”。

● 基础逻辑:条件语句(如果...那么...)、循环语句(重复执行)、条件表达式(侦测)

● 优化逻辑:运算操作,以及与条件表达式相关的所有值类型积木(运算、较为复杂的侦测)

● 角色逻辑:背景切换、消息(广播消息、接收消息)、克隆

复杂逻辑积木分类

https://cdn.china-scratch.com/timg/191011/1409262505-0.jpg

逻辑层

基础逻辑

基础逻辑部分,包含编程的三大结构中的“循环结构”和“分支结构”,以及分支结构当中必不可少的“条件表达式 / 侦测条件”,主要对应于Scratch中“控制”与“侦测”两大模块中的大部分积木。

循环结构:重复执行系列积木,对应于其他语言当中的while、for等语句

分支结构:如果...那么...系列积木,对应于其他语言当中的if else语句

侦测条件:菱形的侦测类积木,对应于其他语言当中的“条件表达式”,在侦测类模块当中,提供了各种各样的侦测条件,可以检测当前角色是否碰到颜色、指定角色,判断是否按下鼠标或某个键盘键位等等,这些侦测积木很简单,但它们是组成分支结构以及部分循环结构的重要一环。

基础逻辑积木的分类

https://cdn.china-scratch.com/timg/191011/14092H317-1.jpg

各个基础逻辑积木,能够互相进行嵌套,形成更复杂的逻辑,实现更丰富多彩的功能。

多种多样的嵌套关系

https://cdn.china-scratch.com/timg/191011/14092QK5-2.jpg

优化逻辑

优化逻辑,主要基于当前已经搭建好的逻辑功能,进行细节优化与修缮,或者进行更复杂的控制(“侦测条件”更多样而复杂),主要对应于Scratch中的“运算”模块,以及各个模块当中的“值类型”积木。

优化逻辑中的各类积木

https://cdn.china-scratch.com/timg/191011/14092W9E-3.jpg

这些积木,对应于其他语言当中的各类运算(逻辑运算、算术运算、关系运算、字符操作、数学函数方法等)

在案例作品当中,优化逻辑相关积木的加入,一方面,让“侦测条件”变得复杂起来,便于我们更好地检测角色状态,并根据角色状态执行相应功能;

另一方面,让“基础逻辑”(如果...那么...等)积木得到了优化,降低了一个功能当中需要的积木量与复杂度。

实现复杂的侦测(点击图片可放大)

https://cdn.china-scratch.com/timg/191011/1409294012-4.jpg

通过与或非,优化如果...那么...等复杂的嵌套逻辑

https://cdn.china-scratch.com/timg/191011/1409302596-5.jpghttps://cdn.china-scratch.com/timg/191011/1409315116-6.jpg

硕硕

什么是值类型积木?

利利

在Scratch当中用于存储值,“椭圆”形状的积木

https://cdn.china-scratch.com/timg/191011/140931H52-7.jpghttps://cdn.china-scratch.com/timg/191011/1409315116-6.jpg

硕硕

还有哪些类型的积木呢?

利利

这是对Scratch另一种维度的分类,后面有机会我们单独开文详细来讲吧~!

https://cdn.china-scratch.com/timg/191011/140931H52-7.jpg

角色逻辑

角色逻辑,是能够跨越角色进行操控的相关积木,主要对应于Scratch“事件”模块当中的部分积木 —— 背景的切换、消息的广播和接收、克隆。

角色逻辑相关的积木

https://cdn.china-scratch.com/timg/191011/140931GI-10.jpg

背景的切换、消息的广播和接收,隶属于“事件类模块”,但是和其他“事件类”积木,却有所不同。

其他事件类积木,均需要用户(作品的使用者)通过外部环境触发(按下键盘、鼠标、点击绿旗、发出声响等等);

背景切换与广播消息,由程序内部触发,并不直接受外部控制。

这两种事件能够将“角色”与“背景”、“角色”与“角色”连接在一起,是实现“跨角色跨背景”控制必不可少的积木。

恰恰是这种关联,进一步丰富了案例功能,最重要的是,让Scratch制作的东西,从“案例”变成了“作品”!

https://cdn.china-scratch.com/timg/191011/1409315116-6.jpg

硕硕

案例与作品的区别是什么?

利利

我们可以把案例理解为一个简单的demo,简单的样例,它是一个作品的核心功能部分

https://cdn.china-scratch.com/timg/191011/140931H52-7.jpghttps://cdn.china-scratch.com/timg/191011/1409315116-6.jpg

硕硕

为何说,背景切换和消息广播的功能,能够把案例变成作品?

利利

如果希望一个作品当中包含“开始”“结束”“帮助”“游戏核心功能”等几个部分,必然要出现多个场景(背景),不同角色在不同场景当中展示的效果也会有所不同。

https://cdn.china-scratch.com/timg/191011/140931H52-7.jpg

利利

实现场景切换,并控制不同场景当中不同角色的状态,建立角色与角色之间的关系,都需要使用到此类(角色逻辑)积木。

https://cdn.china-scratch.com/timg/191011/140931H52-7.jpg

克隆,隶属于“控制类模块”,它能够基于一个角色,复制多个“虚拟”的相同角色(复制的角色不会出现在角色面板当中),并且能够为这些“虚拟”角色设置不同的功能。

小贴士

背景切换、广播消息事件的用法

使用背景切换、广播消息,创建事件。

通过“当背景切换为”和“当接收到某消息”,来接收这些事件,并定义发生这些事件时要执行的具体功能(积木组)。

事件的发生与接收

https://cdn.china-scratch.com/timg/191011/1409315643-16.jpg

小贴士

关于特殊的响度检测

响度是使用相对较少的一类积木,它隶属于“基础效果类 - 交互层”积木,用户通过外部声音的大小,来控制角色发生变化。

在前一篇文章当中,并没有太多提及,所以,就在这里做个补充吧~哈哈

逻辑层积木小结

基础逻辑、优化逻辑、角色逻辑在案例当中的功能以及关系:

● 基础逻辑:实现了对角色状态的判断;

● 优化逻辑:在“基础逻辑”之上,使用更少的积木,实现了对角色状态“更精确更精细”的判断;

● 角色逻辑:功能逻辑更复杂,实现角色与角色/背景间的逻辑与交互,多个类似角色的功能操作。

数据层

在Scratch中,充当数据层的积木,是变量和列表(均隶属于变量模块)。

在几乎所有的编程语言当中,变量能够存储数据,也能够优化积木逻辑。

在Scratch当中,变量更多的作用在于存储数据,而非优化功能,这与Scratch本身特点相关。

此外,与其他语言相比,Scratch在数据存储方面相对较为弱势,只有“变量”和“一维列表”,无法使用多维列表(其他语言当中成为“多维数组”),也缺少了非常重要的“对象”。

https://cdn.china-scratch.com/timg/191011/14093210a-17.jpg

路人甲

Scratch在数据层做得不好?

硕硕

数据存储上的不便,的确会导致制作时的一些局限性,譬如在制作“需要存储大量数据”或“有关联数据”的项目时,相对比较复杂。

https://cdn.china-scratch.com/timg/191011/140933D31-18.jpg

利利

Scratch在数据层上的这种处理方式,其实也是因Scratch软件本身特点所限制的

https://cdn.china-scratch.com/timg/191011/140931H52-7.jpg

硕硕

是的,既需要满足“按照角色进行积木编写”的功能,又需要满足“漂亮的视觉呈现”,在数据层上自然会有根据整体软件的定位做出一定的调整

https://cdn.china-scratch.com/timg/191011/140933D31-18.jpg

利利

其实任何一门语言都不是万能的,作为编程语言的使用者,要做的是了解这门语言,并将这门语言的优势和长处发挥到极致

https://cdn.china-scratch.com/timg/191011/140931H52-7.jpg

优化层

在Scratch中,目前我们还没有提及的,就是“自制积木”了,这个模块属于优化层积木,对应于其他语言当中的函数。

自制积木的作用,在于将一个角色当中通用功能“打包”起来,之后多次使用,增强积木组的复用性,提升积木组的扩展性。

优化层 - 自制积木 - 通过参数控制具体功能

https://cdn.china-scratch.com/timg/191011/140933EG-22.jpg

需要注意的是,自制积木,只能够应用于当前角色当中,无法应用于所有角色(无法跨角色使用)。

https://cdn.china-scratch.com/timg/191011/14093210a-17.jpg

路人甲

在Scratch当中,有没有能够应用于所有角色的“自制积木”(方法 / 函数)?

利利

没有

https://cdn.china-scratch.com/timg/191011/140931H52-7.jpghttps://cdn.china-scratch.com/timg/191011/14093210a-17.jpg

路人甲

为何自制积木只能应用于当前的角色呢?

利利

在上一篇文章当中我们提及到,Scratch当中存在对象、方法、属性,每个角色都是一个对象,自制积木,是定义在这个角色当中的,因此,自制积木是相应角色的方法。

https://cdn.china-scratch.com/timg/191011/140931H52-7.jpg

文章传送门:学好Scratch必知的二三事,别样的Scratch积木分类(上)

简言之,我们作为Scratch作品的编写者,无权操作底层功能函数(方法),只能够为角色 / 背景这些对象添加一些方法。

小贴士

没有继承功能的Scratch

在Scratch当中,角色和角色之间并没有“继承”关系。

当作品中,有多个角色存在相似功能时,虽然积木类似,但是都需要单独编写。

编写时自然会比较“累”,好在我们还有“复制大法”……

总结 ~ ~ ~!

已经讲解完Scratch所有积木的分类了,我们一起来回顾一下!

● 基础效果类积木 —— 让角色的属性(样式)能够发生简单的变化

● 基础逻辑类积木 —— 对角色进行状态检测和控制,并根据角色状态执行不同的功能

● 优化逻辑类积木 —— 使用更少的积木,对角色更精确更精细地检测与控制

● 角色逻辑类积木 —— 实现角色与角色/背景间的逻辑与交互

● 数据类积木 —— 进行数据记录,增强作品的可玩性

● 优化类积木 —— 减少角色的积木量,增强积木扩展性

在了解Scratch积木分类之后,什么样的学习顺序更有利于我们又快又好的掌握Scratch呢?学习Scratch又有哪些注意事项呢?后面我们慢慢来谈~

教育的路上,不忘初心!

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com