このページはCOOL ONLINE終了に伴いO-Show様の許可を得て作成したBinary Heavenのミラーサイトです
[TOP] [Profile] [NScripter] [BBS] [Links]
中級編 No.11
バー
■概要■
数値をビジュアルに表現することができる「バー」について解説します。

SLG等でのパラメーターなどを表現するのに向いています。


使用命令:

「bar」(NScr暫定命令表.txt)
「barclear」(NScr暫定命令表.txt)

「mode_saya」(NScr暫定命令表.txt)
■パラメータ表現

パラメーターを表現する場合に、数字を表示する以外にも「ゲージ」を使ってその長さによってパラメータを表現するという手法があると思います。

NScripterにはそういった「ゲージ」を簡単に表示するための「bar」命令というものがあります。


この「bar」命令で表示されたものを「バー」と呼びます。

このバーは、数値ラベルと同じような扱いになります。

位置関係としては、立ち絵とスプライトより上、テキストウィンドウより下です。

また、数値ラベルよりも常に下になります。

(「windowback」命令時にはスプライトと同じくテキストウィンドウの上に来ます。「humanz」命令では、設定に関係なく常に立ち絵より上です。)



■バーを表示するスクリプト

それではバーを表示するスクリプトを見てみましょう。



	bar 8,25,200,250,300,50,100,#FF0000

	print 1


数字を一つずつ説明します。


まず一番左の「8」という数字は、「バー番号」です。

要するに、スプライト番号みたいなものです。

バー番号には「0〜99」の番号を使うことができます。

ちなみに、バー同士の位置関係は番号が大きい方が上に来ます。

これはスプライトの「小さい方が上に来る」の逆となっています。


次の「25」という数字はバーの現在値です。

通常ならば、ここに変数を指定するわけですね。


次の「200」と「250」の数字は、バーを表示するX・Y座標です。

これはスプライトと同じく、その位置がバーの左上座標になります。


次の「300」と「50」の数字は、バー全体の横幅・高さです。

横幅はあくまでも「全体の」ですので、実際に表示される長さは現在値から計算される長さになります。


その次の「100」という数字、これはバーの最大値です。

この数字に対する現在値の割合が、バーの長さに関係します。


最後の「#FF0000」がバーの色です。16進数で指定してください。


なお、バーは「print」を行わない限り画面に表示されることはありません。



■バーの長さ

実際に表示されるバーの長さは以下のようになります。


現在値÷最大値×バー全体の横幅


上のスクリプトでは「25÷100×300」ということでバーの長さは「75」になります。

現在値が「100」だったら(最大だったら)、横幅の「300」になるということです。



■バーを消去するスクリプト

バーを消去するスクリプトを見てみましょう。



	barclear

	print 1


「barclear」というのが、全てのバーを消去する命令です。

これも「print」を必要とします。


現在の所、バーを個別に消去する命令はないようです。

また、バーにはスプライトのような表示・非表示という状態も存在しません。

あくまで表示するか消してしまうかだけです。



ただし、数値ラベルの項で説明したように「mode_saya」命令の影響を受けて非表示状態になることはあります。



■増減をループによって表現してみる

最後に、「for〜nextループ」を使ってバーを増減させることに挑戦してみましょう。



*define

	game

*start

	mov %1,25
	mov %2,30


	bar 8,%1,200,250,300,30,100,#FF0000
	print 1


	click


	for %0=1 to %2

		bar 8,%1,200,250,300,30,100,#FF0000

		inc %1

		print 1

	next


	click
	end


上のスクリプトを実行してみてください。

クリックするとバーがぐいーんと伸びるはずです。

ここで数字変数「%1」はバーの現在値を、「%2」は増える分の値を意味します。



このスクリプトはほんの一例です。

値の設定の仕方など、まだまだやり方はあると思います。


他にも、例えばバーの最大値に達したら「break」をするなどが考えられます。

また、このままではパソコンの能力によってバーが伸びる速度に差が出てしまうために、「waittimer」を使うなどの工夫が考えられます。
■総括■
バーはパラメータ表現だけではなく、選択肢に時間制限をつける際の残り時間などにも使えそうですね。


   前へ   NScripterのIndexへ