◆◆ LAST UPDATE 2004.07.26

■ 第二十一夜 変数について

[MXNovel INDEX] [戻る] [次へ]

■ 第二十一夜 変数について

エムノベファンの皆様、こんばんは。 MTL研究室の桜花です。
今夜は「変数」について、説明いたします♪

■ ところで、変数ってわかりますか?


プログラマ諸氏の方には・・・
バカにするな〜!!って怒られそうですが、

この講座の読者は、必ずしもプログラマな方ばかりではありません。

というより、プログラマさんなら・・・
エムノベを使わずに、自ら自作するとは思いますが^^;

そんなわけで、プログラマ諸氏の方は、退屈する内容かもしれませんので、適当に読み飛ばしちゃってください。

では、本講座のはじまり、はじまり!!
それでは、いつものように、スクリプトファイルを開いて、312行目を注目してみましょう。


312行 :dim r = -1                             ; 変数r に -1 をセットする。
313行 :menu r 音楽CDを聴きますか?          ; メニュー開始
314行 :● 1曲目を聴く。                     ; メニューテキスト1(r = 1)
315行 :● 今、手元に音楽CDがない。         ; メニューテキスト2(r = 2)
316行 :endmenu                                ; メニュー終了
スクリプトは前夜と同じままです。


■ そもそも、変数で一番、重要な機能って何でしょう?

それは、変数ごと(ある入れ物)に、任意の値を保存することだと思います。


「へ〜。そうなんだ(〜〜)。。。でもさ。。。それが一体なんなのよ?」
・・・って反論がありそうですね?


あははは。。。(^^;(おーと失礼。)


では、おもいっきり具体的な例。。。
そう。。。探偵ゲームで考えてみましょう。


[ストーリー]
主人公「探偵A」は、「容疑者B」を犯人と推測しているが、証拠がない。
そのため、未だに犯人とは断定できず、逮捕できない状況である。

こんな状況を考えてみましょう。(おもいきっし、べたやねん)


この場合、犯行に使った「ピストル(凶器)」と犯人の指紋?などが、逮捕するのに必要な証拠になります。
これをプログラムしたいわけです。

あなたなら、どうします??

私なら、これを解決するために、変数を使います。

これらの情報を、以下のように、変数に分類して格納します。

             変数名         値(1:真)   値(0:偽)
−+−−−−−−−−−−+−−−−−−−−+−−−−−−−−−+−−−−−−−
1)ピストル(凶器)  | KENJYU  | 発見(1)    | 未発見(0)
2)指紋検証      | SHIMON  | 指紋一致(1)  | 不一致(0)

となります。

では、条件式を考えてみます。

◆ 逮捕条件:

1) ピストルは発見していて、且つ、指紋検証で「容疑者B」と一致した。
   =>逮捕する。

◆ 逮捕不成立条件:

1) ピストルは発見していない。
   =>捜査する。

2) ピストルは発見している。 指紋検証で「容疑者B」と一致しない。
   =>別の容疑者が犯人?

といったケースが考えられます。

これを、スクリプトで書くと、こんな感じになります。

if KENJYU == 1 then
  if SHIMON == 1 then
     容疑者Bを逮捕する処理。
  else
     容疑者Bではなく、別の容疑者が犯人。
  endif
else
  凶器が見つかっていない処理をする。
endif
ちょっと、プログラマぽい発想ですが、わかりましたか?

■ ストーリーの分岐は・・・
アドベンチャーゲームにとって、とっても重要な機能です。


プログラムに不慣れな方は、試行錯誤になるかと思いますが、
自作ゲームをつくるためです。。。覚えちゃってください!!


◆ 変数の定義

dim 変数名 = 値

です。

値には、数値のみ(マイナス値もセット可能)、指定できます。

◆ 変数の最大定義数
エムノベ(Ver 0.05)では、最大で128個まで、変数定義できます。

◆ 変数のスコープ範囲

変数のスコープ(有効)範囲は、通常の場合、定義した後の行から有効になりますが、
GOTO文などのジャンプ命令によっては、必ずしもそうとは限りません。
(インタープリターの宿命かも?)

よって、GOTO文などの影響を受けたくない場合は、
スクリプトの先頭で宣言しておくことをお勧めします。

◆ その他
変数の二重定義は認めていません。
スクリプトエラーになりますので注意してください。

では、いつものように、コマンド表にまとめます。

■ dimコマンド
項目 内容
分類 変数定義コマンド
MXNovel エンジン Ver 0.04
機能 変数を定義して、初期値をセットします。
構文 dim 変数名 = 値
パラメータ パラメータ1:  変数名
パラメータ2:  = (固定)
パラメータ3:  初期値



■ 編集後記

今夜は、変数について、説明いたしました。
変数は、メニューの選択した項目を保存したり、ストーリー上の分岐条件などに使います。
変数をうまく使いこなせれば、複雑な分岐のあるストーリーがつくることができますよ♪
さて、次夜ですが、この講座でも何度か登場している、条件分岐について説明したいと思います。
では、今宵はこのあたりで・・・しーゆ♪



[MXNovel INDEX] [戻る] [次へ]
◆◆ LAST UPDATE 2004.07.26