内容正文:
第九课 加油棒
信息技术新世纪版 八年级下
学习要点:
1.进一步熟悉带参数的函数。
2.进一步学习用无线电控制多块 micro:bit 板。
3.掌握终止程序循环的方法。
重难点:
重点是学习创建带参数的函数;
难点是掌握终止程序循环的方法。
课前导入
在大型集会的现场,人们经常手持加油棒,制造出非常热烈的气氛。现在让我们用micro:bit来制作一种特别的加油棒,所有的加油棒能同时变换图案,使大家的行动更加整齐划一。
设计加油棒的图案
设计加油棒是一个很有趣的案例。
首先设计加油棒的图案,为了让加油棒能带动加油的气氛,需要将图案设计成动画,而具体是什么样的动画,则要根据应用情景来设计。例如:加油的情景,将动画设计成挥舞的棒子;祝贺的情景,将动画设计成放烟花的样子。
加油棒的图案可以是静态的,也可以是动态的。如果是静态的图案,其设计方法与上一课“遥控灯”相同。
下面让我们来设计图案为动态的加油棒!
演示讲解
【例题9-1】设计两个图案,为制作加油棒做准备。一个图案是烟花,当胜利的时候加油棒上显示烟花;另一个为挥舞的棒子,表示加油。
思考 :
为了在程序中调用图案方便,我们将如何设计两个图案?
函数
设计烟花、挥舞棒子函数
【操作步骤】
第一步 设计烟花函数,积木程序如下:
第二步 设计挥舞棒子函数,积木程序如下:
按下按钮A,显示烟花动画;按下按钮B,显示挥舞棒子的动画。程序如下:
运行程序发现,按下按钮A,点阵屏幕会显示烟花动画,但是,当我们按下按钮B时,烟花动画还在播放,不会切换到挥舞棒子动画。哪里出错了呢?
运行程序 找发现
原来程序中显示动画的命令采用了“循环”播放的方式,程序执行到这里就不会再执行别的命令了!将“循环”改成“不循环”就可以切换动画了:
想一想
不循环播放,动画效果出不来,怎么办呢?
在程序中加上while循环,并且不断地检测按钮是否被按下,如果按钮被按下,停止播放。如图:
改进后的烟花函数如下:
用同样的方法修改挥舞棒子函数。
将程序保存并复制到micro:bit上,按下按钮A就显示烟花动画,按下按钮B就显示挥舞棒子动画。
上面的动画的循环播放由如下命令来控制:
while (not button_a.is_pressed()):
也就是说,只要不按下按钮 A,循环就会一直进行,呈现出动画连续播放的效果。如果这里的动画由如下命令来播放,那么我们就无法通过按下按钮来切换动画了:
display.show(images, delay=100, wait=True, loop=True, clear=True)
如果需要播放的动画超过两个,就不能用按钮 A 和按钮 B 和动画对应了,而应该如何设计程序呢?
拓展探究
应该用按钮来翻页播放动画。修改后的积木程序如下:
代码模式程序如下:
程序综合应用了前面(包括上学期)学过的列表和求余的知识。
利用按钮 A 来翻页,每按一次按钮 A,n 的值增加 1,而求表达式 n%3 可以让余数在 0~2 之间,因此可以用 s[n%3] 来指定列表 s 中的元素
为了让其他的micro:bit与按下按钮的micro:bit行动一致,就必须发送广播信息。
【例题9-2】控制所有人的加油棒显示同样的图案。
演示讲解:控制加油棒
被控制的micro:bit需要接受指挥,因此在显示图案的函数中必须检测接收到的信号,并根据接收到的信号决定显示什么图案。
对【例题9-1】的函数进行修改,修改过的烟花函数程序如下:
修改过的挥舞棒子函数:
编写主程序:调用前面定义的函数控制加油棒显示指定的图案。
保存程序,并将程序复制到所有的micro:bit上。按下按钮A,这块micro:bit就变成“总指挥”,其他所有的micro:bit将显示烟花;按下按钮B,其他所有的micro:bit将显示挥舞棒子。
任务探究
将积木 换成 ,【例题9-2】程序的运行效果会发生什么样的变化?为什么?
积木换成 后的效果
积木 的效果
运行结果显示换了之后显示的效果是不循环的,要按键才能显示。
课堂小结
本节课进一步熟悉带参数的函数。能够用无线电控制多块 micro:bit 板,基本掌握终止程序循环的方法。
$