冬營營招生中

2019年7月21日 星期日

[micro:bit 社團教材] 流星雨




本篇是稍微進階的社團教材。

這裡我們要來在micro:bit的LED螢幕上繪製流星雨動畫。當然,你可以用人工的方式一格一格畫,但這麼一來程式就會變得太大;相對的,我們可以將繪製過程簡化為重複性的程式。

繪製流星雨的過程如下:



  1. 流星雨以三個點組成,最下面的點最亮,其餘的亮度遞減。我們將亮度訂為255、125和25。
  2. 在每次循環開始時,隨機設定流星雨的X座標,並將流星雨最下方的點的Y座標設為-1(在LED螢幕頂上)。
  3. 現在進入一個子迴圈,每次流星雨起點Y座標會加1,也就是往下移動1格,直到抵達座標7(使整條流星雨消失在畫面外)為止。此外,每次子迴圈開始時都會先把螢幕清空。
  4. 第三個小迴圈的變數index會從0數到2,我們用這個來計算流星雨三個點的Y座標。(第一個點就是起點Y座標減0,然後是Y座標減1,Y座標減2)。
  5. 如果流星雨某個點的Y座標落在LED螢幕範圍內(0~4),就把它畫出來。該點的亮度則是根據陣列「流星雨亮度」,該陣列各元素的索引值剛好也是0~2,所以填入index即可。
  6. 子迴圈的結尾也得加上一個時間延遲,如50~100毫秒,好呈現流星雨的動畫效果。
  7. 最後重複以上流程。



「點亮」積木本身是沒有時間延遲的,但燈點亮了不會自己關掉,所以當流星雨在畫面上移動時,其實要用「清空畫面」把上一輪的流星雨抹掉,然後在新的位置畫。乍看之下就好像流星雨在落下了。












沒有留言:

張貼留言