×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。

ゲームを作ろう! 脱出ゲームその3 謎解きを作ろう


さて、前回まで、脱出ゲームを作っている割にどんな謎解きにするのか全く触れていませんでした。w
今回はそこらへんを作ります。
考えている謎解きはこんな感じです。

・脱出の為のドアは鍵がかかっているので、鍵を見つけ出すことが最終的な目的とする。

・タンスの下の段に、ダイヤル式の錠前の付いた小型金庫が入っている。
ダイヤルをあわせると、小型金庫の中から「遥か底の裏に真相がある」と書かれた紙を発見する。
これを見つけた時点から、ゴミ箱の底の裏を調べられるようになる。
ゴミ箱の底の裏に、鍵がテープで貼り付けてあるというオチ。

・小型金庫を開けるための番号は、部屋右側に飾ってある絵に書いてあるのだが、この絵は図形と数字がデタラメに並んだ抽象画である。

・テレビの下に落ちている紙切れに、「しかくの なかの あかい すうじ」というヒントが書いてある。
絵には、四角形がひとつだけ描かれており、その中の赤い色で描かれた4つの数字を繋げると、金庫を開ける為の番号になる。

という程度の、割と簡単な感じです。
上の謎解きを作るためには、

・ヒント用の絵を作る。
・金庫用のプログラムを作る。

このふたつが必要です。
まず、ヒント用の絵を作りましょう。
部屋右側で絵をクリックした時に、絵を拡大して表示する感じにしたいですね。
Shapesオブジェクトで絵を作り、最初はShapes.HideShapeで隠しておいて、絵を調べた時にShapes.ShowShapeにて表示、調べ終えたら再びShapes.HideShapeで隠す、という方法で行こうと思います。

脱出

……できたけど、なんか縮小版と形が違うなぁ。w
まあいいや。
「しかくの なかの あかい すうじ」は「5609」になります。

次に、金庫開けです。
Controls.AddTextBox(left, top)
でテキストボックスを作り、ここに4桁の数字を入力してもらうようにします(半角数字で入力、という注意書きが必要)。
入力したら「ダイアルを合わせる」というボタンをクリック。
その時に、
Controls.GetTextBoxText(textBoxName)
でテキストボックスの文字列を取得します。
これが「5609」ならば当たり、とすれば良さそうです。

kinkobutton = Controls.AddButton("ダイアルを合わせる", 300, 400)
kinko = Controls.AddTextBox(250, 400)
If Controls.GetTextBoxText(kinko) = "5609" Then
  (金庫が開いた、というメッセージ表示)
EndIf

こんな感じですね。

さて、後はひたすら調べた時のメッセージを作るのみです。
金庫を開けたか開けてないかのフラグも入れる必要があります。
そしてここにきて、アイテム欄に表示するほどのアイテムが存在しないことに気が付きました。w
長いので完成したプログラムはリンク先をどうぞ。

Microsoft Small Basic Program Listing: LVV740

今回のプログラムのポイントをまとめておきます。

今回のプログラムは、

・ボタンを押すことでイベントを進める「Controls.ButtonClicked
・ウィンドウのある場所をクリックすることでイベントを進める「GraphicsWindow.MouseDown

この二つを書き分けていく必要があります。
今までだったら、上から下へ、だいたいそのままの流れでプログラムが動いていました。
ですが、今回は、完成したプログラムを見ると、

「マウスクリックで調べたので、GraphicsWindow.MouseDownで発生するサブルーチン内に、表示するテキストを書く」
「次に表示したいテキストはボタンを押してからだから、Controls.ButtonClickedで発生するサブルーチン内に、表示するテキストを書く」

と、ふたつのサブルーチンを上へ下へとウロウロしているのがわかります。
その上、フラグやら条件やらをあれやこれやと考えなければならないといけない訳で、細かくメモりながら書かないと必ずミスします。w
Small Basicのウィンドウひとつでやりくりするのは大変です。
メモ帳ソフトで下書きしつつプログラムを書いていく方が良いでしょう。
また、Small Basic自体も、表示確認にテスト用プログラムを別途書くのがお勧めです。
今回は背景を書くだけでもかなり手間がかかりますし。




▲TOPへ戻る