gpt4 book ai didi

c# - 从文件生成/构建 map

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:49:09 25 4
gpt4 key购买 nike

使用一个文件我想创建一个 map ,我想知道这样做的最佳方法。实际上我搜索了论坛,但我只找到了随机创建 map 的 map 生成算法。

让我们看一个最小的例子。例如我有一个文件包含

0110
1001
1000
0000

每个0 都应该是水,每个1 都应该是土。我会通过简单地拥有两个不同的位图并将它们加载到正确的坐标来处理这个问题。那很简单。

但假设我们有一张 1000*1000 的大 map ,每帧只有 16*16 个瓦片的空间。然后我会得到当前位置并围绕它构建 map 。

假设我们只能显示 3*3 个图 block ,使用最小示例并位于位置 (2,2),其中 x 和 y 是元素 1..4,那么此时用户可以看到的是:

011
100
100

解决方案

我考虑过使用文本文件,其中一条线代表 x 坐标方向,一列代表y坐标方向。整个文件在程序开始时被加载。假设 1 个图 block 需要 1 个字节,这不应该使用太多 ram,应该足够了。

为了在用户移动时重新绘制 map ,我会获取移动方向并在相反方向上滑动当前位图以获得图 block 的高度/宽度,并且只查找位图以查找新的空白区域。所以我只需要查找 m+n-1 的图 block 信息(其中 m 是 y 中显示的图 block 数量和 x 方向上的 n 个图 block 的数量)图 block (如果移动对角线则最大情况)而不是每次加载 m*n 个图 block 用户移动。

例子

我创建了一个示例以使上面给出的示例更容易理解。这是整个 map :

whole map

我们只能显示 3*3 个图 block 并且用户位于位置 (2,2) 所以我们实际看到的是:

starting position

现在他正在向右下角移动:

Moving

而黑框部分正在向相反的方向移动,因此我们得到:

after redrawing

现在必须查找空白图 block (黑框白色区域),最终结果将是:

final image

问题

这是构建 map 的好方法吗?或者是否有更快的功能,可能已经在 Microsoft xna-gamestudio 包中实现了?

最佳答案

我会预取屏幕 View 之外的 1-2 个图 block 范围,这样您就不会在玩家移动时出现奇怪的弹出窗口。

但是如果你的游戏是一个自上而下的方 block 游戏,这个解决方案就相当保守了。在当今的大多数硬件中,您可以毫无问题地在播放器周围创建一个非常大的范围。只要看看 Minecraft 可以处理和显示的方 block 数量。由于您要重复使用相同的纹理,您只需加载一次 Assets 并在一个图 block 中重复使用它们,这可能是一个内存占用非常少的对象。

您尝试过实现它吗?

关于c# - 从文件生成/构建 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13208312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com