• オリジナルの関数を定義してコードを簡潔にする。
  • LEDの明るさを個別にコントロールし、より豊かな表現につなげる。
  • 座標(x, y)のLEDをON。(0,0)が左上で(4,4)が右下。
  • 座標(x, y)のLEDのON/OFF切替。
  • 座標(x, y)のLEDの明るさをa(0-255)に設定。
  • 全てのLEDの明るさをa(0-255)に設定。
LEDを制御するための関数
led.plot(x, y)//1.

led.toggle(x, y)//2.

led.plotBrightness(x, y, a)//3.

led.setBrightness(a)//4.
  • アイコンの各座標をled.toggle(x, y)でON/OFF。
  • 次のLEDを表示する前にbasic.pause(ミリ秒)で一時停止。
  • 一時停止の時間を変えてアニメーション速度を変えてみよう。
  • 例題1では、led.toggle(x, y)とbasic.pause(100)を何度も記述しており非効率
  • basic.pause(ミリ秒)の引数を変えるのにも一苦労。
  • ほぼ同じ処理を一つの関数として定義することで、何度も再利用できる。
/*-----ほぼ同じ処理のセット1-------*/
led.toggle(0, 3)  //引数以外同じ処理
basic.pause(100)  //全く同じ処理
/*-----ほぼ同じ処理のセット2-------*/
led.toggle(1, 4)  //引数以外同じ処理
basic.pause(100)  //全く同じ処理
/*-----ほぼ同じ処理のセット3-------*/
led.toggle(2, 3)  //引数以外同じ処理
basic.pause(100)  //全く同じ処理
...
  • 関数を定義するときに冒頭に必ずつけるキーワード。
  • ここではON/OFF切替と一時停止をするのでtoggleAndPauseと命名。
  • 関数の内部でLEDの座標が必要なので、それぞれx, yと命名。
①function ②toggleAndPause(③x: ④number, y: number) {
  ⑤led.toggle(x, y)
  ⑤basic.pause(100)
}
  • 型には、number(数値)、string(文字列)、any(なんでも可)などがある。
    今回は座標を引数として受け取りたいため、numberを指定。
①function ②toggleAndPause(③x: ④number, y: number) {
  ⑤led.toggle(x, y)
  ⑤basic.pause(100)
}
  • led.toggle()の引数に、自分が命名した引数(x,y)を代入。
    次に、一時停止の処理を加える。
①function ②toggleAndPause(③x: ④number, y: number) {
  ⑤led.toggle(x, y)
  ⑤basic.pause(100)
}
  • これにより、任意の座標に対してON/OFF切替と一時停止の処理を1行で実行できる。
toggleAndPause(1,2)
//↑のように書くと、この関数の内部で、
led.toggle(1, 2)
basic.pause(100)
//が実行される。
  • 先ほどのtoggleAndPause()を実装。
  • basic.forever()の内部をtogleAndPause()に書き換える。
  • 一時停止時間を、オプション引数としてmsと命名。
    引数の型の横にデフォルト値(ここでは100)を代入すれば、オプション引数にできる。
  • msをbasic.pause()の引数に渡す。
function toggleAndPause(x: number, y: number, ms:number = 100 ①) {
  led.toggle(x, y)
  basic.pause(ms)②
}
  • アイコンをアニメーション表示する関数を定義。
  • オプション引数でアニメーション速度を変更可能。
  • オリジナルの一筆書きアニメーション関数をつくり、classroomに提出
  • led.plotBrightness(x,y,a)でLEDの明るさを個別に指定できる。
  • for文を使って個々のLEDがフェードインする関数を作成。
  • 作成した関数を組み合わせてフェードイン一筆書きをする。
  • for文は繰り返しが全て終了するまで次の処理に移れない。
  • そのため、例題4では同時に複数のLEDをフェードインさせることができない
  • LEDの明るさを変化させる処理をバックグラウンドに登録
  • 登録された個々のLEDの処理をバックグラウンドで同時に実行。
  • しかし、バックグラウンドに処理を登録し実行するアルゴリズム(プログラミングの手順)は複雑すぎてまだ教えられません!
  • そのため、今回は予め作成しておいた関数を用いたアニメーション制作に重点をおく。
  • fadeInOut()(8行目以下で定義)でホタルに見立てたLEDを明滅させ、ランダムに表示させる。
  • ランダムな値を取得するには、
    Math.randomRange(最小値, 最大値)を用いる。
  • fadeIn()、fadeOut()、fadeInOut()を用いたオリジナル作品を作成し、classroomに提出
  • 関数の定義の書き方を練習。
  • LEDの様々な光らせ方を、作品へ応用。