Scratch 编程竞赛指南
上QQ阅读APP看书,第一时间看更新

1.2 蝴蝶数花朵

教学目标:熟悉程序开发的流程。

知道什么是编程以后,下面介绍程序开发的流程。通常,很多学习者习惯在拿到开发需求后直接开始编程,边开发,边发现问题,边修改,甚至经常推倒重来。平时时间很充裕,体会不明显,但在竞赛时分秒必争,显然这种蛮干的方式是错误的!那么正确的程序开发流程应该是什么样呢?

1.分析开发需求。

2.设计算法思路。

3.开始编写程序。

4.调试程序解决bug。

仔细想一想,这与在考试时解一道数学题的流程是一样的。做题的四步骤:读题,思路,解题,检查。

千里之行始于足下,养成良好的编程习惯是学习编程的第一步!

开发需求001:

选择背景库中Flowers作为背景,添加一个蝴蝶角色Butterfly2。通过编程,让蝴蝶依次飞落到背景的4朵花上,并在落下的同时报出这是第几朵花,如图1.2.1所示。

图1.2.1

分析:

按照顺序结构,让蝴蝶角色依次移到四朵花的位置,并且报数。

具体步骤:

1.准备素材。

2.当绿旗被点击,移到第一朵花,并且说1。程序见下图。

注意:“移到……”这个积木,可以先把角色拖拽到舞台目标位置,然后在功能区的代码中把“移到……”积木直接拖到编程区域中。

积木中能修改的部分叫做参数。其实这些积木都是Scratch开发团队封装好的,学习者只需学会使用就可以了,不必深究积木内部封装的具体功能。关于自制积木,1.6节(不带参数)及2.1节(带参数)中有详细介绍。

3.依次移到其余的花朵上。程序见下图。

开发需求002:

在调试程序001的过程中,很容易就发现蝴蝶从一朵花飞到另一朵花的过程很生硬,是直接变过去的,不符合蝴蝶飞行的实际情况。有没有方法让蝴蝶缓慢地飞过去,并且蝴蝶在飞行过程中,能否让其连续拍打翅膀?

分析:

在竞赛中,出题者会重点考察参赛选手对题意的理解。例如,题目中有“缓慢地移动”“缓慢地飞过去”“要看到移动的过程”等字眼,这就表明绝对不能让角色瞬间移到目标位置,即必须看到移动的过程,这时就可以使用“在1秒内滑行到……”积木。

具体步骤:

1.蝴蝶初始状态,程序见下图(左)。

2.依次缓慢地飞到其余的花朵上。程序见下图(右)。

3.蝴蝶不停地拍打翅膀。

在Scratch中,角色库中的大部分角色都包含多个造型,本题中蝴蝶角色有两个造型,如图1.2.2所示。

图1.2.2

要想使蝴蝶在程序运行的整个过程中不停地拍打翅膀,都要不停地切换下一个造型。程序见右下图。

那么问题来了,这个循环应该放在哪呢?

尝试一:放在程序的最下面。程序见下图(左)。

结论:

错误!运行程序后,程序按照顺序执行,先依次缓慢移到四朵花上,然后进入循环一直切换造型。不符合题意。

尝试二:放在程序的最上面。程序见下图(右)。

结论:

错误!我们会发现重复执行积木的下面没有凸起,积木无法拼接在一起。

尝试三:放在循环的里面。程序见下图。

结论:

错误!运行程序后,进入循环。在循环体中,程序也是按照顺序执行。先切换了造型,然后依次访问四朵花,进入下一次循环,再切换造型,访问四朵花……很明显,也是不符合题意的。

尝试四:再来一个“当绿旗被点击”积木。程序见下图。

结论:

正确!点击绿旗后,两个脚本同时运行,互不影响。左边的脚本负责移动,右边的脚本负责切换造型。这种多线程的方法在Scratch中非常容易实现,也经常用到!

试一试:

创建1个Beetle角色、4个Ballerina角色。Beetle放在舞台中心(0,0),4个Ballerina放在舞台的四个角落,如图1.2.3所示。当绿旗被点击,4个Ballerina随机产生一个造型。Beetle先面向第1个角色缓慢移动,走到角色所在位置时说出他的造型名称,然后迅速回到舞台中心,准备向第2个角色移动……如此反复,将4个角色都走完。

图1.2.3