2010/12/11(土)モンスターデータベース構想その2
出現場所のデータ構造
JavaScript上ではこの構造でよさそう。
//hiernode: 階層データの各ノード生成
function hiernode(name, child) {
return new hiernode.fn.init(name, child);
}
//hiernode: 共通プロパティ
hiernode.fn = {
//init: hiernodeのコンストラクタ
init: function(name, child){
this.name = name;
this.child = child || []; //子要素
this.length = this.child.length ; //子要素の長さ、登録後は長さを変更しない
this.is_leaf = (this.length==0) ; //子要素がないときtrue
},
//nameを返却
toString: function(){
return this.name;
}
};
//prototypeに設定
hiernode.fn.init.prototype = hiernode.fn;
//サンプル: 階層データ生成
var area_list = [
hiernode("エミル世界",[
hiernode("フィールド",[
"東アクロニア平原"
,"西アクロニア平原"
,"南アクロニア平原"
,"北アクロニア平原"
])
,hiernode("ダンジョン",[
hiernode("氷結の坑道",[ "1F","2F","3F"])
])
,hiernode("インスタンスダンジョン",[
"黒き王"
,"急襲アンデッドの城"
,"仮想空間での死闘"
,"迷宮探索"
,"蜘蛛の宮殿"
,"迷宮の刺客"
,"潜む白い影"
,"デスメイズ"
,"戦慄のプリズン"
,"2体のキング"
,hiernode("地下迷宮",[ "第1階層","第2階層","第3階層","第4階層","第5階層","第6階層","第7階層","第8階層","第9階層","第10階層"])
,"地下に巣くう者"
,hiernode("集う魔物",[ "第1階層","第2階層","第3階層","第4階層","第5階層"])
,"残存するモンスターの駆除"
,"遺跡荒らしを追い出せ"
,hiernode("超兵器の破壊",[ "全階層","第1階層","第2階層","第3階層"])
,"遺跡の宝探し"
,"東の扉"
,"西の扉1"
,"西の扉2"
,"南の扉1"
,"南の扉2"
,"北の扉1"
,"北の扉2"
,"遺跡の奥へ…1"
,"遺跡の奥へ…2"
])
])
,hiernode("タイタニア世界",[
"フィールド"
,"ダンジョン"
,hiernode("インスタンスダンジョン",[
"忘却の庭園Ⅰ"
,"忘却の庭園Ⅱ"
,"忘却の庭園Ⅲ"
,"忘却の庭園Ⅳ"
])
])
,hiernode("ドミニオン世界",[
"フィールド"
,"ダンジョン"
])
,hiernode("その他",[
hiernode("ディメンションダンジョン",[
hiernode("ディメンション廃炭鉱",[ "B1F","B2F","B3F"])
,hiernode("ディメンション大陸の洞窟",[ "B1F","B2F","B3F","B4F","B5F"])
,hiernode("ディメンションノーザンダンジョン",[ "北西区画","北東区画","南西区画","南東区画"])
,hiernode("ディメンションイーストダンジョン",[ "D原初の森","Dイーストダンジョン","D毒の湿原"])
,hiernode("ディメンション氷結の坑道",[ "1F","2F","3F"])
,hiernode("ディメンションサウスダンジョン",[ "1F","2F","3F"])
])
,hiernode("無限回廊",[
"B1F~B20F"
,"B21F~B40F"
])
,"都市攻防戦"
,"イベント"
])
];
//参照
var temp = area_list[0];
alert(temp.toString()); //"エミル世界"
temp = temp.child[1];
alert(temp.toString()); //"ダンジョン"
temp = temp.child[0];
alert(temp.toString()); //"氷結の坑道"
temp = temp.child[0];
alert(temp.toString()); //"1F"
このデータは、検索、登録時のセレクトボックスなどに使う予定。
サーバーサイドでどうやって管理するかはまだ考え中ですが、
- 順序関係が変わると、出現場所=0/0/1/0 などのデータの意味が変わってしまう。
- そもそもこの構造をデータベースに上手く格納できるのか?
という問題があるので、これに関してはデータベース以外の方法を探すかも。
結構クリティカルな情報なので、自由な登録・編集はもしかしたらできない方がいいのかもしれません^^;*1