メガネ10個で作る倉庫番

倉庫番というパズルが昔流行りました.荷物を通路上を押すことしかできなくて,それを目的のところまで運ぶというルールです.荷物を引っ張ることはできないので,壁に押し付けてしまうと壁にくっついたままですし,角に入れてしまうと絶対に動かせません.

このパズルはビスケットではたった10個のメガネで作ることができるのです.

作り方の手順ができたのでご紹介します.


まずは設定で,一番大きなマス目の方眼紙にして,動作速度も一番速くします.


通路の絵は,半透明の色でマス目を塗りつぶすように描きます(色が半透明のなのは重要です).

もう一つ別の絵を描きます.こちらは,通路に人がいる状態の絵です.

最初に通路と同じ色でマス目を塗りつぶして,その上に人を描きます.


この2種類の部品ができました.


これらの絵をこのように並べます.

ここで,

このようなメガネをつくると,人は通路の上を歩き出します.人の左に通路があると,人と通路が入れ替わるというメガネです.人は最後まで進んだら止まります.


このように「タッチ」を通路の上に置くと,人の左に通路があって,通路をタッチすると,人と通路が入れ替わるということになります.これで自動的に進むのではなく,タッチした時だけ進む,ということになります.


縦の通路も作って,4方向に動くメガネを作りましょう.人が通路の上を自由自在に歩けるようになったでしょうか.

ここで,通路の絵を半透明にしたので,絵が重なっていたらすぐわかるようになっています.また,メガネが間違っていると,動かすと絵が変になるのですぐにわかると思います.

これだけで,2次元のゲームの基本はできました.人の代わりに別のキャラクターも描いて,そっちは自動的に動くようにすれば,パックマンとかボンバーマンといったゲームが作れると思います.ポイントは,キャラクターも絵を描くときは,下地に通路の部分も描くということです.これでプログラムが圧倒的に簡単になります.

ここからが倉庫番の部分.

まずは,運ぶ荷物の絵を描きます.

これも下地に通路の絵が半透明であります.


荷物を通路に置く時には,空の通路の絵をどけて置かなければなりません.空の通路と荷物を同じ場所に重ねるのではありません.重ねると通路の色が濃くなるのでわかると思います.

つぎに,荷物を押すメガネです.

絵を3つ,空の通路,荷物,人の順に並んだ時,荷物をタッチすると,荷物,人,空の通路に置き換わる,とします.これで荷物の向こう側に何もない時,荷物を押すことができて,人がいたところが新たに空白になる,という動きができます.

同じように,他の方向も作ります.

ゲームの本番を作る前に,いろんな方向にちゃんと押せるかどうか試してみてください.

さて,荷物はゴールがあって,すべての荷物をゴールに置くことができればパズルクリアです.


新たに必要な部品はこの2つです.このとき星を描く時に,

のようにマス目をはみ出すようにしています.

こちらがゴールを示す点です.

荷物がゴールまで持っていくとチカチカ光ります.

まず,荷物とゴールが重なったら,荷物と星になる.星はゴールになる.の2つのメガネです.

ゴールは通路につけられたマークのようなもので,人も自由にゴールの上を通過できますし,荷物も置けます.それから一度ゴールに置いた荷物ももう一度動かすことも,パズルの問題によっては必要になります.それで,他の3つの絵と違って,通路の絵を下地にはしていません.

もう一つ,星からゴールに戻るメガネには荷物は入っていません.これは,一度ゴールに置いた荷物をもう一度動かした時,ゴールの絵の時に動かすのならよいのですが,星の絵のときに動かしてしまうと,星の下には荷物はなくなるのでゴールの絵に戻れなくなるのを防ぐためです.僕は最初これを間違えました.


ためしにこんな問題でテストしました.ぐるっと回って反対側から荷物を押します.

ゲームの基本はここまででできてしまうので,ここからは2通りの方向に遊べます.

一つは倉庫番として面白い(難しい)問題を考えるということ.解けるけど手数が多いというのが面白い問題になります.

もう一つは倉庫番じゃない全然違うゲームにしてしまうということ.敵を登場させてもいいですし,敵を爆弾で倒すのでもいいですね.荷物を片付けるのではなく,荷物をどけて人がゴールに向かうだけというゲームもありです.人が二人以上出てくるというのも簡単にできますが,それは本物の倉庫番でもあったように思います.

人間は2048のように倍々で難しくなるゲームが好きなので,荷物に1,2,4,8の数字が書かれていて,同じ数字の荷物をつなげると足されるってのもゲームとしてはありそうですね.

シェアする

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

フォローする