この記事では、マイクロビット(micro:bit)についているコンパス(地磁気センサー)を使った「東西南北ゲーム」を紹介します。
ゲーム作りを通して方角の理解が深まりますし、遊びながら東西南北を覚えることができちゃいますよ!
夏休みの自由研究にもオススメです。
コンパスセンサーの基本的な使い方は、下の記事にまとめています。
今回作ったもの 「東西南北ゲーム」
マイクロビットを持って立ち、マイクロビットが指示する方角を向いて、制限時間内に何問正解できるかというゲームです。
1.自分が向いている方角を確認する(Aボタン)
Aボタンをおすと、北を指す矢じるしが表示されます。
最初のうちは北を向いた状態(矢じるしが上を指している)からスタートするようにしましょう。
2.方角グルグルゲームをする(Bボタン)
Bボタンをおすと、ゲームを開始。
ゲームスタートから30秒の間、以下の処理をくりかえします。
- 問題を出題する
- 数秒間一時停止(その間にプレイヤーが方向を変える)
- 答え合わせをする
ゲームスタートから30秒過ぎたら、正解数を表示してゲームを終了します。
必要なもの
- マイクロビット
- 電池ボックス&電池
マイクロビット単体で動かしたい場合、電池ボックスが必要です。 - USBケーブル
パソコン側:USB TypeA
マイクロビット側:Micro USB TypeB - パソコン
インターネットができてUSBポートがついているもの。 - スピーカー(最新バージョン(v2.0)の場合は不要)
マイクロビットで音を鳴らしたい場合、マイクロビット本体と別にスピーカーとワニ口クリップが必要になります。
今回、ワニ口クリップのいらないマイクロビット用のスピーカーを使いました。
コードがいらないので、コンパクトに持てます。
スピーカーがなくてもゲームをすることはできますが、音があった方がよりゲームっぽくなって盛り上がりますよ!
MakeCodeエディターでプログラミング
MakeCode(メイクコード)エディターの画面を開いて、プログラミングしてみましょう。
MakeCodeエディターの基本的な使い方は「【マイクロビット】MakeCode(メイクコード)エディターの使い方」にまとめています。
ボタンAが押されたとき
現在マイクロビットが向いている方角を取得して、北はどの方向にあるのか矢じるしを表示します。
マイクロビットを水平にした時に、向いている方角を0~359の数値で表します。
(北:0、東:90、南:180、西:270)
今回は、方角を8等分にしました。
例えばマイクロビットが東を向いていた場合、左手が北になります。よって表示される矢じるしの方向は「←」です。
ボタンBが押されたとき
※スピーカーなしの場合「音を鳴らす」ブロックと「メロディを開始する」ブロックは必要ありません。
1.初期処理
ゲームがスタートした時に、1回だけ行う処理です。
- 変数「スコア」の初期化
正解数をカウントするための変数「スコア」を作ってゼロクリアします。
- 変数「スタート稼働時間」の設定
ゲームを開始した時の稼働時間を保存しておく変数「スタート稼働時間」を作って「稼働時間(ミリ秒)」を設定します。
- 変数「経過時間」の計算
ゲームを開始した時から何秒たっているか計算します。
「経過時間(ミリ秒)」-「スタート稼働時間」
- ゲーム開始!
文字列”START!”を表示して、ゲームがはじまったことをプレイヤーに伝えます。
稼働時間(ミリ)は電源が入ってから経過したミリ秒数を取得するブロックです。
※ミリ秒は1,000分の1秒
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をすべて点灯させてください。
スマイルマークが表示されたらキャリブレーションは終了です。
まとめ
コンパスセンサーを使った「東西南北ゲーム」を紹介しました。
ブロックが多くてむずかしそうに見えますが、やりたいことごとに処理を小さく分けて考えてみましょう。
また、作っている時に「このブロックはなんで必要なの?」と思うところが出てくるかもしれません。
そんな時は、そのブロックを消して何回かゲームをしてテストしてみてくださいね。
本当にいらないブロックなのかもしれませんし、もっと効率のよい方法を発見できるかもしれませんよ。