【マイクロビット】魔法少女が持っていそうな宝石箱を作る~プログラミング編~

前回は、「魔法の宝石箱」を工作しました。

 

 

今回は、この魔法の宝石箱に
プログラミングで魔法をかけていきましょう。

箱を開けたら音楽が流れるプログラムを作りました。

関数真偽値についても分かりますよ!

 

今回作ったプログラムの仕様

フタを開けた宝石箱

宝石箱のフタを開けると、
ハートが表示され音楽が1回流れます。

音楽が流れ終わったら、ハートが消えます。

フタを閉じてもう一度フタを開けると、
ハートが表示され音楽が1回流れます。

 

MakeCodeエディターを開く

MakeCodeエディターの画面を開いて
実際にプログラミングしてみましょう。

 

MakeCodeエディターの基本的な使い方は
こちらの記事をご覧ください。

 

完成プログラム

プログラムの内容は画像のようになります。

箱を開けると音楽が流れるプログラム1

箱を開けると音楽が流れるプログラム2

では、考え方を順を追って説明していきます。

スポンサーリンク

明るさセンサーで開閉を判断

フタが閉まっているか開いているかは
明るさセンサーを使えば判断出来そうですね。

明るさセンサーについては
こちらの記事で詳しく解説しています。

 

箱が開いているかの判定

 

  • 「明るさ」が10より大きい
    → 明るいので箱は開いている
  • 「明るさ」が10以下
    → 暗いので箱は閉まっている

 

判定の値(10)は、お部屋の明るさなどに
合わせて調整してみてくださいね。

 

フタが開いたときの処理

「明るさ」の値が10より大きかった場合の
プログラムを作りましょう。

箱が開いていた時の処理

  1. 「アイコンを表示」で、ハートを表示する。
  2. 「音楽を鳴らす」を使って、音楽が流れるようにする。
  3. 「表示を消す」で、ハートを消す。

 

複数の命令をおまとめ!「関数」

上の画像のプログラムでも動きますが、
音を鳴らすブロックが多くてちょっと見にくいです。

それと別のタイミングでも
同じ音楽を流したくなったら、
また同じ数だけブロックを設定するのは大変ですね。

 

例えば「ボタンAが押された時」にも
同じ音楽を流したくなったら、
下のようなプログラムになります。

同じ処理をたくさん作るのは大変

ブロックの数が多い・・・

ちょっと直したいなと思ったら
2カ所直さないといけないのも面倒ですね。

少し時間が経って修正したくなったら
片方直し忘れてしまうかもしれません。

 

そんな時は関数を使うと便利です。

実際に使ってみましょう。

 

関数を作る

関数を作る

  1. カテゴリの「高度なブロック」をクリック、「関数」を選ぶ。
  2. 「関数を作成する…」をクリックし、関数を作成する。

 

関数名をつける

関数名にはどんな命令のまとまりか
分かるような名前をつけて
「完了」をクリックしましょう。

今回関数名は「音楽を鳴らす」にしました。
他の部分は触らなくてOK。

 

関数のブロックが出てきた

関数「音楽を鳴らす」ブロックが
プログラミングエリアに出てきました。

 

「ずっと」にあった「音楽を鳴らす」ブロックを
関数「音楽を鳴らす」の中に移動させましょう。

音楽が流れる関数

 

関数を呼び出す

「ずっと」「音楽を鳴らす」ブロックが
あった場所に関数「音楽を鳴らす」
呼び出す命令を入れましょう。

 

関数カテゴリにある
「呼び出し 音楽を鳴らす」ブロックを使います。

関数を呼び出す

これでスッキリ見やすくなりましたね!

 

関数とは、命令のまとまりのことです。
何度も使う処理があったら、それを関数にすると便利!

 

音楽を1回だけ鳴らしたい

もうお気づきかと思いますが、
このままだと明るい間、
ずっと音楽が鳴りっぱなしです。

シミュレーターがうるさいw
シミレーターを停止するボタンで止めておきましょう。

 

フタを開けた時に1回だけ
音楽が流れるようにします。

箱を開けると音楽が流れるプログラム1
マーカーが引いてある所が追加した部分です。

  • 「最初だけ」で変数「演奏した」を「真」にする。
    → マイクロビットを箱にセットする時に
     音楽が鳴らないようにしています。
  • 箱が開いている かつ まだ音楽を流していない 場合、
    ハートを表示し、音楽を流した後
    変数「演奏した」を「真」にする。
    → 音楽を流し終わった状態にしています。
  • 箱が閉じている かつ 音楽を流し終わっている 場合、
    変数「演奏した」を「偽」にする。
    → 音楽を流していない状態に戻しています。

真(true) と 偽(false)

1回音楽を流したか判断する目印として
変数「演奏した」を追加しました。

変数「演奏した」の役割は、

  • 変数「演奏した」「真」が入っていたら、
    音楽を流し終わった状態を表す。
  • 変数「演奏した」「偽」が入っていたら、
    まだ音楽を流していない状態を表す。

 

ここに出てくる「真」「偽」って何?
ってことですが簡単に言うと

  • 真(true)そうだよ
  • 偽(false)ちがうよ

という意味です。

演奏した?そうだよ~とか、
演奏した?ちがうよ~と
読み替えてもらえればOKです。

「真」「偽」は、論理のカテゴリにあります。

かつ(and) と または(or)

かつとまたは

 

判定条件が2つ以上ある場合、
論理のカテゴリの「かつ」「または」
書いてあるブロックを使います。

これらのブロックを使えば
2つ以上の条件をつけることができますが
条件と条件をつないでいる
「かつ」「または」とはどういう意味でしょうか。

 

  • かつ(and)全ての条件をクリアしていればOK
  • または(or)1つでも条件をクリアしていればOK

 

例えば、リンゴ・バナナ・トマト・玉ねぎがあったとき

「赤い かつ 果物」という条件の場合
 ・リンゴ → OK(真)
 ・バナナ → ダメ(偽)
 ・トマト → ダメ(偽)
 ・玉ねぎ → ダメ(偽)
「赤い または 果物」という条件の場合
 ・リンゴ → OK(真)
 ・バナナ → OK(真)
 ・トマト → OK(真)
 ・玉ねぎ → ダメ(偽)

ということになります。

シミュレーターで確認

プログラムが完成したら、
シミュレーターで思った通りに動くか
テストしましょう。

 

  • 一度明るさを0にした後、明るさの値を上げた時
    ハートが表示され、音楽が流れたでしょうか?
  • 音楽は1回だけ流れるでしょうか?
  • 音楽が流れ終わったら、ハートが消えたでしょうか?
  • もう一度明るさを0にした後、明るさの値を上げた時
    ハートが表示され、音楽が流れたでしょうか?

 

マイクロビットの左上の丸の中を
上下にドラッグすると明るさの値を変えることができます。

シミュレーターで確認できたら
マイクロビットに転送して実際に動かしてみましょう。

 

まとめ

以上、箱を開けると音楽が流れる
プログラムの作り方でした。

説明が長くなってしまいましたが
いかがだったでしょうか。

 

魔法の宝石箱は、
ボタンを押した時や揺さぶられた時など
まだまだ機能を追加する余地があります。

ぜひプログラムを追加して
自分だけの魔法の宝石箱を作ってくださいね!

 

 

タイトルとURLをコピーしました