スクラッチ×micro:bitでエクササイズゲームをつくろう④

 micro:bit(マイクロビット)は手のひらサイズの小さなコンピューター。いろいろな機能
(きのう)

(そな)
わっていて、自分でプログラミングをすることができるよ。ブログラミングは「MakeCode(メイクコード) for micro:bit」を使えば、初心者でもかんたんにできるんだ。

 『子供の科学』本誌
(ほんし)
連載
(れんさい)
「micro:bitでレッツプログラミング!」では、micro:bitを使った「探検
(たんけん)
ウォッチ」というツールを使って、その機能
(きのう)
をプログラミングでつくったけれど、この連載が「スタプロ」にお引っ越し。Web連載でも、探検ウォッチのいろいろな機能をプログラミングでつくっていくぞ!

 これまでの本誌連載のバックナンバーは、「micro:bitでレッツプログラミング!」旧サイトで公開しているよ。本誌の連載を見たことがないという人は、まずこちらを見てみてね。Web連載は、本誌の連載の続きになっているから、基本的なことがわからなくなったら本誌のバックナンバーを
()
り返ろう。

 今回は探検ウォッチと、初心者向けプログラミング言語の定番
(ていばん)
、Scratch(スクラッチ)のプログラムを連携
(れんけい)
させて、おうちの中で楽しめるゲームをつくっていくぞ。

 さて、前回までで、エクササイズゲームの中心になるプログラムをつくったね。右うでに探検ウォッチをつけて、両うでを左右に広げた後、頭の上で両手を合わせる運動をすることで、うでの動きを感知
かんち
して、カウントするプログラムだ。それに、一緒
いっしょ
に運動をしてくれるインストラクターもつくった。

 もちろん、前回まででもエクササイズ用のプログラムとしては使うことができるけど、ゲームらしくつくりこみたいね。そこで、スプライトなども追加
ついか
して、次のようなルールのゲームにすることにしたよ。

【ゲームのルール】
頭の上で大きく手拍子をして、ネコを遠くまで飛ばそう。
両手を開いて頭の上で手を打つ動作を繰り返すと、ネコにパワーを送ることができる。リズムよく繰り返さないとネコは落ちてしまう。
墜落
ついらく
したらゲームオーバーだ。

【プログラムの動作】
① ゲームがスタートしたら、両うでを水平
すいへい
にしたあと、頭の上で両手を合わせるポーズでネコが
び始める。
② そのあと、ネコは

つづ
けるので、落ちるのを
おく
らせるためにうでの運動を続ける。
③ ネコが下に落ちたらゲームオーバーで、インストラクターがカウント(うでを動かした回数)と、スコア(ネコが飛んだ距離
きょり
)を教えてくれる。

 プログラムとしてだいぶ複雑
ふくざつ
になるので、完成
かんせい
したコードについて説明
せつめい
するよ。それを参考
さんこう
に好きな機能を追加
ついか
してみてね。今回のプログラムは公開しているので、この記事の一番最後のURLもチェックしてね!

 まずは、スクラッチ公式サイトにアクセスして、「作る」をクリックしてプロジェクトエディターを開こう。前回保存した探検エクササイズのプログラムを読み込むよ。micro:bitとスクラッチをつなぐのも忘れずに。

1 インストラクターのコード

 前回は、インストラクターが「探検エクササイズチャレンジにようこそ!」とあいさつするコードはつくった。インストラクターは、ゲームの進め方や動きの説明、終わりのあいさつといったゲーム全体の進行を担当してもらうようにした。インストラクターのコードをつくるときは「Max」のスプライトを選択
せんたく
してね。

「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」という文字を入れているよ。

スタートボタンは「Button2」のスプライトを使う
「コスチューム」タブで編集する画面
「コスチューム」タブで編集

 最初は見えない状態にするので、「緑の旗が押されたとき」には「
かく
す」けれど、「Max」のスプライトから「スタートボタンを表示」というメッセージを受け取ると、ステージに表示されるようにする。

緑の旗が押されたときはスタートボタンは隠れているが、「スタートボタンを表示」というメッセージを受け取ったら表示されるコード

 スタートボタンがクリックされたら、「Max」と「スプライト1」(ネコ)に「ゲームスタート」のメッセージを送るよ。

このスプライトが押されると「ゲームスタート」のメッセージを送るコード

3 ネコのコード

 ネコ(スプライト1)は、「緑の旗が押されたとき」はステージ上での位置
いち
指定
してい
されている。位置の指定は「動き」カテゴリーの「x座標
ざひょう
を“ ”、y座標を“ ”」ブロックを使っているよ。

スプライト1を選択する
ネコは「スプライト1」を使う
「緑の旗が押されたとき」の位置を指定したコード

 「Button2」から「ゲームスタート」のメッセージを受け取ると、スタート位置に移動する(⑨)。このは、インストラクターのカウントが終わるとエクササイズが始まる。うでを動かしたことによるmicro:bitの傾きを検知すると、ネコの高さ(y座標)を変えて、コスチュームも変えている(⑩)。ネコが飛び上がるきっかけをつくっている。

 その後は、うでの運動を続けることで、なるべくネコの高度
こうど
維持
いじ
するようにしている。なお、「落ちる速さ」は「変数」カテゴリーで新しい変数としてつくるよ。

エクササイズゲームのプログラム。うでの動きに合わせてネコの位置が変化する

 そして、「ゲームスタート」のメッセージを受け取ったときに、もう1つのスクリプトも動きだす。ネコがずっと落下
らっか
し続けるプログラムだ。「“ゲームスタート”を受け取ったとき」ブロックをもう1つ使って、となりに組み立てよう。y座標が-170以下になると、「ゲームオーバー」のメッセージを送って、スプライトの他のスクリプトを止めている。

ゲーム中のネコの動きのプログラム

 なお、飛んでいるネコは、「Cat Flying-a」というコスチュームを使っているよ。コスチュームタブで「コスチュームを選ぶ」をクリックして、表示されるライブラリーから選ぼう。

飛んでいるネコはコスチュームで「Cat Flying-a」を選んでいる

4 雲のコード

 ステージ上にふわふわ浮いている
くも
はただの背景
はいけい
に見えるけど、実はスコアを算出
さんしゅつ
するプログラムはこのスプライトでつくっている。ここで使っているスプライトは「Clouds」だ。

 雲は、「緑の旗が押されたとき」は表示されていないけど、「Max」から「ゲームスタート」のメッセージを受けとったら表示されるようになっている。このとき、「スコア」を0にしている。

「Clouds」のスプライトは「緑の旗が押されたとき」は隠されているが、「ゲームスタート」のメッセージを受け取ったら表示する

 また、ゲームがスタートして、ネコが飛び始めると「Max」から「飛ぶよ」というメッセージが送られてくる。このメッセージを受け取ると雲は右から左に動きはじめるよ。

 実は、ネコが落ちてゲームオーバーになるまでの雲の移動
いどう
距離を積算した結果を、ネコの飛行
ひこう
距離として「スコア」にしている(⑪)。ネコは上下に動くけど左右には動かない。雲を動かすことで移動しているように見せているので、飛行距離の計算
けいさん
も雲の移動距離を元にしている。ちなみに、ネコの高度(y座標)によって、雲の移動距離も変えているよ(⑫)。

雲の移動距離を積算してスコアにするプログラム

5  背景のコード

 背景は、「背景を選ぶ」で「Blue Sky2」を読み込んでいるよ。

背景は「Blue Sky2」を使用

 実はここにもプログラミングしていて、ゲームのBGMを流している。受け取るメッセージによってBGMも変えているんだ。

背景のプログラム

 音を読み込むには「音」タブに切り替えて「音を選ぶ」から音楽を探そう。

 今回は、Dance Snare Beat、Kick Back、Medieval2の音を選んだぞ。カテゴリでループを選ぶと見つけやすくなる。

 これでエクササイズゲームが完成したぞ! プログラムを保存するのを忘れないでね。

 今回はいろいろなプログラムをしたので、ちょっと大変だったかな。ほかにもスプライトを追加して、ゲームの要素
ようそ
を増やしてもいいし、エクササイズの部分をつくりこんで他の動きをできるようにするのもいいかもしれない。
 最初にちょっとお知らせしたけど、今回つくった「探検エクササイズチャレンジ」のプログラムをスクラッチ公式サイトで公開しているよ。

https://scratch.mit.edu/projects/407504533

 とりあえず遊んでみてもいいし、このプログラムを改造してもっと遊びやすいゲームにしてくれてもいい。オリジナルの探検エクササイズゲームをつくってもいいね。みんなもいろいろ挑戦してみてね!

(文/倉本大資)


KoKa Shop!
KoKa micro:bit探検ウォッチキット
プログラミング教材
micro:bit

KoKa micro:bit探検ウォッチキット
\7,700- 税込み

最新情報をチェックしよう!