10日目。ループで弾発射!
こんにちは。
今日は弾を打ち出しましょう。
今日伝えたいこと
・関数分けの例を示したい
・同じようなことを何度も繰り返すときはループを使えばループのなかに1回分の処理を書くだけでOK。とても便利。ということ。
砲台はボタンを押された時に横にひとつ動かしましたが、弾はボタンが押された時にLEDを4回、上に向かって順に動かします。
弾が飛んでいるように見えるプログラム(第1案)
順にコードを追っていきましょう。
yが3は砲台の一つ上の位置です。そこのLEDを点灯し、光っているのが見えるようにちょっとの時間(100ミリ秒は0.1秒です)たってから消灯します。
次にその上のLED(yが2)を同様に光らせて消します。
さらにその上のLED(yが1)を同様に光らせて消します。
最後にその上のLED(yが0)を同様に光らせて消します。
これで弾が飛んでいくように見えます。
けれど、… … なにか感じませんか?
感じないときは、9日目の記事をもう一度読んでみましょう。
第1案の改良を考えよう
さて、第1案のプログラムを見て「長い」と感じてくださいね。似たような3行が4回繰り返されていることも見つけてくださいね。
とっくにわかったよという勘のいい人は今後自分の意思でプログラミングした時にも気づけるかな。意外と難し
い気づきだったりしますよ。
さて、
さらに、8日目に作った「砲台を左右に動かす」関数を応用できないだろうかと気付けたらすばらしい。プログラマの才能ありありですよ。
さらに改良しよう
「ボタンAが押されたとき」のプログラムは4行。4回光らせるから4行ですね。micro:bitはLEDの数が少ないからこれでいいけど、もし100個も1,000個もあったら… 書ききれませんね。
上の黒板中央に4行並んだブロックをよくみてください。
違いは3-2-1-0と規則的に変わっていく第2パラメーターだけかぁというというところに目がいきいますよね。
こんなときがループの出番です。
4個でも1,000個でも1回分のブロックで済ませちゃおうよという技術です。
ループ(繰り返し)
ループ倉庫を開いてみます。
上4つが使える可能性のあるループするブロックです。今回は 3,2,1,0と変化させたいのですが、ぴったりなものがないので、最初のブロックを使って4回ループさせることにしましょう。
今日はここまで。
次回予告
他のループブロックを使ったらどんなプログラムになるかみてみましょう。
この記事が気に入ったらサポートをしてみませんか?