概要
GR-ADZUKIをゲームパッドにしてS4Aでゲームを作ろう!加速度センサーをのせてGR-ADZUKIを傾ければ前後左右の動きをPCに送ることができます。
準備
ハードウェア
GR-ADZUKI、USBケーブル(マイクロBタイプ)、加速度センサー(KXSC7-2050)の3つを準備します。
加速度センサーを以下のように、GR-ADZUKIに取り付けてください。取り付ける向きに注意してください。加速度センサーのX, Y, Zと印字されている方が、GR-ADZUKIのA3, A4, A5と合うように取り付けます。
ソフトウェア
ここではS4Aを使用します。まだインストールしていない場合は「Scratch(S4A)で遊ぶ!」を参照してください。


サンプルの読み込み
ボール投げゲームのサンプルをS4Aで読み込みます。
- 以下のリンクをクリックするとダウンロードが始まります。
Ball Playing Game Using S4A (ZIP)
ダウンロード後、S4Aのメニュー「ファイル」→「開く」でball.sbを読み込みます。

以下の通りに読み込まれますので、GR-ADZUKIが認識されたら、緑のフラグを押してみましょう。ゲームが始まります。GR-ADZUKIの照度センサーに指をあてるとボールを投げて、ボードを傾けると猫が移動したりジャンプします。猫の移動速度に応じてボールの速度が変化し、速度が高いほど敵に当たったときの得点が高くなります。

解説
Scratchを使ったゲームは世の中にあふれていますのでGR-ADZUKIの連携部分について少し触れたいと思います。GR-ADZUKIで使用している機能は以下の通りです。
ボールを投げる
GR-ADZUKIに搭載されている照度センサー(Analog2)の値が100より下になったら"THROW"というメッセージをボールスプライトに送ると共にボールが飛んでいるかどうかのフラグを1にします。"THROW"が受け取ったボールスプライトは猫の速度(cat_axとcat_ay)を初速として放物線を描いて飛んでいきます。地面(Y座標-100)まで落ちるか、敵にあたったらボールが飛んでいるかのフラグを0にします。これを繰り返します。

猫を移動する
今回GR-ADZUKIに搭載した3軸加速度センサーのモジュールを猫の移動やジャンプに使っています。3軸は以下のようになります。KXSC7-2050の特性として、加速度が0のときは1.65Vの出力となります。GR-ADZUKIのセンサー値としては最大の3.3V時に1023ですので、その半分の512となります。センサーの感度は0.66V/gです。アナログ値は1Vで約310増加しますので、重力の1gがかかると0.66 * 310 = 204.8増加します。このためボードを水平にしたとき、重力加速度1gが加わるZ軸(Analog5)の値はだいたい512 + 205 = 717になります。
つまり、GR-ADZUKIを完全に水平としたとき、Analog3: 512、Analog4: 512、Analog5: 717となっているということになります。ボードをX軸方向に垂直にするとX軸方向に重力加速度が加わり、Analog3の値が変化します。

猫の横移動にはX軸(Analog3)の値を使用しています。水平のときの512から、変化量を計算し、10で割った整数値を猫の加速度としています。
猫のジャンプにはY軸(Analog4)を使用しています。値が600より大きくなったときにジャンプするというプログラムにしています。

ケースに入れてみよう
今回GR-ADZUKIをゲームパッドのようにしていますが、電子ボードは静電気などで壊れることがあります。直接手で触ることをなるべく防止するため、筆者は以下のように梱包箱にカッターで穴をあけ、USBケーブルが接続できるようにしました。
