这里我们要来在micro:bit的LED萤幕上绘制流星雨动画。当然,你可以用人工的方式一格一格画,但这么一来程式就会变得太大;相对的,我们可以将绘制过程简化为重复性的程式。
绘制流星雨的过程如下:
流星雨以三个点组成,最下面的点最亮,其余的亮度递减。我们将亮度订为255、125和25。
在每次循环开始时,随机设定流星雨的X座标,并将流星雨最下方的点的Y座标设为-1(在LED萤幕顶上)。
现在进入一个子循环,每次流星雨起点Y座标会加1,也就是往下移动1格,直到抵达座标7(使整条流星雨消失在画面外)为止。此外,每次子循环开始时都会先把萤幕清空。
第三个小循环的变数index会从0数到2,我们用这个来计算流星雨三个点的Y座标。(第一个点就是起点Y座标减0,然后是Y座标减1,Y座标减2)。
如果流星雨某个点的Y座标落在LED萤幕范围内(0~4),就把它画出来。该点的亮度则是根据阵列“流星雨亮度”,该阵列各元素的索引值刚好也是0~2,所以填入index即可。
子循环的结尾也得加上一个时间延迟,如50~100毫秒,好呈现流星雨的动画效果。
最后重复以上流程。
“点亮”积木本身是没有时间延迟的,但灯点亮了不会自己关掉,所以当流星雨在画面上移动时,其实要用“清空画面”把上一轮的流星雨抹掉,然后在新的位置画。乍看之下就好像流星雨在落下了。
本网站由台湾程式教育协进会实验室团队维护 www.beyond-coding.org.tw. 技术提供:Blogger.. 顶尖企业主题. 技术提供:Blogger.
