我有一个基于图块的RPG系统,其中特定的图块类型由字符串表示(即Grass =“g”,Dirt =“d”)。问题是我不知道如何以一种方式表示地图(按特定顺序聚集的一组图块),其中每个图块可以通过其x / y坐标有效地访问。地图应该以数组格式表示:
map[0].coords[x][y] = "g";
或者也许以其他方式?
答案 0 :(得分:3)
这取决于您使用的语言,但二维数组通常是一种有效的方法。
访问数组中的元素通常很快,因为内存中给定元素的位置可以根据提供的数组索引计算,而不必迭代其他元素。其他数据结构(例如链表)对于这种类型的检索要慢得多。
答案 1 :(得分:2)
一些事情,取决于语言:
1:如果可能,为地形类型设置常量整数。常量使用较少的内存并且更快地进行referance / retrieve,与字符串上的整数相同
2:二维可能是最有效的方式。
一个例子
CONST(INT) GRASS = 1;
CONST(INT) DIRT = 2;
CONST(INT) SNOW = 3;
// assuming map is an array containing objects, and coords is a 2d
// array of said object:
map[0].coords[x,y] = GRASS;