/* 地形関連処理 * 参照している外部ソース: なし */ /* グリッドで囲われたエリアの位置を表す座標を「エリア座標」と記述する。 * 一番左を0番目として左からax番目、一番上を0番目として上からay番目のエリアの * エリア座標を(ax,ay)とする。 */ var tkland = {}; // namespace /* 地形情報 */ tkland.map = { // 地形マップ st1: { // ステージ1 width: 11, // 幅(エリア数) height: 10, // 高さ(エリア数) val: "山山山山山川川川山山山" + "山野野野野川川川野野山" + "道道道道道道道道道道野" + "野野野野野川川川野道野" + "野野山山野川川川野道道" + "野野山山野川川川野道山" + "野野野野野川川川野道山" + "道道道道道道道道道道山" + "山野野野野川川川野野山" + "山山野野野川川川山山山" }, st2: { // ステージ2 width: 12, // 幅(エリア数) height: 12, // 高さ(エリア数) val: "山山山山野野野野山山山山" + "山道道道道道道道道道道山" + "山道野野野野野野野野道山" + "山道野川川野山川川野道山" + "野道野川川野野川川野道野" + "野道野野山野野野野野道野" + "野道野野野野野野山野道野" + "野道野川川野野川川野道野" + "山道野川川山野川川野道山" + "山道野野野野野野野野道山" + "山道道道道道道道道道道山" + "山山山山野野野野山山山山" }, st3: { // ステージ3 width: 16, // 幅(エリア数) height: 10, // 高さ(エリア数) val: "野野野野野川野野野野川野野野野野" + "野道道道道道道道道道道道道道道野" + "野道山野野川野野野野川野野山道野" + "野道野野山川野山野野川野野野道野" + "川道川川川川川川川川川川川川道川" + "野道野山野川野野野野川野山野道野" + "野道野野野川山野野山川野野野道野" + "野道山野野川野野野野川山野野道野" + "野道道道道道道道道道道道道道道野" + "野野野野野川野野野野川野野野野野" }, st4: { // ステージ4 width: 15, // 幅(エリア数) height: 15, // 高さ(エリア数) val: "野野野野野野野山野野野野野野野" + "野野野野野野野山野野野野野野野" + "野野道道道道道道道道道道道野野" + "野野道野野野野山野野野野道野野" + "野野道野野野野山野野野野道野野" + "野野道野野川川川川川野野道野野" + "野野道野野川川川川川野野道野野" + "山山道山山川川川川川山山道山山" + "野野道野野川川川川川野野道野野" + "野野道野野川川川川川野野道野野" + "野野道野野野野山野野野野道野野" + "野野道野野野野山野野野野道野野" + "野野道道道道道道道道道道道野野" + "野野野野野野野山野野野野野野野" + "野野野野野野野山野野野野野野野" }, st5: { // ステージ5 width: 16, // 幅(エリア数) height: 16, // 高さ(エリア数) val: "野野野野野野野野野川野野野野野野" + "野山野野野野野野野川野野野野山野" + "野道道道道道道道道道道道道道野野" + "野道野野山野野野野川野野野道野野" + "野道野山野野野野野川川川川道川川" + "野道山野野野野野川川野野野道野野" + "野道野野野野野野川野野野野道野野" + "野道野野野野野川川野野野野道野野" + "野道道道道道川川野野野野野道野野" + "野野野野野道道道道道野野山道野野" + "野山野野野野川野野道野山野道野野" + "野野野野川川川野野道山野野道野野" + "野野野野川野野野野道道道道道野野" + "川川川川川野野野野野野野野山野野" + "野野野野野野野野山野野野野野野野" + "野野野野野野野野野野野野野野野野" } }; tkland.type = { // 地形タイプ mo: { // 山 name: 'mo', chr: '山', col: '#666666' }, ri: { // 川 name: 'ri', chr: '川', col: '#6600FF' }, ro: { // 道 name: 'ro', chr: '道', col: '#CC9933' }, gr: { // 草原 name: 'gr', chr: '野', col: '#33CC00' }, defname: 'gr' // デフォルト値 }; /* 地形クラス * {int} stagenum ステージ数 * {int} axlen エリアの横方向サイズ(エリア座標axの最大値+1) * {int} aylen エリアの縦方向サイズ(エリア座標ayの最大値+1) */ tkland.Land = function(stagenum, axlen, aylen) { // 地形格納配列 エリア座標(ax,ay)のnameをlandAr[ax][ay]に格納 this.landAr = []; var map = tkland.map['st' + String(stagenum)]; // 地形マップ if (!map) return; /* 地形格納配列作成 */ var landmap = []; // tkland.map.valをマトリックス化して格納する配列 // エリア座標(ax,ay)の値をlandmap[ax][ay]に格納 var idx = 0; // tkland.map.val の index landmaplp: // break先を示すラベル for (var iy = 0; iy < map.height; iy++) { for (var ix = 0; ix < map.width; ix++) { if (iy == 0) landmap[ix] = []; if (idx >= map.val.length) break landmaplp; // 地形タイプ判定 switch (map.val.charAt(idx)) { case tkland.type.mo.chr: { landmap[ix][iy] = tkland.type.mo.name; break; } case tkland.type.ri.chr: { landmap[ix][iy] = tkland.type.ri.name; break; } case tkland.type.ro.chr: { landmap[ix][iy] = tkland.type.ro.name; break; } case tkland.type.gr.chr: { landmap[ix][iy] = tkland.type.gr.name; break; } default: { landmap[ix][iy] = tkland.type.defname; break; } } idx++; } } // エリア座標(ax,ay)の値をthis.landAr[ax][ay]に格納 // Canvasがdtcom.landよりも大きい場合は、外はエリア外とする for (var ix = 0; ix < axlen; ix++) { if (ix < landmap.length) { this.landAr[ix] = []; } else { break; } for (var iy = 0; iy < aylen; iy++) { if (iy < landmap[ix].length) { this.landAr[ix][iy] = landmap[ix][iy]; } else { break; } } } }