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