この記事では、
マイクロビット(micro:bit)についている
コンパス(地磁気センサー)を使ったゲームを紹介します。
ゲーム作りを通して方角の理解が深まりますし、
遊びながら東西南北を覚えることができちゃいますよ!
夏休みの自由研究にもオススメです。
コンパスセンサーの基本的な使い方は、下の記事にまとめています。
今回作ったもの ~方角グルグルゲーム~
マイクロビットを持って立ち、
マイクロビットが指示する方角を向いて
制限時間内に何問正解できるかというゲームです。
1.自分が向いている方角を確認する(Aボタン)
Aボタンを押すと、北を指す矢印が表示されます。
最初のうちは北を向いた状態(矢印が上を指している)からスタートするようにしましょう。
2.方角グルグルゲームをする(Bボタン)
Bボタンを押すと、ゲームを開始します。
ゲームスタートから30秒の間、
- 問題を出題し、
- 数秒後(その間にプレイヤーが方向を変える)
- 答え合わせをする
をくりかえします。
ゲームスタートから30秒過ぎたら、正解数を表示してゲームを終了します。
必要なもの
・マイクロビット
・電池ボックス&電池
マイクロビット単体で動かしたい場合、
電池ボックスが必要です。
・USBケーブル
パソコン側:USB TypeA
マイクロビット側:Micro USB TypeB
・パソコン
インターネットができて
USBポートがついているもの。
・スピーカー(最新バージョン(v2.0)の場合は不要)
マイクロビットで音を鳴らしたい場合、
マイクロビット本体と別にスピーカーと
ワニ口クリップが必要になります。
今回、ワニ口クリップのいらないマイクロビット用のスピーカーを使いました。
コードがいらないので、コンパクトに持てます。
スピーカーがなくてもゲームをすることはできますが、
音があった方がよりゲームっぽくなって盛り上がりますよ!
MakeCodeエディターでプログラミング
MakeCode(メイクコード)エディターの画面を開いて、プログラミングしてみましょう。
MakeCodeエディターの基本的な使い方は、下の記事にまとめています。
ボタンAが押されたとき
現在マイクロビットが向いている方角を取得して、
北はどの方向にあるのか矢じるしを表示します。
マイクロビットを水平にした時に
向いている方角を、0~359の数値で表します。
(北:0、東:90、南:180、西:270)
今回は、方角を8等分にしました。
例えば、マイクロビットが東を向いていた場合、左手が北になります。
なので、表示される矢じるしの方向は「←」です。
ボタンBが押されたとき
※スピーカーなしの場合、「音を鳴らす」ブロックと
「メロディを開始する」ブロックは必要ありません。
1.初期処理
ゲームがスタートした時に、1回だけ行う処理です。
・変数「スコア」の初期化
正解数をカウントするための変数「スコア」を作って
ゼロクリアします。
・変数「スタート稼働時間」の設定
ゲームを開始した時の稼働時間を保存しておく
変数「スタート稼働時間」を作って
「稼働時間(ミリ秒)」を設定します。
稼働時間(ミリ)は電源が入ってから経過した
ミリ秒数を取得するブロックです。
※ミリ秒は1,000分の1秒
・変数「経過時間」の計算
ゲームを開始した時から何秒たっているか計算します。
「経過時間(ミリ秒)」-「スタート稼働時間」
・ゲーム開始!
文字列”START!”を表示して
ゲームがはじまったことをプレイヤーに伝えます。
2.もし経過時間が30秒未満ならくり返し
もしゲームをスタートした時間から30秒たっていないなら、
「3.問題を表示する」~「7.経過時間の再計算」までの処理をくり返し行います。
でなければ(スタートした時間から30秒以上たった)、
くりかえしを抜けて「8.スコアを表示」へ処理が移ります。
30秒は30,000ミリ秒です。
ゲームの時間はお好みで調節してみてくださいね。
3.問題を表示する
変数「問題」に1~4のランダムな数字を設定して
各数字に対応した方角をLEDに表示します。
- 1 … N(北)
- 2 … E(東)
- 3 … S(南)
- 4 … W(西)
4.カウントダウン
3、2、1…とカウントダウン表示して
プレイヤーに正解の方向を向くようにうながします。
5.プレイヤーが向いている方角(方角(°))を取得
プレイヤーが向いている方角(方角(°))を取得して、
方角に対応した数字を、変数「答え」に設定します。
- 北(方角が 0~ 44°または 315~359°) … 1
- 東(方角が 45~134°) … 2
- 南(方角が135~224°) … 3
- 西(方角が225~314°) … 4
6.答え合わせ
もし、変数「問題」=変数「答え」なら、
正解なのでLEDに「〇」を表示し、
変数「スコア」に+1します。
スピーカーを使う場合は、
「音を鳴らす」ブロックを使って
ピンポン(上のシ、ソ)と鳴らします。
でなければ、
不正解なのでLEDに「×」を表示します。
スピーカーを使う場合は、
「音を鳴らす」ブロックを使って
ブー(下のド)と鳴らします。
7.経過時間の再計算
くりかえしの最後に、
ゲームを開始した時から何秒たっているか計算しなおして、
「2.もし経過時間が30秒未満ならくり返し」へもどります。
8.スコアを表示
最後に正解数をLEDに表示します。
メロディ「パワーダウン」を演奏した後、
文字列”SCORE=”を表示して、
変数「スコア」を表示します。
シミュレーターで確認
プログラムが完成したらシミュレーターで思った通りに動くかテストしましょう。
方角(°)ブロックを使うと、
マイクロビットのロゴマークがコントローラーになり、
ロゴマークに角のようなものが生えます。
ロゴマークをクリックしてドラッグすると、
ロゴマークが回転し、方角の値を変えることができます。
(真上が0度)
実機でテストしてみよう
シミュレーターで確認できたら
マイクロビットに転送して実際に動かしてみましょう。
コンパスのキャリブレーション(較正)
マイクロビットにプログラムを書き込んだ直後、
コンパスのキャリブレーション(較正)を行ってコンパスが正しく動くように調整しましょう。
LED画面に「TILT TO FILL SCREEN」と表示されるので、
マイクロビット本体をグルグル傾けて、LEDをすべて点灯させてください。
スマイルマークが表示されたらキャリブレーションは終了です。
まとめ
コンパスセンサーを使った「方角グルグルゲーム」を紹介しました。
ブロックが多くてむずかしそうに見えますが、
やりたいことごとに処理を小さく分けて考えてみましょう。
また、作っている時に「このブロックはなんで必要なの?」と
思うところが出てくるかもしれません。
そんな時は、そのブロックを消して何回かゲームをしてテストしてみてくださいね。
本当にいらないブロックなのかもしれませんし、
もっと効率のよい方法を発見できるかもしれませんよ。