見出し画像

拝啓 山下章先生

ちょっとだけプログラミングをかじっているので、そのスキルを使って「アドベンチャーゲーム」を作りたいと思っているのだが、なかなか作り始めることがでない。

その理由は「プログラムがメチャクチャ複雑になりそう」だから。

ボクが作りたいと思っているアドベンチャーゲームは、パソコンがまだ「マイコン」と呼ばれていた時代から存在した「コマンド入力式アドベンチャーゲーム」と呼ばれるもので、

look door
move box
adjust clock(某ゲームのネタバレ)

といった感じで、何かを実行する際に「動詞 + 半角スペース + 名詞」の形でコマンドを入力してゲームが進行するタイプのもの。

有名なゲームだと『デゼニランド』や『ミステリーハウス』といったところだろうか。

これと同じようなゲームを作りたいのだが、そこで大きな問題にぶつかってしまった。

「フラグ管理が膨大になり過ぎてしまう…」( ̄▽ ̄;)

例えば、とある部屋にはドアがあるのみで、そこでプレーヤーはコマンドの入力を求められる。

>>look door
頑丈そうなドアです。ドアは固く閉ざされています。
>>open door
鍵がかかっていて開きません。

このようなやり取りで進めていくことになるゲームなのだが、ドアへのコマンドひとつだけでも、状況(フラグの状態)によって返ってくるメッセージが膨大なものになってしまうやん!!

もし先ほどと同じコマンドを入力したとしても、どこかでドアの鍵を手に入れている状態であれば、

>>open door
ガチャリ…鍵を使ってドアを開けました。

といった展開になるし、すでにドアを開けた状態の場合、

>>look door
ドアは開いています。
>>open door
すでにドアは開いているようです。

といったメッセージが返って来ないとおかしなことになってしまう。

ドア1枚、鍵1つだけで、

・ドアが開いている?閉まっている?
・鍵を持ってる?持っていない?

状況が大きく分岐してしまい、管理がとても大変になってしまう。

もちろんゲームではdoorだけではなく、floorやwall、場合によってはboxやwindow、clockなどが沢山登場することになるし、行動もlookだけでなく、hit、move、dig、get、search、breakなどなど、とんでもないパターンの動きができるようにしておかないと、ゲームとしてとてつもなくつまらないものになってしまう。

フラグ管理の方法には色々なものがあることはわかってるのだけれど…

ハッキリ言おう。

これは、山盛り面倒くさい!!!( ノД`)

誰か簡単でシンプルで楽ちんな方法があったら教えてくださいm(_ _)m

この記事が気に入ったらサポートをしてみませんか?