JS ADV.js イベントで使う変数を初期化する
JS ADV.jsではゲームで使用する変数を大きく三つに分類しており、
this.MDataオブジェクトにこれらの変数が登録されるようになっています。
具体的にはゲーム内容にかかわる変数は
gameVarsオブジェクトに、システムに関する変数は
systemVarsオブジェクトに、テンプレート用のデータは配列
templateに格納します。たとえば、プレイヤーの名前を格納する変数
playerNameは、ゲーム内容に関係するので
gameVarsに入れます。デフォルトの
gameVarsオブジェクトはただの空のオブジェクトです。
//変数playerNameをgameVarsオブジェクトに登録したところ
gameVars: {
playerName: 'DORAEMON'
}
次に
systemVarsオブジェクトには効果音などシステム関係のデータを入れます。
SEオブジェクトが一つだけ登録されており、ここにはメッセージ・ウィンドウをクリックしたときの効果音を
onContinueプロパティに、選択肢を回答したときの効果音を
onSelectChoiceプロパティに設定できます。値は
game_data.adv.jsに登録した効果音名を入れます。
//SEオブジェクトに各種効果音を登録したところ
systemVars: {
SE: {
onContinue: 'beep01',
onSelectChoice: 'beep02'
}
}
templateプロパティは
Prototype.jsライブラリの
Templateクラスを利用するために使用し、テンプレートにしたいデータの集まり(オブジェクト)を追加します。
//配列templateにテンプレート用オブジェクトを登録したところ
template: [
{ name: 'WIZARD-CODE', favorite: 'JavaScript game' },
{ name: 'DORAEMON', favorite: 'dorayaki' }
]
そして
initVarsはゲームで使う変数を初期化するメソッドです。
paramプロパティに入れるデータは、これらの三つのデータをまとめたオブジェクト({}で閉じられたデータ)で、上記の三つのデータをイベント・オブジェクトの
paramプロパティに設定すると次のようになります。
.........
.........
{ type: 'initVars', param: {
gameVars: {
playerName: 'DORAEMON'
},
systemVars: {
SE: {
onContinue: 'beep01',
onSelectChoice: 'beep02'
}
},
template: [
{ name: 'WIZARD-CODE', favorite: 'JavaScript game' },
{ name: 'DORAEMON', favorite: 'dorayaki' }
]
} }
.........
.........
下にこのあいだのクイズ問題のイベントデータを抜粋してみました。gameVarsオブジェクトに登録できるデータは文字列、数字、配列と様々です。ちなみに
関数/メソッドも登録できますが、そのままでは返り値などが利用できません。
Prototype.jsの説明によると、関数/メソッドを機能させるには、
toTemplateReplacementsメソッドを
gameVarsオブジェクトに設定しなければなりません。詳しくは後述します。
もしくは、こちらを参照ください⇒
日本史クイズのイベントデータを
//QUIZ SAMPLE
{
name: 'quiz001',
flag: null,
story: null,
data: [
{ type: 'initVars', param: {
gameVars: {
//名前はプレイヤーに入力させるため、始めは空にしておく
playerName: '',
//正解数をここに入れる
rightAnswers: 0,
//全問題数をここに入れる
totalQuestions: 3,
//正解数に応じてコメントを用意
//正解数をそのまま配列のインデックスに使えるように並べている
evaluation: [
'おお勇者よ、全問不正解とは情けない',
'ひっかけ問題に引っかかったのかな?',
'惜しい、あと一問!',
'全問正解、すばらしい!'
]
}
} },
.........
.........
-
JavaScript/Ajax, ゲーム JavaScript, Prototype, アドベンチャーゲーム