我正在构建一个javascript - html5
canvas
横向卷轴游戏。地形基本上包含一个像这样的双重表:
-1 2 10
-----------------
0 b a c
-----------------
2 a b a
-----------------
5 a a b
-----------------
(列和行代表地图上的位置,a
,b
和c
会说明该空间上的内容。
我不知道如何保存此表,以便稍后可以快速检索其中的任何范围。我无法想到任何有助于我搜索解决方案的术语,因此任何信息和帮助标记问题都会有所帮助。
答案 0 :(得分: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'
那样更改它。
如果您愿意,可以编写一些更容易操作此对象的函数。
答案 1 :(得分: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编译器解析为一个对象(也许你已经知道了)。