本篇是稍微進階的社團教材。
這裡我們要來在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毫秒,好呈現流星雨的動畫效果。
- 最後重複以上流程。
「點亮」積木本身是沒有時間延遲的,但燈點亮了不會自己關掉,所以當流星雨在畫面上移動時,其實要用「清空畫面」把上一輪的流星雨抹掉,然後在新的位置畫。乍看之下就好像流星雨在落下了。
沒有留言:
張貼留言