「くりかえし」を応用しよう

 2019年12月号の第14回では、「くりかえし」のプログラムで使うブロックを紹介
しょうかい
したよ。ここでは、紹介したブロック使って、「くりかえし」を応用するプログラムをつくってみるゾ。

ボタンを押したら全部のLEDが順番につくプログラム

 第14回でmicro:bitのディスプレイのLEDが順番
じゅんばん
点灯
てんとう
するプログラムをつくったね。これを応用して、ボタンを押すと、全部のLEDが順番につくプログラムをつくってみよう。

 「変数
へんすう
」カテゴリーで、「X」、「Y」の2つの変数をつくる。そして、ここでは「変数“カウンター”を0~“4”に変えてくりかえす」ブロックを2つ使うぞ。一方は“カウンター”を変数「Y」に、もう一方は“カウンター”を変数「X」に変更する。
 「変数“Y”を0~“4”に変えてくりかえす」ブロックの中に、「変数“Y”を0~“4”に変えてくりかえす」ブロックと「点灯x“0”y“0”」ブロック(左側を変数「X」、右側を変数「Y」に変更する)と組み合わせる。

ボタンAを押したら全部のLEDが順番につくプログラム

 シミュレーターでボタンAをクリックしたら、順番に全部のLEDが点灯したかな。
 このプログラムを「LED点灯」という名前で保存して、micro:bitに書き込んでみよう。シミュレーターと同じようにLEDが点灯していくよ。

 4の数字を変えてみたり、
り返しのX,Yを入れ替えたりすると、どんな変化が起こるかな。いろいろ試してほしい。

LEDで変化する模様をつくるプログラム

 ここでは、「ループ」カテゴリーの「もし“真”ならくりかえし」ブロックを使ったプログラムをつくってみよう。このブロックは、くりかえす回数がわからない場合のプログラムで使うよ。
 今回は、micro:bitのLEDを点灯させるけど、順番通りではなくて、ランダムに点灯するようにしよう。LEDの点灯が変化していくので、どんどん変わっていく模様
もよう
のように見えるゾ。

 まず、「LED」カテゴリーの「反転 X“0” Y“0”」ブロックを「ずっと」ブロックと組み合わせよう。

LEDがずっと点灯するプログラム

 MakeCodeのシミュレーターで、左上のLEDが点滅する。この「反転 X“0” Y“0”」ブロックは、LEDが点いていたら消灯、消えていたら点灯といった処理をする。「ずっと」ブロックと組み合わせることで処理を繰り返しているので、LEDが点滅するよ。
 次に、LEDの点滅をディスプレイ全体に広げるために、X, Yそれぞれに0~4の乱数
らんすう
を入れてみよう。「反転 X“0” Y“0”」ブロックの“0”の部分に、「計算」カテゴリーの「“0”から“10”までの乱数」ブロックを入れる。ここで、“10”は“4”に変えるよ。

LEDの点滅をディスプレイ全体に広げるためのブロック

 シミュレーターで、LEDディスプレイでどんどん模様が変化していく様子が確認できたかな。このままでは処理
しょり
を止めることができないので、プログラムの開始を、micro:bitがゆさぶられたとき、終了をボタンAが押されたときに変更しよう。
 まずは「ゆさぶられたとき」ブロックに、「反転 X“0”から“4”までの乱数” Y“0”から“4”までの乱数”」ブロックを移動する。

ゆさぶられたときにプログラムを開始する

 すると、micro:bitをゆさぶるたびにLEDが点灯するけれど、先ほどのように模様が変化し続けるような表示にはならない。模様が変化し続ける表示しにしたいので、「もし“真”ならくりかえし」ブロックを使ってみよう。

ゆさぶられたときにLEDの模様が変化するブロック

 これで、模様が変化し続ける表示になった。しかしこのままでは止めることができないので、最後にボタンAが押されたら止めるようにする。
 このプログラムの場合は、“真”のところに「論理
ろんり
」カテゴリーの「“ ”ではない」ブロックを組み込む。“ ”には「ボタン“A”が押されている」ブロックを組み込む。この場合は「もしボタンAが押されていなかったらくりかえす」という意味になるので、ボタンAが押されたら、くりかえしの処理が止まる。

ゆさぶられたときにLEDの点滅が始まり、ボタンAを押したときに点滅が止まるプログラム

 これでプログラムは完成だ。シミュレーターで見るのもいいけど、保存してmicro:bitに書き込んでみよう。ゆさぶるとディスプレイの表示が変化しはじめて、ボタンAを押すと止まるよ。止まった時の模様を見るのもおもしろいね。
このプログラムは、LEDディスプレイにおもしろい模様を表示するくらいの機能しかないが、誰かと見せあって模様を比べてみたり、模様が何に見えるかなど連想して遊ぶのも楽しいね。
 「もし“真”ならくりかえし」ブロックによるくりかえしは、くりかえしの回数が決まっていなかったり、ボタンを押す、ゆさぶるといった動作が条件になるくりかえしができる。これを使うと、ストップウォッチやタイマーのようなプログラムもできるので、チャレンジしてみよう。

最新号好評発売中!

子供の科学 2021年 10月号

CTR IMG