提供: Japanese Scratch-Wiki

2019年7月14日 (日) 17:21時点におけるTan-10 (トーク | 投稿記録)による版 (技術記事コンテスト)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

micro:bitにはたくさんのボタンやセンサーがあるため、応用次第では様々なゲームコントローラーが作成できるが、 ここでは、

  • Aボタン/Bボタンを使用したもの
  • 傾きセンサーを使用したもの
  • 以上2つを組み合わせたもの
  • その他の方法

を紹介する。

共通:micro:bitを使用するために

 Scratchでmicro:bitを使用するには、Scratch Linkをインストールする必要がある。

詳しくは、micro:bitの接続を参照。

方法1:Aボタン/Bボタンを使用したもの

この方法は簡単であるため、初心者にもおすすめする。

スプライトを動かす

 動かそうとするスプライト(例:Scratch Cat)に、次のようにプログラムする:

ボタン(A v)が押されたとき::hat microbit
x座標を(-10)ずつ変える

ボタン(B v)が押されたとき::hat microbit
x座標を(10)ずつ変える

もしくは、

@greenFlagがクリックされたとき//こうすると、ボタンを長押しした分だけ移動するようになる。
ずっと
もし <ボタン(A v)が押された ::microbit> なら
x座標を(-10)ずつ変える
end
もし <ボタン(B v)が押された ::microbit> なら
x座標を(10)ずつ変える
end
end

これだけでも、『Aボタンを押したら左に動く』、『Bボタンを押したら右に動く』という最低限の動きをするゲームコントローラーが完成した。これを応用すれば、これから紹介する『背景を動かす』ことも簡単である。

背景を動かす

 スプライトの位置を動かさずに、スプライトが動いているように見せる場合は、この方法が便利である。

動かそうとする背景(スプライトとして作成する)に、次のようにプログラムする:

ボタン(A v)が押されたとき::hat microbit
x座標を(10)ずつ変える

ボタン(B v)が押されたとき::hat microbit
x座標を(-10)ずつ変える

もしくは、

@greenFlagがクリックされたとき
ずっと
もし <ボタン(A v)が押された::microbit> なら
x座標を(10)ずつ変える
end
もし <ボタン(B v)が押された::microbit> なら
x座標を(-10)ずつ変える
end
end

すると、『Aボタンが押されたとき、背景を後ろに動かし、スプライトが動いて見える』ことになる。

方法2:傾きセンサーを使用したもの

 micro:bitには『加速度センサー』が付いており、Scratchではこれを使い、傾きや動きの有無、振動、ジャンプなどを検知できる。

ここでは、空中に浮かんでいるスプライト(例:『Bat』)を動かすとして、プログラムを紹介する。

スプライトを上下左右に動かす

 例えば、次のようにプログラムする:

@greenFlagがクリックされたとき
ずっと
x座標を(((右 v)方向の傾き::microbit)* (2))にする//2倍にすることで、ステージ全体を移動できるようになる。
y座標を(((前 v)方向の傾き::microbit)* (2))にする//上と同じ。2倍以外でも良い
end

 こうすることで、『micro:bitを地面に対して平行に持った時、ステージのほぼ中央』に、『手前に傾けるとステージの下の方』に動かされるようになる。

方法3:以上2つを組み合わせたもの

 『方法1』と『方法2』を組み合わせると、もっとゲームコントローラーらしくなる。

宇宙防衛ゲームを作る

 例として、『宇宙防衛ゲーム』を作ることにする。

まず、『宇宙船』『弾』『敵』という名前のスプライトを用意する。

次に、宇宙船をプログラムする。今回は、『micro:bitを傾けたらステージ上を移動する』、『Aボタンを押すと弾を発射する』ようにする。

ステージ上を移動するプログラム

@greenFlagがクリックされたとき
ずっと
x座標を(((右 v)方向の傾き::microbit)* (2))にする
y座標を(((前 v)方向の傾き::microbit)* (2))にする
end

Aボタンで弾を発射するプログラム

@greenFlagがクリックされたとき
ずっと
もし<ボタン(A v)が押された::microbit>なら
(0.5)秒待つ//連射を防止するためのもの。なくても良い
[弾が発射された v]を送る
end
end

続いて、弾をプログラムする。

弾を発射するプログラム

[弾が発射された v]を受け取ったとき
(宇宙船 v)へ行く
表示する
(自分自身 v)のクローンを作る

クローンされたとき
表示する
(Pew v)の音を鳴らす
(1)秒待つ
このクローンを削除する

 最後に、弾がぶつかったかどうか判定するプログラムを敵に作る。

敵移動プログラム

@greenFlagがクリックされたとき
ずっと
((1)から(4)までの乱数)秒待つ
(どこかの場所 v)へ行く
end

敵と弾の判定プログラム

@greenFlagがクリックされたとき
ずっと
もし<(弾 v)に触れた>なら
[ゲームクリア!]と(5)秒言う
[すべて v]を止める
end
end

これで、一連の流れは終了である。

その他の方法

 現在micro:bit拡張機能のブロックは10種類あり、ここまでで紹介したもの以外のゲームコントローラーが作成できる。

例えば、

  • 『動いたとき』と使って、いわゆる『爆弾ゲーム』を作成する。
  • 『ピンがつながったとき』を使って、複数の入力に対応させる。

など、様々なことができる。

色々なアレンジをして、独自のゲームコントローラーを作成してみよう。