0

javascript - html5 canvas横スクロールゲームを作っています。地形は、基本的に次のようなダブル エントリ テーブルで構成されます。

      -1   2   10  
-----------------
0     b    a    c
-----------------
2     a    b    a
-----------------
5     a    a    b
-----------------

(列と行はマップ上の位置を表し、aそのスペースbc何があるかを示します)。

このテーブルを保存する方法がわからないので、後でその範囲をすばやく取得できます。解決策の検索に役立つ用語も思いつかないので、質問にタグを付ける情報とヘルプが役立ちます。

4

2 に答える 2

0

このようなデータを保存するには、JSON を使用します。

var map = {
    '0': {
        '-1': 'b',
        '2': 'a',
        '10': 'c'
    },
    '2': {
        '-1': 'a',
        '2': 'b',
        '10': 'a'
    },
    '5': {
        '-1': 'a',
        '2': 'a',
        '10': 'b'
    }
};

そして、次のようにデータを取得しますmap['2']['-1']

そのように変更することもできますmap['2']['-1'] = 'c'

必要に応じて、このオブジェクトを簡単に操作するための関数を作成できます。

于 2012-12-08T18:16:13.187 に答える
0

JSON: JavaScript Object Notation を試してください。幸いなことに、これを使用して配列を表記することもできます。

「保存」のようにデータを保存するかどうかはわかりません-ユーザーがページを離れた場合に、離れた場所から続行できるようにするため-または、データをマップの内部表現として保存する場合。

「保存」:
そのために sessionStorage を使用できますが、それは HTML5 の機能だと思います (よくわかりません)。とにかく、ここに caniuse ページがあります: http://caniuse.com/#search=sessionStorage .
例:

window.sessionStorage.setItem("map", "{'-1': {0:b, 2:a, 5:a}, '2': {0:a, 2:b, 5:a}, '10':{0:c, 2:a, 5:b}}");

その後、次の方法で取得します。

var map = window.sessionStorage.getItem("map");
map = JSON.parse(map);
map[-1][0]; // Should be 'b'

欠点は、sessionStorage にしか文字列を保存できないことですが、JSON.parse(). オブジェクトを文字列化する場合は、 を使用できますJSON.stringify()

内部表現:

yabolはそれで私を打ち負かしましたが、私は同じことを提案するつもりでした:

var map = {'-1': {0:b, 2:a, 5:a}, '2': {0:a, 2:b, 5:a}, '10':{0:c, 2:a, 5:b}};

今回は紐無しです。これは、JS コンパイラによってオブジェクトに解析されます (おそらく、既にご存知でしょう)。

于 2012-12-08T18:20:11.370 に答える