Scratch官方工具因已知的原因停止访问更新,而国内兼容工具也逐步增多,在众多同类型工具中,结合平时的使用需求,常用工具决定选定Labplus进行案例实现。既然是替代,一方面关心它的兼容适配,不用额外增加学习适应成本,毕竟Scratch官方工具使用习惯了,一方面也需要了解Labplus 3与Scratch 3的差异与进步。
·字体不再模糊字号显示正常·
上图为Scratch 3官方工具界面,在字体显示适配上模糊不清,网上也提供一些偏门的方式调节字号大小,比如修改系统字体大小,但必然影响系统其他的正常显示,官方版本之前迭代多次,该问题一直不曾解决,持续使用伤眼。
下图为Labplus 3工具界面,字体保持不变的情况下,字号调整合适,显示清晰,眼睛不适感消失。
·可直接拖放作品源文件打开·
点击“文件”菜单,再点“从电脑中上传”,最后逐一查找到作品源文件所在位置。一是查找不方便,二是加载耗时缓慢。碰到部分源文件过大加载不了,整个工具界面就卡在“新建作品”的蓝屏中。
而Labplus 3中,可将任意已打开的目录中的源文件直接拖放打开,在临时查看大量源文件时非常有用!
·造型中心点支持放大和缩小·
Scratch 3相比Scratch 2在造型中心点的处理上不直观不方便,中心点太小,定位处理不便,造型放大缩小时,中心点固定不变。
在Labplus中,将中心点调整为支持放大缩小,方便查看准确的中心十字轴点。细节虽小,实际使用时好用方便。
·新增当……某个事件发生时·
事件模块中增加脚本:当……发生时。
Labplus 3实现了全局性的【当……发生时】事件,比如:侦测到【碰到鼠标指针?】、【运行某段代码】的时候,以往类似情况可能需要用到循环或者新建广播等,现在有了【当...发生时】事件,可以更简洁的实现:
这个事件脚本在具体案例实现上确实好用,省去很多不必要的局部代码,不再需要循环全局监听,让小朋友精力集中在实现内容上,让内容创作与思维培养占据首要位置。
·新增数值与字符串显式转换·
运算模块中增加【数值…】和【字符串…】这两个脚本。初看可能觉得用处不大,但从编程学习路径(Scratch -> Python -> C -> C++)上来看,这就是数据类型的启蒙开端!
对于小朋友们来说,可以这么理解:
生活中的各种人事物都可以视作字符串,当这些人事物进行运算时,我们是计算人事物对应的数值,而不是把人事物生硬叠加合并。
再比如:手机号11位数字组合使用时,大家是当作字符串来使用,不会有人报 1百亿多少多少这样的号码,当11位数字进行运算时,得让电脑明白这次要当作数值来用,显式的转换过程更能让孩子加深理解。
在Python等编程语言中给变量赋值时:
变量=
变量=0
变量=’0’
变量=”0”
Scratch中
这样写,在字符串使用和运算时没什么问题,但在后续过渡到Python或其他编程语言时会存在问题,未赋值异常。
会将任意字符转换为标准的数值形式,在进行数值运算时确保正常;
会将任意字符,比如空字符串或数字,转换为带引号的文本形式。引号分为单引号和双引号。单引号与双引号在使用时不使用转义符,常用来作互补处理,如’我在”柚子积木”里看到’ 或 “我在’柚子积木’里看到”。
在Labplus的扩展模块中,当连接外部硬件,运行没有显式转换数字与空字符串的代码至掌控板上时会出现异常,导致程序出错。这两个显式转换脚本就可以确保变量值正常。
·新增范围映射值和数值限制·
范围映射值举例使用:映射 角色X坐标 从[ -240,240 ] 到 [-60,60]。
这时的值范围区域就是一个正三角形:A点在[-60,60]的区域,B点->C点组成[-240,240]的区域,角色X坐标的值就在这个三角形的范围中,由底部正中间位置到顶部的直线上取值。
比如 角色X坐标值在[-240,240]时是100,则在[-60,60]时是25。即
映射起点值 = 映射起点距离(240到-240)480
映射终点值 = 映射终点距离(60到-60)120
映射比率 = 映射终点值 除以 映射起点值,这里为 1/4 即0.25
角色X坐标值在映射终点区域的值:100 乘以 0.25 = 25
数值限制,设定一个最低值,一个最高值,避免越界。
比如设定:
变量A,值为随机数(3,10),
变量B,值为随机数(3,10),
变量C,值为 变量A + 变量B,
限制 变量C 在低0与高10之间,当变量A值为4,变量B值为8,此时变量C值本应为4+8=12,有限高,则值为10;当变量A值为4,变量值为4,此时变量C值为8,仍在限高范围中。
·取消自带一个默认声音文件·
上图Scratch 3中自带的声音文件,本意是展示声音版块的编辑功能,实际使用时,常用不到这个声音文件,但默认都会打包进作品案例中,形成误导,每次需要手动删除这个声音文件以表示本案例并没有用到这个声音。
下图Labplus 3中则取消默认自带的声音文件,经历过Scratch工具的使用,这里就不需要默认声音文件了。这一点可能对新手不太友好,但左下角有声音来源按钮,可以选择一个声音文件、录制一个声音文件、随机提供一个声音文件、上传一个声音文件等功能。
·取消默认建立一个我的变量·
上图Scratch 3中默认自建了一个适用于所有角色的全局变量:“我的变量”。
如何知道它是适用于所有角色的变量,而不是仅适用于当前角色的变量,是通过在角色区增加新角色来判断的。
新手刚接触时,会有所困感,需要使用变量时,会直接去修改这个 “我的变量”,因为不清楚它的适用范围,而导致错乱。
这个问题,跟前面“默认提供一个声音文件”一样,各人看法不同。个人使用时会直接先手动删除这个“我的变量”。
在Labplus 3中不再自建默认变量,由用户自行根据需求来创建变量,这点也可能因为考虑到一些用户是直接从Scratch 过渡来的用户,对变量的建立已有所了解。Scratch 2中也没有自建默认变量。
在使用Labplus 3“建立一个列表”时,发现一个问题:建立一个列表,列表名为“旧列表名”。
当修改这个“旧列表名”的表名时,左侧代码区域中名称已经修改为“新列表名”,但舞台区上面的列表名还是原先的“旧列表名”,有可能是BUG,也有可能有新的考量,不得而知。在具体使用时,有多种需求出现:直接改列表名,原有的一些逻辑全部变掉了,再想对比找回原列表逻辑无处可循。
采用的方案是修改之前进行新建列表,对比新旧两个列表,有选择的切换逻辑中的列表使用。这种需求毕竟少,Labplus持续在更新升级中,还是建议官方修正这个处理。
·扩展模块更换支持国产硬件·
扩展模块:去掉访问受限的扩展如:亚马逊的文字朗读、Google的翻译、BBC的micro:bit、LEGO机器人、Vernier的传感器;
新增国内知名扩展如:百度大脑、掌控板(互动模式与离线模式)、乐动魔盒、创客初级实验箱。
上图为Scratch的扩展模块界面,硬件连接主要是蓝牙方式,而蓝牙连接又需要联网验证,目前访问异常导致硬件连接也不正常了。
蓝牙连接常出现的问题是突然断开连接,连接不稳定,导致需要反复重连,重新配对之类的操作,很考验用户的耐心!
Scratch 3连接扩展模块,需要单独再安装一个Scratch Link软件,每次纠结Scratch Link的打开顺序,是否打开正常,是否使用正常,反反复复来调试连接,浪费时间!
Scratch 3连接乐高LEGO WEDO时,需要电脑上的蓝牙协议版本地4.0及以上,碰到一些旧电脑或没有蓝牙设备的电脑,还需要额外购置一个蓝牙适配器,而一个专用的乐高蓝牙低功耗适配器售价普遍在65-120元间不等,这个价格直接超过microbit和掌控板的单价了,单独购买后还需要安装蓝牙驱动程序,还需判断检测LEGO WEDO的主机是否能准确检测到,还要打开乐高LEGO WEDO的官方软件检测是否为低功耗蓝牙设备,本人就踩过坑,为这个蓝牙适配,前后买了3个蓝牙适配器,一个是版本过低,一个是无法识别,一个是系统受限。
为何不用USB有线调试?为何不用2.4G无线遥控?
每次调试或给小朋友讲解演示时,就怕掉线或莫名其妙的连接问题,怕前面配置的环境不小心被破坏了,面对软硬连接的案例忐忑。
下图为Labplus 3的扩展模块界面:
去掉了使用频率低和访问受限的模块后,接入了国内模块,功能上更实用方便。
·其他非功能点的优化与改进·
1.主角更换:猫形象换成悟空形象。这大概是国内各替代工具都会默认做的事,塑造自家的主角形象。
== 更换为 ==》
2.版本帮助:检查更新、关于本软件。有版本更新检测就不用自己到网上搜罗更新了。
3.关闭软件:关闭提示框的优化
脚本区有内容时,上图为Scratch关闭提示框,不知是多语言没适配还是其他原因,已经是“简体中文”的情况下,退出界面还是英文提示,Leave离开还是Stay停留竟然是上下列表选择,不应该是按钮选择吗?这个不太友好也不统一,下图为Labplus 3的关闭提示框:
Scratch 3每次“保存到电脑”都是重新命名,即追加数字后缀,初期不太理解,但在实际作品案例编写时发现这个设置,简直就是自动缓存多版本的替代方案!因为在作品实现过程中会不断的尝试,每种方案有差异,如果保存时直接覆盖原先的源文件,而Scratch又没有版本控制概念,直接导致不同创意丢失,这时多版本保存就显得很有必要了!
==为什么选择Labplus?==
1、Scratch软件因某些已知原因,不适合直接使用,但Scratch语言仍是图形编程中不错的启蒙选择;
2、既要完全兼容已有已学已适应的Scratch软件环境,还要有所提升改造,更适合国人使用习惯;
3、软硬结合的刚需,实际使用与教学中,软件与硬件的相辅相成更直观有效地让孩子持久保持学习兴趣。比如:
第1点,对一名零基础的孩子来说,培养编程的兴趣很重要,直接上手文本字母式代码编程不是不可以,只是这样的学习会让孩子觉得枯燥,容易打消他们学习编程的积极性,甚至产生抵触。Scratch容易上手,让孩⼦能⽤编程做出东西,体会到编程的乐趣,培养孩子对编程的兴趣。Scratch让孩子把精力尽量用在学习编程逻辑上,而不是编程语言的语法上。因为编程逻辑才是编程的核心,是真正锻炼思维的东西,而编程语⾔只是为了解决问题而使用的⼯具。
第2点,可选的国内替代软件有不少,如Kittenblock,兼容Scratch软件功能但其主要偏向软硬结合式开发,界面凸显硬件编程,个人感觉不适合小学生初学Scratch或从Scratch过渡来的群体。提升改造方面,Labplus考虑得细致实用,主流模块的优化,扩展模块的更换等。
第3点,软硬结合这点上,硬件的选择,带屏幕显示并集成常用传感器的国产掌控板明显优于英国BBC的microbit点阵LED灯开发板,对偏向视觉感观的孩子们来说,能显示图案文字,发出声音的掌控板更有吸引力。为避免孩子一直持续盯着电脑屏幕,有个实体硬件可摆弄可交流,可有效促使孩子动起来:动眼,动手,动脑,动身。软件毕竟是虚拟的,硬件是实实在在可接触的,孩子的成就感更直观展现。
==Labplus有哪些特色呢?==
接触Labplus之前,个人关注到国产硬件-掌控板的发布,觉得在BBC的Microbit之外多了一个国产选择,自带屏幕和大量传感器更炫酷实用。这种感受,有点像当年使用拨号盘打电话,再到点阵屏的砖头手机,再到128屏的功能机,再到现在的彩色屏智能机。Microbit的LED单一色红灯闪烁,摩斯电码的暗号示意,着实无法达到国内公知的那种自嗨感:啊灯闪了,啊跑马灯广告牌出现了。我们可以给孩子提供更好的,那就紧随时代的进步吧。
掌控板配套的开发工具是mPython和Labplus,mPython面向Python,Labplus面向Scratch。
Labplus、mPython、掌控板都是深圳盛思科教文化有限公司(https://www.labplus.cn)旗下产品。
据Labplus盛思官方说明,Labplus 3软件是由Labplus盛思在MIT Scratch 3基础上研发的一款专门针对小学四到六年级学生学习编程的图形化软件。很多学校与机构已经开了Scratch 3软件的课程,但是Scratch 3软件并没有直接支持掌控板。
短时间内,难以让Scratch 3官方支持掌控板编程,于是Labplus盛思在BSD 3-Clause开源协议允许的范围内,开发了Labplus 3软件。
相比原生Scratch 3,Labplus 3扩展了对掌控板的支持。
在Labplus 3上应用掌控板时,有互动编程与离线编程两种模式。软件强调易用性,只保留了最常用的功能,去掉了复杂的部分,便于初学者入门使用。
软件有Windows和MacOS两个离线安装包,另外,还支持盛思魔盒与初级实验箱。
Labplus 3软件继承了Scratch 3软件的操作模式,便于这些已经开了Scratch 3课程的学校与机构,直接过渡到掌控板,实现软硬结合的教学。
Labplus 3把所有图片资源都下载到了本地,哪怕是在无网环境一样可以使用Scratch 3.0角色来编程,此功能仅限Windows版本。
在主模块之外,Labplus的变化就在扩展模块中了。
扩展模块:百度大脑
仅需电脑联网即可使用这个功能,开启电脑上的摄像头,可以让孩子们体验人脸识别,检测人的年龄、性别、脸型、颜值、表情、情绪、佩戴眼镜、佩戴口罩的情况。
其中的“写对联”和“写诗”功能一度小朋友们玩得不亦乐乎。
在互动编程模式下,通过掌控板来操控Scratch作品中角色的运动,无疑让孩子们觉得更有视觉感和可玩度,兴趣也更浓。
==实用高效的USB直连==
原生Scratch 3连接硬件只有蓝牙互动模式,并且这个蓝牙连接还有一些限制(一些已知原因,非特殊处理,大部分用户仍无法连接使用)。Labplus盛思增加了一种USB直连模式,并为此按照原生的风格做了一套图标,使得连接硬件时候没有违和感。
Labplus 3支持两种模式控制掌控板,一种是互动模式,通过掌控板与舞台角色互动;另外一种模式为离线模式,把图形化积木实时转化为MicroPython代码,用户可以把这些代码刷入掌控板,实现脱机运行。
值得一提的是,互动模式和离线模式两种模式,共用同一个固件,用户只要刷入一次固件,后续在切换模式时,不必再反复刷固件。
点击扩展模块-掌控板 旁边的橙色感叹号,可打开设备连接界面,清晰显示当前USB连接设备的各COM接口。
连接成功后,会显示USB图标,显示“已连接”,左边是“断开连接”,右边是“返回编辑器”。
在UI设计中,有个“三色搭配原则”,即同一样式下的主色调不超过三个。Scratch 3的主色调有蓝、白、灰三种,因此,在Labplus 3的UI中,也尽量使用这三种色调,这种风格甚至延伸到代码的高亮显示、和控制台界面中。同时,在相关的图标设计中,也尽量照顾到原生的风格,包括按钮的弧度。
Labplus 3的【互动模式】中,【掌控板】扩展版块目前有“传感器”、“事件”、“RGB LED灯”、“音乐”、“无线广播”、“显示”、“引脚”等七个分类的图形化模块。
从上图可以看出,掌控板内置了多种传感器,可以实现XYZ轴加速度值和重力加速度值检测、光线检测、声音检测、陀螺仪等。
支持RGB三原色搭配显示不同色调的LED效果,可以调节LED亮度,统一关闭指定的灯或者全部的灯。
在课堂教学中,音乐是一个很受小学生欢迎的环节,但真正按照乐理来设计的图形化编程软件很少。Labplus 3在设计中完善了一些乐理的细节,比如:节拍的定义和延迟、空音符,甚至有高八度、低八度的设置,便于用户调试音乐效果。能还原一些简单的乐谱,还可以设定外接音箱输出。
这里的“无线广播”与Scratch的广播,可以简单类比为TCP与UDP。
TCP面向连接,如打电话要先拨号建立连接。
UDP是无连接的,即发送数据之前不需要建立连接。
在Scratch中发送广播,需要先建立一个新消息,之后的处理都需要按接收到指定消息名来处理。
而Labplus中的无线广播,则支持接收任意无线广播消息的处理,这样就可以群发群收,不用提前约定好广播消息名称,可以多样化处理接收到的广播消息,比如发送端,可以随机发送数字或字符串,不固定;接收端定制好自有的业务规则即可。
比如接收到包含某个数字时的业务,比如把接收的所有内容原样呈现在另一台设备上,在实现签到,打卡作品案例时更直观实用。
在128x64的屏幕上可以绘制线,点,面,如矩形,圆形,三角形,内置图像,自选图像等。可以把原先在Scratch舞台上绘制各种多边形花在这个电子屏上再次呈现,小朋友们都觉得特别有趣有意思,也能实际触摸到图案的变化,因为掌控板还提供6个触控键(PYTHON),每个字母对应一个按键,实用方便。
以往用户可能用到img2lcd这个软件来处理图片,比较繁琐。Labplus 3实现了实时转换图像,所见即所得,支持多种格式(bmp、jpg、png),无需事先调整尺寸。
引脚是针对外接电子元器件的,比如舵机,电机,传感器,LED外置灯线,喇叭等。
Labplus 3的【离线模式】是mPython 的弱化版本,仅保留了一些常用的操作,和初级用户能理解的模块。兼顾了Scratch 3原生的风格,简约而不简单,它同样保留了完整的控制台,并针对初级用户做了优化。
在模块设计上,把纯文本的Python代码,按照已熟悉的Scratch风格,提供“控制”、“逻辑”、“数学”、“文本”、“变量”、“列表”、“函数”等七个主体分类的图形化模块。
这里把“自制积木”重新命名为“函数”,更符合后续的Python等语言的叫法。
将Scratch中的“运算”模块拆分为:逻辑、数学、文本。分类更清晰。其中“逻辑”模块增加一个脚本:布尔脚本,显示 真和假 值,即0和1,用于变量赋值,在数值和字符串以外增加编程常用的布尔值。
Labplus 3的【离线模式】中,【掌控板】扩展版块目前有“事件”、“传感器”、“显示”、“RGB LED灯”、“音乐”、“Wi-Fi”、“语音”、“无线广播”、“引脚”、“多线程”、“元组”、“字典”、“集合”、“彩灯”、“Bluebit套件”、“通用传感器”、“图表”、“MQTT”等七个分类的图形化模块。
相比互动模式,替代 绿旗 启动方式的是【掌控板主程序】,类似Python语言中的if __name__ == "__main__",C语言中的int main()主入口,
同时事件模块中也提供 多种启动脚本:
当8种按钮两种状态时:被点击、被释放
当摇晃、抛起、向前倾斜、向后倾斜、向左倾斜、向右倾斜 掌控板时
当引脚P0-P16电平从低到高/从高到低时
这里的运行时间和计算时间差,可以更方便的计算得到程序运行时长和日期时间差等实用功能。
本地时间:年、月、日、时、分、秒、星期数、日期数,都建立在创建好WIFI连接,远程同步时间服务器,确保离线模式下,程序依然可以联网获取准确时间。
Wi-Fi连接脚本:需要填入当前已知网络的SSID即无线网络名称和密码。
可以判断是否已连接Wi-Fi,获取当前联网IP,同步时区,可以开启AP模式作为无线接入点使用。
语音识别功能也需要先联网,当用户对着掌控板说话时,语音识别功能可以实时转换为文字呈现在掌控板屏幕上,这样就可以实现 英语单词识记作品或是语音指令或是背诵古诗词等一些原本在Scratch上难以实现的功能和案例,让作品更有趣,小朋友们互动更有意思。
将Python等编程语言中常用的线程模式加入到脚本中,让小朋友们理解线程,就类似一个人在不同桌子上吃不同的大餐一样,分工做不同的任务。在这点上,Scratch是使用多绿旗的方式,但无法决定先后顺序。
Labplus的离线模式中引入Python的元组、字典和集合 三个文本数据结构,个人认为相比纯文本形式去理解元组、字典和集合的使用,更直观方便。在实际操作中,根据提供脚本功能块,对应体会这三大文本结构的使用场景。与Scratch中列表密切配合,也加深理解,在后续过渡到Python的正式编程开发中更自然合理。
灯带可外接至引脚位置,实现彩虹灯效果,相比自带的LED三颗灯增加更多玩法。
Bluebit套件中最常用的就是接入直流电机,即TT电机,其中的正转与反转对应可以实现小车的前进与后退,如果电机支持调速,则转速可以输入不超过100的数字即可。支持M1和M2两个接口,即同时两组电机。
通用传感器中的HC-SR04就是常见的超声波测距传感器,几元钱一个的小元器件,却可以实现实时测算距离远近,从而实现一些有趣的作品,比如避障,切换显示或转弯等。
Labplus 3里面的MQTT实现,其实是SIoT,可以连接任何SIoT服务器,包括Easy IoT。
图表这个可以在电脑上的Labplus端实时显示检测值,当然也可以自己代码实现在掌控板上显示图表。