第3版マップデータ使用方法

Ryo-9399 edited this page Jan 2, 2017 · 3 revisions

使用方法

起動オプションオブジェクトの"advance-map"プロパティに、専用のマップデータオブジェクトを記述します。

使用例1: スクリプトを実行した位置にゲームを表示します。

new CanvasMasao.Game({
}, null, {
    "advance-map": {  // (マップデータオブジェクト)
    }
});

使用例2: 文字列を指定することでURLとみなし、指定したJSONファイルを読み込みます。(ローカルでのテストプレイはできません)

new CanvasMasao.Game({
}, null, {
    "advance-map": "MyMapdata.json"
});

使用例3: 従来のパラメータと併記できます。ただし、"advance-map"プロパティを指定した場合、従来のレイヤーデータは無視されます。

new CanvasMasao.Game({
    "time_max": "600",             // 制限時間の指定。
    "mizutaro_attack": "3",        // 在来種(後述)ミズタロウの攻撃方法の指定。
    "firebar1_type": "77",         // 在来種(後述)反時計回りファイヤーバーの仕掛け種別指定。
    "map0-0": "................",  // レイヤーの指定は無視される。
    "layer0-0": "..0102030405060708090a0b0c0d0e0f"  // 背景レイヤーの指定も同様に無視される。
}, null, {
    "advance-map": {  // (マップデータオブジェクト)
    }
});

使用例4: 従来の起動オプションと併記できます。

new CanvasMasao.Game({
}, null, {
    "advance-map": {  // (マップデータオブジェクト)
    },
    "width": 160, "height": 128,                             // 画面サイズの指定。
    "highscoreCallback": function(score) {                   // ハイスコアコールバック関数の指定。
    },
    "userJSCallback": function(g, mode, viewX, viewY, ap) {  // MasaoJSSコールバック関数の指定。
    }
});

マップデータオブジェクトの詳細

下記のコード例のコードをそのまま使用しないでください。実際のJSONファイルにコメントは記述できないためエラーになります。

ルートオブジェクト

{
  "stages": [
    // ステージオブジェクトの配列。
  ],
  "customParts": {
    // カスタムパーツ定義の連想配列。
  }
}

オブジェクトの最上位には、ステージオブジェクトの配列とカスタムパーツ定義の連想配列を指定します。"customParts"プロパティは省略可能です。

ステージオブジェクトは配列になっており、上から順にステージ1、ステージ2、...の指定となります。空の配列は指定できません。

ステージオブジェクト

マップデータの主な内容です。

{
  "size": {
    "x": 180,  // マップの横幅。
    "y": 30    // マップの縦幅。
  },
  "layers": [
    // レイヤーオブジェクトの配列。
  ]
}

ステージオブジェクトには、マップサイズとレイヤーオブジェクトの配列を指定します。

マップサイズはオブジェクトで、ブロック単位の横幅と縦幅を整数で指定します。横幅は16以上、縦幅は10以上です。それ以外の数値を指定した時の動作は未定義です。

レイヤーオブジェクト

{
  "id":   "MyMainLayer",  // レイヤーの識別子。
  "type": "main",         // レイヤーのタイプ。
  "src":  "pattern.gif",  // 画像ファイルのURL。
  "map":  [
    // マップデータの指定。
  ]
}

"id"プロパティ、"src"プロパティは省略可能です。

"type"プロパティには"main"または"mapchip"を指定します。

  • "type"プロパティに"main"を指定した場合、このレイヤーオブジェクトは標準レイヤーになります。**標準レイヤーは、レイヤーオブジェクトの配列に1つだけ存在しなければなりません。**存在しない場合や、複数存在するときの動作は未定義です。
    • (未実装の機能)"src"プロパティには、標準レイヤーの画像ファイルURLを指定します。省略した場合は、パラメータ"filename_pattern"で指定するURLを参照します。
  • "type"プロパティに"mapchip"を指定した場合、このレイヤーオブジェクトは背景レイヤーになります。背景レイヤーは、レイヤーオブジェクトの配列に0個以上指定します。
    • (未実装の機能)"src"プロパティには、この背景レイヤーの画像ファイルURLを指定します。省略した場合は、パラメータ"filename_mapchip"で指定するURLを参照します。
    • _(未実装の機能)_レイヤーオブジェクトの添字はレイヤーの重なり順序を表します。従って、標準レイヤーより先に指定することで、このレイヤーを標準レイヤーより手前に表示することができます。

"map"プロパティには、整数または文字列の2次元配列を指定します。

  • "type"プロパティに"main"を指定した場合、要素は従来マップデータの各文字の文字コード(例: 'A'65)、またはカスタムパーツのキー文字列になります。
    • _(未実装の機能)_多様な仕掛け・敵を表す整数コードもあります。詳細は標準パーツコードの一覧を参照してください。
  • "type"プロパティに"mapchip"を指定した場合、要素はレイヤー番号になります(例: "7f"127)。文字列の指定はできません。

カスタムパーツ定義

_(未実装の機能)_キーにカスタムパーツの名前、値にオブジェクトを指定する連想配列です。

カスタムパーツは、既存のパーツのプロパティを変更して新しく独自のパーツを作る機能です。作ったパーツは標準レイヤーの要素に指定できるようになります。

{
  "MyFirebar": {
    "extends": 85,   // 元にする整数コード(またはカスタムパーツのキー文字列)。
    "properties": {
      // 変更するプロパティ群。
    }
  }
}

"extends"プロパティには、カスタムパーツの元にする整数コード、またはその他のカスタムパーツのキー文字列を指定します。

"properties"プロパティには、元にするパーツから変更するプロパティを連想配列で指定します。

標準搭載されているパーツについては標準パーツコードの一覧を参照してください。

第2版マップデータからの変換方法

(editing)

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.