2009年12月23日

Rubyの勉強20(脱出ゲームを作る1)

vrubyの勉強のために今回は脱出ゲームを作ってみたいと思います。

単純にゲームをつくるだけなら他にもっと良いゲーム用のライブラリなどがあると思いますが
わざと……というよりそんなにいっぺんにいろいろ覚えられないからというのが本音だったりします(^-^;)

そのうちに本格的なゲーム用ライブラリとかも使えるようになりたいです。

弱気な前置きは脇へ置いて脱出ゲームについてです。

今は「脱出ゲーム」という呼び方が主流みたいですが大昔は確か別な名前で知られていたと思います。
たしか「ミステリーハウス」とかだったんじゃないでしょうか。
そんな感じのタイトルの教本を片手に富士通ベーシックと格闘して挫折したのが人生初のプログラミング体験でした。

それからずっと自分にはむいてないんだなと諦めてました。
rubyに出会うまでのことです。

そんな下手な人間でもとにかく実際に動かせるソフトが簡単に作れるのは嬉しいことだなと思ってます。

なんか安っぽい通販広告の文言みたいになっちゃいましたが話を先に進めましょう。

今回考えたいのは主に「画像」と「音」の扱いです。

画像はいままでにも散々扱ってきました。
vrubyではbmp(ビットマップ)画像が扱えます。
今回のプログラムではシーン(アイテムを見つけたなど)にあわせて紙芝居のように画像を切り換えていきたいと思ってます。

なのでこんな感じで数枚の絵を用意します。

dg1.jpg

ところで……

dg3.jpg

これらを単純にフォルダとかに格納してそこから読み込むといういままでのやり方だと問題が生じます。

プレーヤーがゲームをする前にフォルダの中を覗いて画像を閲覧していったら……
ほとんど仕掛けがばれてしまいます。

それを防ぐにはどうしたらいいでしょうか。

とりあえず二通りの方法を考えました。

ひとつは画像を文字列に変換してプログラムに埋め込む方法です。
これは公式サイトの「使い方」の最後(6-c)でも「ビットマップのスクリプトへの埋め込み」としてやり方が説明されています。

bmp1 = SWin::Bitmap.loadFile("koma1.bmp")
@bmp = bmp1.dumpString

上の一行目は画像ファイルを読み込んで変数bmp1に代入しているだけ(通常の読み込み)です。
二行目が文字列への変換です。ここでは変換したものを@bmpに代入してます。

下に示すのは自作のプログラムの画面です。
これは画像を読み込んで文字列に変換するだけのもので
実際にどれくらいの文字数になるのか知りたくて作りました。

henkan1.jpg
(画面の見本です。動きません)

ちなみに小さな画像でもかなりの文字数になります。
そしてそれを試しにメモにコピペして保存し、プロパティでファイルサイズを調べてみましたが
元の画像とほぼ同じでした。軽くなるとかってことは無いようです。

文字列にしたものを画像に戻すときは

bmp1 = SWin::Bitmap.loadString(@bmp)

などとします。

さて、もうひとつの方法ですが
これは単純に使用する画像を読み込んだものを配列などでひとまとめにしておき、
Marshalモジュールというものを使って簡単には閲覧できないセーブファイルにあらかじめ変換しておくというものです。

なんですが長くなったんで続きは次回にしたいと思います。

今回もどこか間違ってたら暖かいツッコミをお願いいたします。


人気ブログランキングに参加してます。
ポチッ!としてくださると嬉しいです。
にほんブログ村 IT技術ブログ プログラム・プログラマへ
にほんブログ村

 
posted by Hol_nice at 22:08| Comment(0) | TrackBack(0) | プログラム | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。