使用我想创建地图的文件,我想知道这样做的最佳方法。实际上我搜索了论坛,但我只找到了随机创建地图的地图生成算法。
让我们看一个最小的例子。例如我有一个文件包含
0110
1001
1000
0000
万物皆为0
水,1
万物皆为土。我会通过简单地拥有两个不同的位图并将它们加载到正确的坐标来处理这个问题。那很简单。
但是让我们假设我们有一个 1000*1000 的大地图,并且每帧只有 16*16 个图块的空间。然后我会得到当前位置并围绕它构建地图。
假设我们只能显示 3*3 的图块,使用最小的示例并且位于 x 和 y 是元素 1..4 的位置 (2,2),那么用户此时可以看到的是:
011
100
100
解决方案
我考虑过使用文本文件,其中一行代表 x 坐标方向,一列代表 y 坐标方向。整个文件在程序开始时被加载。假设 1 个 tile 需要 1 个字节,这不应该使用太多 ram,这应该足够了。
为了在用户移动时重绘地图,我会获取移动方向并将当前位图滑动到相反方向的图块的高度/宽度,并且只查找新空白区域的位图。所以我只需要查找 m+n-1 的图块信息(其中 m 是在 y 和 x 方向上显示的图块的数量)图块(移动对角线时的最大情况)而不是每次加载 m*n 块用户移动。
例子
我创建了一个示例,以使上面给出的示例更容易理解。这是整个地图:
我们只能显示 3*3 的图块,而用户位于 (2,2) 位置,所以我们实际看到的是:
现在他正在向右下角移动:
并且黑色框部分正在向相反方向移动,因此我们得到:
现在必须查找空白图块(黑框白色区域),最终结果将是:
问题
这是构建地图的好方法吗?或者是否有更快的功能,可能已经在 microsoft xna-gamestudio 包中实现?