资源描述:
新世纪版信息技术 八年级下册,第十二课 变化无穷的灯,新知导入,新知讲解,一、全屏呼吸灯,全屏呼吸灯让整个点阵屏幕整齐划一地呈现呼吸灯的效果。,【例题1】编写程序,让microbit屏幕变成呼吸灯。,其设计思路是设计 10 个不同亮度的点阵图案,然后循环显示这 10 个图案,让点阵屏幕 呈现呼吸灯的效果。,新知讲解,from microbit import * i0Image0000000000000000000000000 i1Image1111111111111111111111111 i2Image2222222222222222222222222 i3Image3333333333333333333333333 i4Image4444444444444444444444444 i5Image5555555555555555555555555 i6Image6666666666666666666666666 i7Image7777777777777777777777777 i8Image8888888888888888888888888 i9Image9999999999999999999999999 imagesi0,i1,i2,i3,i4,i5,i6,i7,i8,i9 display.showimages,delay500,waitTrue,loopTrue,clearTrue,程序如下,新知讲解,如果用图形化的方式编程,这个案例比较容易,但为了掌握更多的编程知识,特意将图形化的方式编写的程序用代码方式进行了优化。,具体来说00000 可以表述成 0*5,因此 img0000000000000000000000000 可以表示成 img0*5*40*5,新知讲解,于是我们可以用循环语句来生成呼吸灯的每一个图案,并将该图案加入到 列表 images 中,images.appendimg,往列表中加入元素是经常会遇到的操作,命令格式如下,列表名称 .append 往列表中加入的元素 ,新知讲解,因此上面的程序可以优化为,from microbit import * images for i in range10 ixstri*5*4stri*5 imgImageix images.appendimg display.showimages,delay500, waitTrue,loopTrue,clearTrue,新知讲解,Python字符串的几种常见运算,假设 aHello bPython 则,新知讲解,修改【例题1】,使呼吸灯的闪烁规律变为“逐渐变亮逐渐变暗”。,from microbit import * images for i in range10 ixstri*5*4stri*5 imgImageix images.appendimg for i in range9,0,-1 ixstri*5*4stri*5 imgImageix images.appendimg display.showimages,delay100,waitTrue,loopTrue,clearTrue,新知讲解,这个走马灯实际上是一个有16幅画面的动画。,走马灯是指循环显示的一组灯。,【例题2】设计一个灯光绕着micobit点阵屏幕的四周移动的走马灯。,二、走马灯,新知讲解,程序如下,from microbit import * images i1Image9000000000000000000000000 i2 Image0900000000000000000000000 i3 Image0090000000000000000000000 i4 Image0009000000000000000000000 i5 Image0000900000000000000000000 i6 Image0000000009000000000000000 i7 Image0000000000000090000000000 i8 Image0000000000000000000900000 i9 Image0000000000000000000000009 i10 Image0000000000000000000000090 i11 Image0000000000000000000000900 i12 Image0000000000000000000009000,i13Image0000000000000000000090000 i14Image0000000000000009000000000 i15Image0000000000900000000000000 i16Image0000090000000000000000000 images.appendix display.showimages, delay500, waitTrue, loopTrue, clearTrue,新知讲解,在上面的程序中,images是包含了16幅画的列表,由于创建images的表述非常长,因此上面的程序用了一个for循环来创建images列表,遍历116,依次将16个画面添加到列表images。,for i in range1,17,1 ix i stri images.appendix,新知讲解,函数 (“字符串 str”)的作用是,在上面的程序片段中,ix 是一个变量名字符串,要用 ix 才能将字符 串的引号去掉,转变成变量名,将“字符串 str”转换成表达式,相当于把字符串外面的引号去掉。,新知讲解,点阵屏幕上有25个LED灯,分别用024来编号,假设某LED灯的编号是n,那么它的x、y 坐标就是,x n 5 y intn / 5,【例题 3】设计一个遍历micobit点阵屏幕所有LED灯的走马灯。,其中是求余运算,int是取整运算。,新知讲解,例如 n10,那么 x105,即 x0 ; yint10/5,即 y2。,程序用 n 来控制亮灯的位置,当 n 超过 25 时,应该将 n 重置为 0,也就是 说可以对 n 进行求余运算nn25。,新知讲解,程序如下,from microbit import * import random n 0 while True x n 5 y intn / 5 display.set_pixelx, y, 9 n n 1 if n 24 n 0 sleep100 display.set_pixelx, y, 0,新知讲解,新知讲解,例如,修改上面的程序,将 nn1 修改为 nn3,就得到了一个新的走马 灯,程序如下,from microbit import * n 1 while True x n 5 y intn / 5 display.set_pixelx, y, 9 n n 325 sleep200 display.set_pixelx, y, 0,新知讲解,如果要得到两盏灯往前移动的效果,只要在程序中增加一盏相邻的灯。,程序如下,from microbit import * n 0 while True x n 5 y intn / 5 display.set_pixelx, y, 9 n n 125,x1 n 5 y1 intn / 5 display.set_pixelx1, y1, 9 sleep200 display.set_pixelx, y, 0 display.set_pixelx1, y1, 0,新知讲解,from microbit import * n0 while True nn-110 imgstrn*5 for i in range4,【例题4】设计一个灯光瀑布。,程序如下,三、灯光瀑布,tni10 imgimgstrt*5 display.showImageimg sleep50 if button_b.was_pressed break,新知讲解,语句 nn110 的作用与下列语句相同 nn1 nn10,程序通过如下 for 循环,不断生成点阵屏幕画面的列表,在上面的程序中,imgstrn*5 for i in range4 tni10 imgimgstrt*5,新知讲解,然后显示 50 毫秒,通过 while 循环,形成灯光瀑布的视觉效果,display.showImageimg sleep50,运行程序,可以看到点阵屏幕上的灯光像瀑布一样倾泻下来。,新知讲解,当按下microbit的复位键后,程序又会重新运行。,当按下按钮B,程序就终止运行。,可以看到程序结束前点阵屏幕上最后显示的灯光。,在上面的程序中,利用了求余运算来使得变量n在9和0之间不断循环。,新知讲解,格式ab,功能求a除以b的余数。,求余运算的格式和功能如下,例如,新知讲解,while True循环中,每次循环生成一个点阵屏幕,点阵屏幕各LED灯的亮度由for循环生成。,n9,img9999999999000001111122222 n8,img8888888888999990000011111 n7,img7777777777888889999900000 n6,img6666666666777778888899999 n5,img5555555555666667777788888 n4,img4444444444555556666677777 n3,img3333333333444445555566666 n2,img2222222222333334444455555 n1,img1111111111222223333344444 n0,img0000000000111112222233333,详情如下,新知讲解,同样的效果也可以由下面的程序实现,新知讲解,你能参照【例题4】,做一个全屏呼吸灯吗,from microbit import * n0 while True nn110 imgstrn*5*4strn*5 display.showImageimg sleep50,参考程序如下,课堂小结,总结本节课所学内容,板书设计,一、全屏呼吸灯 二、走马灯 三、灯光瀑布,
展开阅读全文