簡単 NScripterの使い方  2010/01/24更新
 ■開発室   ■ダウンロード   ■マニュアル   ■ご意見・ご要望・デバッグ   ■Q&A   ■リンク   ■関連企画 
 □目次  □準備編  □基礎編  □制作編  □グラフィック編  □音楽編

基礎編/第10章

■ 変数の比較 ■
 前章では、変数を用いた演算をマスターしました。
 ここからは、変数の大小を比較する命令を説明していきます。
 変数の比較と、選択肢命令を組み合わせる事によって、ゲーム内容を様々に分岐させる事が可能となります。


■ if文 ■
 変数の内容比較と、それに伴うスクリプトの分岐処理を制御する命令が「 if 」です。
 それでは、早速ifの書式を見てみましょう。

if %money == %price goto *start

 上の命令文では、if を使用して、%money%price の値を比較しています。
 真ん中の == に注目してください。これは、%money%price の値を比較して、中身が同じ(イコール)なら、その後ろの命令(この場合は、goto *start)を実行せよ、という意味になります。
 もし、仮に%money%price の値が異なる場合は、命令は無視され、スクリプトはそのまま下の行にむかって実行されていきます。

 末尾の命令部分には、goto 命令 以外にも、自由に命令を記述する事が出来ます。例えば、ここにend命令が記述されていると、%money%priceの値が一致する時、ウィンドウが閉じゲームは強制的が終了します。
 また、if 直後の比較条件には「 == 」以外にも「 > 」「 < 」「 >= 」「 <= 」を使用できます。

 まとめると、
 if (比較条件) (実行命令)
 上記のような書式となり、「比較条件」部分が満たされた時に、後ろの「実行命令」が処理される、という形になります。

 それでは、これまでの知識を元に、価格( %price)が所持金( %money)を上回るとゲームが強制終了する、という if文 を記述してみましょう。

if %price > %money end

 となります。
 上手く記述できましたか?


■ if をゲームに組み込み ■
 if文 の基本的な文法が理解出来たと思います。
 それでは、実際に if文 を使用してみましょう。

 このスクリプトでは、%count1 と %count2 という2つの変数の内容を比較し、値が一致する時に動作が終了する、という処理を行います。


*define

numalias count1,0
numalias count2,1



game
*start

count1に1を代入します。@
mov %count1,1
count2に5を代入します。
mov %count2,5
\

*check
count1とcount2を比較して、値が同じなら、スクリプトを終了します。@
if %count1 == %count2 goto *stop
一致しませんでした。\

count1に1を加算します。@
add %count1,1
現在のcount1の値は、%count1です。@
現在のcount2の値は、%count2です。\

goto *check

*stop
数値が一致したので終了します。\
end


 実際にスクリプトを動かして、内容を確認してみてください。


■ 選択肢と組み合わせる ■
 これで変数の基本的な使い方を、全てマスター出来ました。
 変数は、選択肢と組み合わせる事によって、ゲームに様々な可能性をもたらします。
 早速、選択肢と変数を組み合わせた、簡単なイベントを実装してみます。

 道に男が座っています。男に話しかければ、アイテムを入手し、無視すればアイテムを入手できません。続いて、川の渡し守との会話が発生します。会話の選択肢とアイテムの所持状況によって結末が変化する、というイベントになります。


*define

numalias item,0



game
*start

道端に男が座っています。@
select
"話しかける",*talk,
"無視する",*walk

*talk
男は、あなたにコインをくれました。@
礼を言って先に進みました。\
mov %item,1
;コインを入手したので%itemに1を代入しました。
goto *river

*walk
男を無視して、先に進みました。\
;コインを入手しなかったので、特に処理は行いません。

*river
しばらく行くと、目の前に大きな川があります。@
渡し守が、話しかけてきます。\

「お前、コインは持っているか?」@
select
"持っている",*coin,
"持っていない",*no_coin

*coin
if %item == 1 goto *event_end
;コインの所持状態を判定し、結末を分岐します。
「嘘はいけないな!」@
あなたはコインを持っていません。@
怒った渡し守に、川に投げ込まれました。\
goto *bad_end

*event_end
「船に乗せてやろう」@
コインを渡し守に払い、無事に川を渡りました。\
goto *happy_end

*no_coin
if %item == 1 goto *event_end2
;コインの所持状態を判定し、結末を分岐します。
コインを持っていないので、仕方なく引き返しました。\
goto *start

*event_end2
「嘘はいけないな!」@
あなたはコインを持っています。@
怒った渡し守に、川に投げ込まれました。\
goto *bad_end

*happy_end
ハッピーエンド\
end

*bad_end
バッドエンド\
end


 このスクリプトで実行している処理を確認します。
 %item という変数を用意し、最初の選択肢で男からコインをもらった場合は、この %item に1を代入します。

 次に、渡し守との会話です。
 ここで、プレイヤーの回答とコインの有無を、if 文と %item 変数を使ってチェックします。
 その判定結果に応じて、結末が分岐します。
 今回の場合は、この %item がいわゆるフラグとして機能しているとも言えます。

 このように、変数と選択肢を組み合わせる事によって、様々なイベントの実装が可能となります。
 実際にスクリプトを動作させて、内容を確認してみてください。


第9章に戻ります 第11章に進みます