0

我正在尝试为我的游戏中的地图创建一个简单的类。地图是由“平铺”结构组成的二维向量。我正在尝试找出按行输入/输出这些图块的最佳方法。

例如,我曾经使用基于 .txt 的加载格式。.txt 文件如下所示:

1 0 2 0 0 0 2 4 5 6 3 
2 4 5 0 0 0 2 0 0 3 4
0 3 5 2 5 3 0 5 5 3 4
0 2 0 5 0 6 0 5 7 8 4

然后我会逐行查找每个图块的 ID 整数。1 代表草,0 代表水,依此类推。当解析器到达一行的末尾时,它会跳到下一行整数。

现在我试图通过 fwrite 和 fread 使用二进制文件和结构而不是整数来做到这一点。我该怎么做呢?我所看到的只是如何将结构数组存储在二进制文件中,而不是如何存储多维结构数组。有任何想法吗?

编辑: 是的,我可以只将 2D 矢量存储在文件中,但这不允许我进行我需要的无缝地图加载。我有大型地图文件,因此一次加载 100k 瓷砖会占用 CPU。

4

1 回答 1

0

如果您希望您的地图是人类可读的,您需要编写一个解析器。

但是,如果您不在乎,您应该做一些完全不同的事情:使用序列化,例如来自Boost

您的情况的第三种选择(在游戏中很常见)是将地图存储为图像文件。然后,您可以在您最喜欢的图像处理程序中编辑地图,并且您的程序很容易解释它。许多库可以为您读取图像数据(并将其作为二维数组呈现给您),并且在游戏中您可能已经有了类似的东西。

于 2012-06-23T14:01:01.530 回答