「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

micro:bit Lab.【マイクロビット】

micro:bit Lab.では、micro:bit【マイクロビット】に関する情報を紹介しています。

AボタンとBボタンの同時押しを判定する
6-3

ボタンでキャラクターを操作する(2)

2018-10-022018-10-02

micro:bit(マイクロビット)のボタンでScratchキャットを左右へ移動するプログラムに、AボタンとBボタンを同時に押したときの判定を追加します。同時押しで、Scratchキャットを90度回転させます。

お知らせ

この記事は、Scratch 3.0を対象としたものです。現在、Scratch 3.0はベータ版であり、将来、記事の内容が変更になる場合があります。

6-3-1.はじめに

この記事では「6-2.ボタンでキャラクターを操作する(1)」で作成したScratchキャットが左右へ移動するプログラムを元にして、micro:bit(マイクロビット)のAボタンとBボタンを同時に押したときの判定を追加します。プログラムの作成がまだの場合は、先に「6-2.ボタンでキャラクターを操作する(1)」をお読みください。

図6-3-1-1.左右へ移動するScratchキャット
図6-3-1-1.左右へ移動するScratchキャット

6-3-2.ボタンの同時押しを判定するプログラム

図6-3-2-1は「6-2.ボタンでキャラクターを操作する(1)」で作成したプログラムです。micro:bit(マイクロビット)のボタンを押すと、Scratchキャットが左右へ移動するプログラムです。左右への移動は「もし~なら」ブロックを使って、Aボタン、またはBボタンが押されたことを判定しています。

図6-3-2-1.左右へ移動するプログラム
図6-3-2-1.左右へ移動するプログラム

同じように、ボタンの同時押しを判定する「もし~なら」ブロックを追加します。

図6-3-2-2.「もし~なら」ブロックを追加
図6-3-2-2.「もし~なら」ブロックを追加

micro:bit拡張機能の中にある「ボタン~が押されたとき」ブロックの選択できる項目を見てみましょう。選択できる項目は「A」「B」「どれかの」の3つです。どうやら同時押しを判定する「A+B」や「どちらも」はなさそうです。

図6-3-2-3.選択できる項目
図6-3-2-3.選択できる項目

では、どうやって同時押しを判定すればいいでしょうか。それは、二つの「ボタン~が押された」ブロックを使う方法です。二つのブロック「ボタンAが押されたとき」と「ボタンBが押されたとき」を、「かつ」ブロックでつなぎます。これで同時押しが判定できそうです。

図6-3-2-4.二つの「ボタン~が押された」ブロック
図6-3-2-4.二つの「ボタン~が押された」ブロック

プログラムを完成させましょう。AボタンとBボタンが同時に押されたときは、時計回りに90度回転するようにします。図6-3-2-5が、完成したプログラムです。

図6-3-2-5.ボタンの同時押しを判定するプログラム
図6-3-2-5.ボタンの同時押しを判定するプログラム

緑色の旗をクリックして、Scratchキャットを動かしてみましょう。図6-3-2-6は、左右に移動した後、AボタンとBボタンの同時押しでScratchキャットが回転するようすです。

図6-3-2-6.回転するScratchキャット
図6-3-2-6.回転するScratchキャット

これで「プログラムは完成!」と言いたいところですが・・・

6-3-3.潜む不具合(バグ)

ボタンの同時押しを判定するプログラムは完成しました。Scratchキャットは、Aボタンで左へ、Bボタンで右へ移動します。AボタンとBボタンを同時に押すと、くるくる回転します。問題なさそうですね。

では、完成した(と思われる)プログラムに、次のブロックを追加してください。これは、Bボタンが押されたときに「こんにちは!」と言って、右へ進むということになります。

図6-3-3-1.潜む不具合(バグ)
図6-3-3-1.潜む不具合(バグ)

緑色の旗をクリックして、Scratchキャットを動かしてみましょう。AボタンとBボタンを同時に押してください。

図6-3-3-2.「こんにちは!」と言いながら回転するScratchキャット
図6-3-3-2.「こんにちは!」と言いながら回転するScratchキャット

あれれ~?AボタンとBボタンを同時に押したのに「こんにちは!」と言って、くるくる回転していますね。これはどうしてでしょうか?

実は「ボタンBが押された」ブロックは、Bボタンだけが押されたことを判定するブロックではありません。Bボタンだけが押されても、BボタンがAボタンと同時に押されても、どちらもBボタンが押されたと判断します。「ボタンAが押された」ブロックも同じです。

つまり、AボタンとBボタンを同時に押すと、赤枠で囲んだブロックのすべてが動いていたということになります。

図6-3-3-3.すべてが動いていた
図6-3-3-3.すべてが動いていた

完成した(と思われる)プログラムを動かしても、気づかなかったのは「10歩動いて、-10歩動く(結果的に動かない)」が実行されていたからです。「こんにちは!と言う」ブロックを追加することで、隠れていた不具合(バグ)が見えるようになりました。このように、動かして確認しても、見えない不具合(バグ)が潜んでいることがあります。

最後に、正しく動作するプログラムをいくつか紹介します。さて、このプログラムは本当に「正しく動作する」プログラムなのでしょうか。

図6-3-3-4.本当に完成したプログラム(1)
図6-3-3-4.本当に完成したプログラム(1)
図6-3-3-5.本当に完成したプログラム(2)
図6-3-3-5.本当に完成したプログラム(2)
この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動