TACS for Flash 講座#10 「ユーザー関数について」


ここではユーザーが自由に作成できるユーザー関数について説明します。

何度も実行する一連の動作をまとめておけば、そのまとめたものを命令するだけで一連の動作を行ってくれるようになります。
このまとめたものを、TACSではユーザー関数とよびます。
それでは、その使用方法を説明致しましょう。



まずは SET_FUNC 〜 ENDFUNC 命令でユーザー関数を設定する



さて実際の使用例としてサンプルのシナリオソースをみてみましょう。
下記リンクのシナリオソースをテキストエディタで開いて下さい。
http://atelier-c.fiw-web.net/tacs_samplegame/game05/tacs.avg
■142〜182行目

//========================================
// ここより下はユーザー関数(ファンクション命令)です
//========================================
set_func 画面初期化
	PIC 30,library/logwindow03.swf
	FRAME_POS 1,640,480
	pic 1,library/messagewindow16.swf;	//メッセージウインドウ設置
	"",1
	FRAME_POS 1,0,340;
	PIC 0,library/selectwindow13.swf;	//選択肢ウインドウ設置
	FRAME_POS 0,20,20
	PIC -1,library/nextbutton08.swf;	//ポーズボタン設置
	PIC 2,data/swf/blank.swf
	PIC 3,data/swf/blank.swf
	PIC 4,data/swf/blank.swf
	PIC 5,data/swf/blank.swf
	PIC 6,data/swf/blank.swf
	BACKLOG_START
endfunc

set_func 由紀子ちゃんを表示
	FRAME_POS 5,180,70
	?LOVE<=10;PIC 5,data/cg/char/yukiko04.png
	?LOVE>=11;?LOVE<=30;PIC 5,data/cg/char/yukiko07.png
	?LOVE>=31;?LOVE<=50;PIC 5,data/cg/char/yukiko02.png
	?LOVE>=51;?LOVE<=70;PIC 5,data/cg/char/yukiko01.png
	?LOVE>=71;?LOVE<=80;PIC 5,data/cg/char/yukiko03.png
	?LOVE>=81;?LOVE<=99;PIC 5,data/cg/char/yukiko12.png
	?LOVE>=100;PIC 5,data/cg/char/yukiko06.png
endfunc

set_func 好感度再表示
	?LOVE<0;!LOVE=0;	//フラグLOVEがマイナス数値になったら0にする
	?LOVE>100;!LOVE=100;	//フラグLOVEが100を越えたら100に戻す
	?LOVE<100;!DISP=  ;
	?LOVE<10;!DISP=   ;
	?LOVE>=100;!DISP= ;
	".DISP..LOVE.%",2;
	FRAME_POS 2,470,38
endfunc
//========================================
SET_FUNC 画面初期化 と記述されている箇所が、ユーザー関数の名前を設定している箇所です。この記述がある行から ENDFUNC と記述されている行までの一連の処理が 画面初期化 という名前のユーザー関数として定義されます。

つまりこの142〜182行目の記述で、 画面初期化由紀子ちゃんを表示好感度再表示 の、三つのユーザー関数を設定している事がわかると思います。

これらの記述がシナリオファイル(〜.avgファイル)のどこかに記述されていれば、シナリオのどこからでもこの一連の処理を呼び出す事が可能となります。
このサンプルでは、最後にまとめてユーザー関数の表記をしていますが、製作者のわかりやすい場所に記述して頂いて問題ありません。

■14〜19行目

#>オープニングメニュー


//----------------------------------------
#オープニングメニュー
func 画面初期化
設定しておいたユーザー関数名 画面初期化 の使用例です。
「オープニングメニュー」のシーンにジャンプした直後に、このゲームで使用する基本的なデータを画面に読み込みさせています。
画面初期化 のユーザー関数の内容は、文字通りゲームで使用される基本的なデータを画面表示する命令達を記述してありましたので、この func 画面初期化 という表記だけで全ての初期化動作をおこなってくれます。

このように、ユーザー関数は「何度も使用する一連の命令」や「長い表記になってしまって判りにくい処理」を、一つのわかりやすい関数名にまとめておいて
あとはその名前で操作を一挙にゃってしまうという、便利な命令なわけですね。

ちなみにサンプルでは…
「画面初期化」関数 → このゲームの基本インターフェイスを一挙に読み込み直し
「由紀子ちゃんを表示」関数 → 好感度のフラグ(LOVE)の値によって由紀子ちゃんの画像を表示しなおす処理を一言でできるようにした
「好感度再表示」関数 → 好感度のフラグ(LOVE)の値を画面に反映させる処理を一言でできるようにした
…と、このような事をユーザー関数でできるように設定しております。

■今回解説につかったサンプルゲーム