倉庫番というパズルが昔流行りました.荷物を通路上を押すことしかできなくて,それを目的のところまで運ぶというルールです.荷物を引っ張ることはできないので,壁に押し付けてしまうと壁にくっついたままですし,角に入れてしまうと絶対に動かせません.
このパズルはビスケットではたった10個のメガネで作ることができるのです.
作り方の手順ができたのでご紹介します.
まずは設定で,一番大きなマス目の方眼紙にして,動作速度も一番速くします.
通路の絵は,半透明の色でマス目を塗りつぶすように描きます(色が半透明のなのは重要です).
もう一つ別の絵を描きます.こちらは,通路に人がいる状態の絵です.
最初に通路と同じ色でマス目を塗りつぶして,その上に人を描きます.
この2種類の部品ができました.
これらの絵をこのように並べます.
ここで,
このようなメガネをつくると,人は通路の上を歩き出します.人の左に通路があると,人と通路が入れ替わるというメガネです.人は最後まで進んだら止まります.
このように「タッチ」を通路の上に置くと,人の左に通路があって,通路をタッチすると,人と通路が入れ替わるということになります.これで自動的に進むのではなく,タッチした時だけ進む,ということになります.
縦の通路も作って,4方向に動くメガネを作りましょう.人が通路の上を自由自在に歩けるようになったでしょうか.
ここで,通路の絵を半透明にしたので,絵が重なっていたらすぐわかるようになっています.また,メガネが間違っていると,動かすと絵が変になるのですぐにわかると思います.
これだけで,2次元のゲームの基本はできました.人の代わりに別のキャラクターも描いて,そっちは自動的に動くようにすれば,パックマンとかボンバーマンといったゲームが作れると思います.ポイントは,キャラクターも絵を描くときは,下地に通路の部分も描くということです.これでプログラムが圧倒的に簡単になります.
ここからが倉庫番の部分.
まずは,運ぶ荷物の絵を描きます.
これも下地に通路の絵が半透明であります.
荷物を通路に置く時には,空の通路の絵をどけて置かなければなりません.空の通路と荷物を同じ場所に重ねるのではありません.重ねると通路の色が濃くなるのでわかると思います.
つぎに,荷物を押すメガネです.
絵を3つ,空の通路,荷物,人の順に並んだ時,荷物をタッチすると,荷物,人,空の通路に置き換わる,とします.これで荷物の向こう側に何もない時,荷物を押すことができて,人がいたところが新たに空白になる,という動きができます.
同じように,他の方向も作ります.
ゲームの本番を作る前に,いろんな方向にちゃんと押せるかどうか試してみてください.
さて,荷物はゴールがあって,すべての荷物をゴールに置くことができればパズルクリアです.
新たに必要な部品はこの2つです.このとき星を描く時に,
のようにマス目をはみ出すようにしています.
こちらがゴールを示す点です.
荷物がゴールまで持っていくとチカチカ光ります.
まず,荷物とゴールが重なったら,荷物と星になる.星はゴールになる.の2つのメガネです.
ゴールは通路につけられたマークのようなもので,人も自由にゴールの上を通過できますし,荷物も置けます.それから一度ゴールに置いた荷物ももう一度動かすことも,パズルの問題によっては必要になります.それで,他の3つの絵と違って,通路の絵を下地にはしていません.
もう一つ,星からゴールに戻るメガネには荷物は入っていません.これは,一度ゴールに置いた荷物をもう一度動かした時,ゴールの絵の時に動かすのならよいのですが,星の絵のときに動かしてしまうと,星の下には荷物はなくなるのでゴールの絵に戻れなくなるのを防ぐためです.僕は最初これを間違えました.
ためしにこんな問題でテストしました.ぐるっと回って反対側から荷物を押します.
ゲームの基本はここまででできてしまうので,ここからは2通りの方向に遊べます.
一つは倉庫番として面白い(難しい)問題を考えるということ.解けるけど手数が多いというのが面白い問題になります.
もう一つは倉庫番じゃない全然違うゲームにしてしまうということ.敵を登場させてもいいですし,敵を爆弾で倒すのでもいいですね.荷物を片付けるのではなく,荷物をどけて人がゴールに向かうだけというゲームもありです.人が二人以上出てくるというのも簡単にできますが,それは本物の倉庫番でもあったように思います.
人間は2048のように倍々で難しくなるゲームが好きなので,荷物に1,2,4,8の数字が書かれていて,同じ数字の荷物をつなげると足されるってのもゲームとしてはありそうですね.