Scratch中的并行程序问题

2019-11-03 15:42

接着上一篇“Scratch中的执行某一代码并等待”中留下的悬念,本文接着讲“并行程序”的问题 !

随着孩子们逐渐入门scratch,开始自己拼搭程序建立项目,他们对角色实现动作效果的要求也更高,这时候开始遇到了“并行程序”这个问题。我之前讲过,6-8岁这个年龄段的孩子们现在的思维是直线式。如果让他们创建角色动作的程序代码,他们往往是这样的

https://cdn.china-scratch.com/timg/191105/15424IB4-0.jpg

在动作比较少、对走(跑)动画效果表现要求不高的的角色里,这没什么问题。但是对于表达更精巧的动画中,这显然是不够看的!将动作(造型)变化运动(移动)堆放在一起,加上时间间隔,会使得运动特别机械,不自然、不流畅。即使用缩短时间间隔的办法暂时解决动作了不流畅的问题,但是如果再配合上声音等等效果,还是无法解决多个效果功能实现的问题。这就需要用并行程序(并行代码块)来解决——拆分-组合动作变化、移动、声音、旋转等代码指令!

下面这个案例可以很好地来体现并行程序的效果:

 

这段小动画是角色wuffle从铁轨的尽头(远处)不断奔跑,跑到屏幕前方(近处)的过程,同时伴随着脚步声。

这里需要三个并行程序

https://cdn.china-scratch.com/timg/191105/15424K5Y-1.jpg

第一段程序是实现连续奔跑的效果,wuffle有8个连续奔跑的造型,按顺序切换这些造型就能产生奔跑的效果。第二段程序是实现从远处奔跑到屏目前的效果,本质上就是角色从小变大的过程。第三段程是奔跑时配合的脚步声音。要实现这三段程序并行的效果,一段程序是无法达到的。我们可以试一试,把声音放一边,先合并程序1和程序2:

https://cdn.china-scratch.com/timg/191105/15424KO1-2.jpg

合并之后执行的程序,要么是脚步声配合不上,要么是脚步声配合上了但奔跑速度太快,而且都会出现同一个问题——说“呼呼”的时候奔跑已经停止了,脚步声还在响!

 (“奔跑的wuffle”案例来自于李泽的《scratch高手密码》)

我们再看一个上一次企鹅滑雪的那个动画,如果把企鹅造型变化和摇晃移动的效果合在一起会怎么样

https://cdn.china-scratch.com/timg/191105/15424G431-3.jpg

 https://cdn.china-scratch.com/timg/191105/15424G403-4.jpg

企鹅不再有从远处摇摇晃晃滑雪滑到近处的过程。(点击“原文链接”看企鹅流畅效果)

从这两个例子,我们可以知道:并行程序(或者叫做“并行代码块”)就是能够同时执行的程序(代码块)。它可以用在“当开始被点击”,也可以用在其他触发程序的代码块之下,用以同时启动多段程序指令(作为初学者,应让一段程序脚本尽可能处理少的事情)。

https://cdn.china-scratch.com/timg/191105/15424Vb6-5.jpg

https://cdn.china-scratch.com/timg/191105/15424U3K-6.jpg

(这是电子学会scratch一级考试模拟题,可见对并行程序的知识是有学习要求的!)

进一步做延伸:除了一个启动代码块可以触发多段程序,还可以有多个代码块搭配,启动不同的程序。比如下面这个:

https://cdn.china-scratch.com/timg/191105/15424W515-7.jpg

还可以是这样的:

https://cdn.china-scratch.com/timg/191105/15424TG3-8.jpg

当开始被点击后,先启动第一段程序,角色被点击后启动第二段程序,第一段和第二段程序同时进行;第二段程序又引发第三段程序的启动,这时第一段和第三段程序是并行的。
总结并行程序的使用场合:1、不同的程序代码又明确的功能划分,每一块实现独立的功能。2、脚本里有占用时间的模块需要等待,比如“等待……秒”“消息”类等待,等待的时候同时进行别的事

--end--

后记,小编朋友公司研发了一个游戏化的少儿编程在线课程(5-12岁),游戏化教学结合scratch(一款在线少儿编程工具,类似乐高的积木拼搭),我家娃娃学了几次课,非常喜欢(超预期),16次课才200多块钱,对锻炼孩子的思维能力和动手动力很有帮助。

感兴趣的朋友可以扫描二维码,关注一下,或微信搜索“大耳猴少儿编程”

https://www.china-scratch.com/Uploads/Editor/2018-04-22/5adca08bdc212.jpg

声明:本文章由爬虫自动处理和转载作为教育分享用途,原作者可通过邮件及时和我们联系处理:freemanzk@qq.com