リアルタイム反射ゲーム

ボールが一定間隔で発射されて,星を消してゆくゲームの原型を作りました.ビスケットでプログラムを作る上でいくつか重要なテクニックが入っているのでご紹介します.

ゲームの最初の配置はこんな感じ.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-20-19-52-42

ボールは本体と影(小さい丸)の2つの部品でできています.この二つの部品がどのように置かれているかで,飛ぶ方向が変わります.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-20-19-48-16

斜めの板が置かれていて,ボールがそこに当たると飛ぶ方向が変わります.斜めの板は2種類で,ボールが4方向に飛びますから,反射のめがねは8つです.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-20-19-48-25 %e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-20-19-48-33

ボールを一定間隔で発射する発射台です.間隔を数えるために2進法のテクニックが使われています.火を1つ生成する(1つ目のめがね).火が2つ重なったら,それが消えて隣に一つ火ができる(2つ目のめがね).火が3つ並んだら全部消えてボールを左に発射(3つ目のめがね)3つ並ぶには8回生成されますから,8ステップに1回ボールが発射されます.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-20-19-48-42

この仕組みからいろいろなゲームに繋げられますが,ここでは斜めの板とターゲットである星があらかじめ配置されていて,板をタッチすると角度が切り替わるようにし,星をすべて消す,というルールにしました.
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-20-19-48-50

このままだとこのゲームには負けがないので,ボールが3発しか出ないとか,障害物に当てたら負けとかします.

ボールが2つの部品で作られているというところがこの作品のミソですが,2つの部品ではなく飛ぶ方向を示した4つの絵(左に進む絵,上に進む絵,...)でもほとんど同じものがつくれます.反射の部分はほとんど変わりません.ところが,「星に当たる」というめがねで,こちらの方法では1つのめがねですみますが,4つの絵で作った場合は4つのめがねが必要ということになります.この先,障害物とかより高い得点といった,相手の種類が増えた場合にこのテクニックが際立ってきます.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-20-19-47-59

ゲームはここです.

改良して,ゲームらしくしました.

最初はこのように配置しています.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-21-20-32-50

この2種類の?はそれぞれ壁,空白,星(得点),だめ(みどりの丸)にかわります.それぞれ1/3のランダムになりますが,同じメガネを複数用意することで,確率を変えることが出来ます.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-21-20-33-51

実行すると,たとえば次のようになります.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-21-20-35-44

毎回違うパターンになるので,難しさの度合いもかわります.

斜めの壁だけだとすべての星をとれないことが多かったため,まっすぐ進むというのも用意しました.ちょっと紛らわしいですが,3回タッチすると元に戻るようになってます.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-21-20-34-30

星に当たるとダメに変わるので,ボールがそのコースをそのままたどらないように,コースを変えなければなりません.そこが中々難しい.

改良はこちらです.

さらに改良しました.というか全く別のものですが,作曲マシンに改造しました.

壁に反射するパターンは8通りありますので,それぞれに適当に音を入れます.1オクターブは7音なので,一つには適当に2音入れて和音にしましたが,半音階や1オクターブを超えた音でもよいかもしれません.ゲームオーバーなどが出ると鬱陶しいので,全部削除しました.壁も通り抜けるのは無しにして,最初のバージョンと同じ2状態をタッチで切り替えます.

2つのボールが違う方向から同じ壁にぶつかる場合があります.このとき壁はどちらかのボールに取り合いになって,負けた方は壁をすり抜けてしまいます.ここではこれを回避するために,壁はかならず2つずつ置かれています.反射の判定には1つの壁とだけ行い,タッチで向きが変わるメガネは2つずつ同時にかわります.これで,2つボールが同時にぶつかっても大丈夫です.これでも3つの場合はダメなはずですが,そこまではやっていません.こういうダメなプログラミングテクニックが浸透する前にビスケットの仕様をなんとかすべきですね.

一定間隔でボールが発射され,反射するごとに音がなります.壁を変更しなければ,毎回同じ反射をするので,同じフレーズを繰り返すことになります.コースが一定の長さを越えると,次のボールとのフレーズと重なりどんどん楽しい音楽になって行きます.

タッチして壁の向きをかえるとそこからフレーズが変化します.しかし,前半の部分は同じフレーズが残っているので,いい感じだと思います.
ここ

欠点は,反射と音の対応が固定だと,飽きてしまうということです.何度もやると同じ曲調しか出てきません.ときどき音を入れ替えるのがよいみたいです.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする