この記事では、マイクロビットを使ったかくれんぼを紹介します。
マイクロビットの基本的な機能は分かったけれど
- 次に何を作っていいのか分からない
- 複雑なゲームを作るのはハードルが高い
- みんなでワイワイ遊べるものが作りたい
という方向けです。
かんたんなプログラムでも、定番の遊びを十分に楽しめるものにバージョンアップすることができますよ。
初心者さんでも分かりやすいようにしっかりプログラムの解説をしています。
マイクロビットを使ったかくれんぼのルール
かくれている間、鬼に見つからないようにマイクロビットのボタンをおして音を鳴らし、音を鳴らした回数を競います。
- 鬼を決める。
- かくれる時間、子は物かげにかくれる。
- 子がかくれる間、鬼は目をふさいで待つ。
- 鬼はかくれている子をさがす。
- 鬼がさがしている間、鬼に見つかる または さがす時間が終わるまで、子はマイクロビットのボタンをおして音を鳴らす。
- さがす時間内に子を全員みつけられたら鬼の勝ち。
- 鬼が時間内に全員見つけられなかった場合、見つからなかった子の中で音を鳴らした回数が一番多い子が勝ち。
赤いマーカー部分が追加したルールです。
音を鳴らして鬼に見つかるかもしれないハラハラ感を楽しめる要素を追加しました。
用意するもの
- マイクロビット本体
人数分必要です。
- 電池ボックス
ゲーム中はマイクロビットを持ち歩きます。
マイクロビット単体で持ち歩く場合は電池ボックスが必要です。
- スピーカー
v1.5以前のマイクロビットは別途スピーカーが必要です。
最新バージョンのマイクロビット(micro:bit v2.0)には、スピーカーが内蔵されているので不要です。
MakeCodeエディターを開く
MakeCode(メイクコード)エディターの画面を開いて、実際にプログラミングしてみましょう。
MakeCodeエディターの基本的な使い方は、下の記事にまとめています。
一番かんたんなプログラム
- Aボタンをおしたとき
メロディ「ジャンプアップ」を鳴らして、
メロディを鳴らした「回数」を1増やす。 - ずっと
メロディを鳴らした「回数」を表示する。
最低限、これだけの機能があれば遊ぶことができます。
プログラムもとてもシンプルです。
しかし、遊んでいるうちにこまったことが出てくるのではないでしょうか。
どんなこまったことが起こりそうか、予想したり実際に遊んたりして考えてみてください。
こまったことの例
- かくれる時間・さがす時間が、いつ終わったのか分からなくなる。
- 音が鳴り終わる前に、何度もボタンをおしてしまう。
- 鬼に見つかった後や終わった後に、こっそりボタンをおしたくなる。
もっと遊びやすくしてみよう
こまったことを解決できるよう、一番シンプルなプログラムにどんな機能を追加したらいいか考えてみましょう。
今回は、こんな機能を追加しました。
- かくれる時間を測る。
- さがす時間を測る。
- 連続してボタンをおせない。
- 鬼に見つかった後とかくれる時間終了後、ボタンをおしても回数は増えない。
プログラムの仕様
追加する機能もふまえて、プログラムにどんなことをさせたいのかまとめました。
ゲーム開始前(状態:0)
「←」を表示して、Aボタンを指す。
かくれる時間(状態:1)
- Aボタンをおすと、ゲームスタート(全員同時におしてね!)
- かくれる時間の残り時間を棒グラフで表示する。
さがす時間(状態:2)
- かくれる時間が終わったら「♪」を表示、さがす時間がスタートする。
- さがす時間の残り時間を棒グラフで表示する
- Aボタンをおすと、メロディ「ジャンプアップ」が鳴り、メロディを鳴らした「回数」を1増やす。
- ただし、鳴らしてから3秒たたないと次の音を鳴らせない。
鬼に見つかった時(状態:3)
- 鬼は見つけた子のマイクロビットのAとBボタンを同時におす。
- メロディ「パワーダウン」が鳴り、「がいこつ」を表示する。
- その後、Aボタンをおしても「回数」はカウントされない。
ゲーム終了(状態:3)
- かくれる時間が終わったら、メロディ「パワーダウン」が鳴り、「すばらしい」顔を表示する。
- その後、Aボタンをおしても「回数」はカウントされない。
- Bボタンをおすと、メロディを鳴らした「回数」が表示される。
完成プログラム
プログラムは下の画像のようになります。
最初だけ・ずっと
関数「HideTime」
関数「SeekTime」
ボタンAが押されたとき
ボタンB・ボタンA+Bが押されたとき
シンプルなプログラムと比べて、ずいぶん複雑になりましたね。
プログラム解説
プログラムの中の条件分岐と変数の計算を中心に解説します。
変数「状態」について
かくれんぼの手順のどの段階か、変数「状態」を使って分かるようにします。
- 状態が0:ゲーム開始前
- 状態が1:かくれる時間
- 状態が2:さがす時間
- 状態が3:鬼に見つかった・ゲーム終了
変数については「変数とは?スクラッチ(Scratch)を使ってわかりやすく解説」でくわしく解説しています。
最初だけ
最初に、変数の初期値を設定します。
音量やかくれる時間・さがす時間は人数や場所で調整してくださいね。
- 音量:0~255の範囲
- かくれる時間・さがす時間:ミリ秒単位(1秒=1,000ミリ秒)
ずっと
変数「状態」の値をみて、処理を分けています。
状態が0のとき(ゲーム開始前)
「←」を表示する。
状態が1のとき(かくれる時間)
関数「HideTime」を呼び出す。
状態が2のとき(さがす時間)
関数「SeekTime」を呼び出す。
関数については「関数とは?スクラッチ(Scratch)を使って解説」でくわしく解説しています。
関数「HideTime」
かくれる時間の時の処理です。
かくれる時間の間は残り時間を棒グラフで表示して、かくれる時間が終わったら鬼がさがす時間に移ります。
変数「経過時間」の計算
かくれる時間がはじまってから何秒たっているか計算します。
「稼働時間(ミリ秒)」–「開始時間」
経過時間 < かくれる時間 なら
まだかくれる時間なので棒グラフを表示します。
- 値:残り時間(かくれる時間 – 経過時間)
- 最大値:かくれる時間
でなければ
かくれる時間が終わったので、「状態」を2(さがす時間)にします。
「開始時間」に「稼働時間(ミリ秒)」を保存して、さがす時間がはじまった時間を保存しておきます。
稼働時間(ミリ)は電源が入ってから経過した時間(ミリ秒)を取得するブロックです。
※ミリ秒は1,000分の1秒
関数「SeekTime」
さがす時間の時の処理です。
さがす時間の間は残り時間を棒グラフで表示して、さがす時間が終わったらゲーム終了(状態=3)になります。
ボタンAが押されたとき
ゲーム開始前かさがす時間かによって処理を分けます。
状態が0のとき(ゲーム開始前)
ゲームを開始して、子がかくれる時間になります。
- 「状態」を1(かくれる時間)にします。
- 「開始時間」に「稼働時間(ミリ秒)」を保存して、かくれる時間がはじまった時間を保存しておきます。
状態が2のとき(さがす時間)
- 連続して音を鳴らせないように、前回ボタンをおしてから3秒たっているか判定します。
「稼働時間(ミリ秒)」–「ボタン押した時間」で、前回ボタンをおしてから何秒たったか計算できます。 - 音をならして、「回数」を1増やします。
- 「ボタン押した時間」に「稼働時間(ミリ秒)」を保存して、ボタンをおした時間を保存しておきます。
ボタンBが押されたとき
「回数」を表示します。
ボタンA+Bが押されたとき
鬼に見つかった時の処理です。
「状態」が2(さがす時間)のとき、「状態」を3(ゲーム終了)にします。
シミュレーターで確認
プログラムが完成したらシミュレーターで思った通りに動くかテストしましょう。
テストのときだけかくれる時間・さがす時間を短めにしておくと確認しやすいです。
実機でテストしてみよう
シミュレーターで確認できたらマイクロビットに転送して実際に動かしてみましょう。
まとめ
以上、マイクロビットを使ったかくれんぼの紹介でした。
完成形のプログラムを最初に見たら「むずかしそう…」と思うかもしれません。
しかし一番シンプルなプログラムに機能を1つずつ足すのであれば、できそうな気がするのではないでしょうか。
こうだったら便利だな・面白いなという機能があったら追加してみてくださいね。