micro:bit(マイクロビット)は手のひらサイズの小さなコンピューター。いろいろな機能
が備
わっていて、自分でプログラミングをすることができるよ。ブログラミングは「MakeCode(メイクコード) for micro:bit」を使えば、初心者でもかんたんにできるんだ。
『子供の科学』本誌
の連載
「micro:bitでレッツプログラミング!」では、micro:bitを使った「探検
ウォッチ」というツールを使って、その機能
をプログラミングでつくったけれど、この連載が「コカネット」にお引っ越し。Web連載でも、探検ウォッチのいろいろな機能をプログラミングでつくっていくぞ!
これまでの本誌連載のバックナンバーは、micro:bit特設サイトで公開しているよ(コカネットの無料会員登録が必要)。本誌の連載を見たことがないという人は、まずこちらを見てみてね。Web連載は、本誌の連載の続きになっているから、基本的なことがわからなくなったら本誌のバックナンバーを振
り返ろう。
今回は探検ウォッチと、初心者向けプログラミング言語の定番
、Scratch(スクラッチ)のプログラムを連携
させて、おうちの中で楽しめるゲームをつくっていくぞ。
さて、前回までで、エクササイズゲームの中心になるプログラムをつくったね。右うでに探検ウォッチをつけて、両うでを左右に広げた後、頭の上で両手を合わせる運動をすることで、うでの動きを感知
して、カウントするプログラムだ。それに、一緒
に運動をしてくれるインストラクターもつくった。
もちろん、前回まででもエクササイズ用のプログラムとしては使うことができるけど、ゲームらしくつくりこみたいね。そこで、スプライトなども追加
して、次のようなルールのゲームにすることにしたよ。
【ゲームのルール】
頭の上で大きく手拍子をして、ネコを遠くまで飛ばそう。
両手を開いて頭の上で手を打つ動作を繰り返すと、ネコにパワーを送ることができる。リズムよく繰り返さないとネコは落ちてしまう。
墜落
したらゲームオーバーだ。
【プログラムの動作】
① ゲームがスタートしたら、両うでを水平
にしたあと、頭の上で両手を合わせるポーズでネコが飛
び始める。
② そのあと、ネコは落
ち続
けるので、落ちるのを遅
らせるためにうでの運動を続ける。
③ ネコが下に落ちたらゲームオーバーで、インストラクターがカウント(うでを動かした回数)と、スコア(ネコが飛んだ距離
)を教えてくれる。
プログラムとしてだいぶ複雑
になるので、完成
したコードについて説明
するよ。それを参考
に好きな機能を追加
してみてね。今回のプログラムは公開しているので、この記事の一番最後のURLもチェックしてね!
まずは、スクラッチ公式サイトにアクセスして、「作る」をクリックしてプロジェクトエディターを開こう。前回保存した探検エクササイズのプログラムを読み込むよ。micro:bitとスクラッチをつなぐのも忘れずに。
1 インストラクターのコード
前回は、インストラクターが「探検エクササイズチャレンジにようこそ!」とあいさつするコードはつくった。インストラクターは、ゲームの進め方や動きの説明、終わりのあいさつといったゲーム全体の進行を担当してもらうようにした。インストラクターのコードをつくるときは「Max」のスプライトを選択
してね。
1.1 ゲームをはじめるときのあいさつ
ゲームを始めるときは、緑
の旗
のアイコンをクリックするので、ここでインストラクターにあいさつをさせよう。同時に、カウントやスコアを0にして、探検ウォッチがスクラッチと接続
できているかを確認させるようにする。
「カウント」や「スコア」、「最初に揺
さぶられた」は「変数
」カテゴリーで新しく変数をつくっている。セリフの部分は「見た目」カテゴリーの「“こんにちは!”と“2”秒言う」ブロックなどを使っているよ。
1.2 動きを説明して、練習をする
次のコードは長いけど、エクササイズの前にインストラクターが動きの説明をする準備
部分だ。探検ウォッチを揺さぶることで、micro:bitとスクラッチの接続が確認できたら実行される。変数の「最初に揺さぶられた」を使って、初回のみmicro:bitが揺さぶられたイベントに反応するようにしている。
micro:bitとスクラッチの接続の確認ができたら、インストラクターが動きの説明をする。「見た目」カテゴリーの「コスチュームを“max-d”にする」ブロックを使って、セリフに合わせてコスチュームを変更
するのを2回繰
り返
す。「音」カテゴリーの「“basketball bounce”の音を鳴らす」ブロックを使って、音も流しているよ(①)。
それが終わったら、今度はプレイヤーが練習
するよ。ここで前回つくった、micro:bitでうでの動きを検知して、コスチュームが変わるプログラムを使っているよ(②)。
1.3 練習が終わったらスタートボタンを表示させる
何回か練習をして、もう大丈夫と思ったら「Max」のスプライトをクリックしていったんプログラムを止めるよ。
「イベント」カテゴリーの「このスプライトが押
されたとき」ブロックを使う。「制御
」カテゴリーの「すべてを止める」ブロックを「スプライトの他
のスクリプトを止める」にすると、今まで実行されていたスクリプト(コード)が止まるぞ(③)。
「イベント」カテゴリーの「“スタートボタン表示”を送る」ブロックを使って、スタートボタンをステージに表示させるメッセージを「Button2」というスプライトに送っている。「Button2」のコードは後で解説するね。
1.4 エクササイズゲームを始める
スタートボタンが押されたら送られてくる「ゲームスタート」のメッセージを「イベント」カテゴリーの「“ゲームスタート”を受け取ったとき」ブロックで受け取る(④)。インストラクターはカウントをして、スタートの合図
をするよ(⑤)。
ここで「飛ぶよ」というメッセージを「Clouds」というスプライトに送っている。「Clouds」のコードについても後で説明するよ。
その後のエクササイズのコードは、「1.2 動きを説明して、練習をする」と同じだ(⑥)。
1.5 ゲームオーバーになったら結果を示す
「ゲームオーバー」のメッセージを「スプライト1」(ネコ)から受け取ったら、その結果
をいうようにするよ。手をたたく動きをした回数(カウント)については、「演算
」カテゴリーの「“apple”と“banana”」ブロックを使っていうようにしている(⑦)。
「スコア」については、このスプライトでは実は変数「スコア」の値を、小数点
第1位までの数値にして表示しているだけだ(⑧)。変数「スコア」を算出
するプログラムは「Clouds」というスプライトにある。これは後で説明するね。
これで一通り終了だ。もう一度チャレンジしたいプレイヤーのために、「下のスタートボタンでもう一度チャレンジよ」というよ。
2 スタートボタンのコード
「スタートボタン」は、「スプライトを選ぶ」から「Button2」を読み込んで、「コスチューム」タブで「START」という文字を入れているよ。
最初は見えない状態にするので、「緑の旗が押されたとき」には「隠
す」けれど、「Max」のスプライトから「スタートボタンを表示」というメッセージを受け取ると、ステージに表示されるようにする。
スタートボタンがクリックされたら、「Max」と「スプライト1」(ネコ)に「ゲームスタート」のメッセージを送るよ。
3 ネコのコード
ネコ(スプライト1)は、「緑の旗が押されたとき」はステージ上での位置
が指定
されている。位置の指定は「動き」カテゴリーの「x座標
を“ ”、y座標を“ ”」ブロックを使っているよ。
「Button2」から「ゲームスタート」のメッセージを受け取ると、スタート位置に移動する(⑨)。このは、インストラクターのカウントが終わるとエクササイズが始まる。うでを動かしたことによるmicro:bitの傾きを検知すると、ネコの高さ(y座標)を変えて、コスチュームも変えている(⑩)。ネコが飛び上がるきっかけをつくっている。
その後は、うでの運動を続けることで、なるべくネコの高度
を維持
するようにしている。なお、「落ちる速さ」は「変数」カテゴリーで新しい変数としてつくるよ。
そして、「ゲームスタート」のメッセージを受け取ったときに、もう1つのスクリプトも動きだす。ネコがずっと落下
し続けるプログラムだ。「“ゲームスタート”を受け取ったとき」ブロックをもう1つ使って、となりに組み立てよう。y座標が-170以下になると、「ゲームオーバー」のメッセージを送って、スプライトの他のスクリプトを止めている。
なお、飛んでいるネコは、「Cat Flying-a」というコスチュームを使っているよ。コスチュームタブで「コスチュームを選ぶ」をクリックして、表示されるライブラリーから選ぼう。
4 雲のコード
ステージ上にふわふわ浮いている雲
はただの背景
に見えるけど、実はスコアを算出
するプログラムはこのスプライトでつくっている。ここで使っているスプライトは「Clouds」だ。
雲は、「緑の旗が押されたとき」は表示されていないけど、「Max」から「ゲームスタート」のメッセージを受けとったら表示されるようになっている。このとき、「スコア」を0にしている。
また、ゲームがスタートして、ネコが飛び始めると「Max」から「飛ぶよ」というメッセージが送られてくる。このメッセージを受け取ると雲は右から左に動きはじめるよ。
実は、ネコが落ちてゲームオーバーになるまでの雲の移動
距離を積算した結果を、ネコの飛行
距離として「スコア」にしている(⑪)。ネコは上下に動くけど左右には動かない。雲を動かすことで移動しているように見せているので、飛行距離の計算
も雲の移動距離を元にしている。ちなみに、ネコの高度(y座標)によって、雲の移動距離も変えているよ(⑫)。
5 背景のコード
背景は、「背景を選ぶ」で「Blue Sky2」を読み込んでいるよ。
実はここにもプログラミングしていて、ゲームのBGMを流している。受け取るメッセージによってBGMも変えているんだ。
音を読み込むには「音」タブに切り替えて「音を選ぶ」から音楽を探そう。
今回は、Dance Snare Beat、Kick Back、Medieval2の音を選んだぞ。カテゴリでループを選ぶと見つけやすくなる。
これでエクササイズゲームが完成したぞ! プログラムを保存するのを忘れないでね。
今回はいろいろなプログラムをしたので、ちょっと大変だったかな。ほかにもスプライトを追加して、ゲームの要素
を増やしてもいいし、エクササイズの部分をつくりこんで他の動きをできるようにするのもいいかもしれない。
最初にちょっとお知らせしたけど、今回つくった「探検エクササイズチャレンジ」のプログラムをスクラッチ公式サイトで公開しているよ。
とりあえず遊んでみてもいいし、このプログラムを改造してもっと遊びやすいゲームにしてくれてもいい。オリジナルの探検エクササイズゲームをつくってもいいね。みんなもいろいろ挑戦してみてね!
(文/倉本大資)