【发布时间】:2016-03-29 20:11:50
【问题描述】:
我有一个类用于存储我的游戏世界的地形。游戏世界由立方体组成,每个立方体都有一个地形。信息存储为一个相当大的 3D 整数数组。
我现在遇到的问题是我的“地图”太大而无法存储在类(或枚举)中。由于我真的不知道类和枚举之外的任何东西,所以我不知道该怎么办。
我应该用它制作一个 tekst 文件并读出来吗?如果是这样,我该怎么做?
另一种解决方案是将映射拆分为多个类或枚举,然后在运行时再次合并它们,但我也不知道该怎么做,这似乎是一个非常糟糕的解决方案。
编辑:这是世界地图的一部分:
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 2 2 2 2 1 1 1 1 1 1 1
0 0 0 0 1 0 0 0 0 2 2 2 2 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1
0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
这些块中有 40 个(所以还有 38 个),每个块都代表某个 z 坐标上的世界。我也有这个数组格式。 如果您能提供一些(示例)代码来说明如何从文件中读取它,那就太好了。
【问题讨论】:
-
我建议你不要把它拆分成不同的类,直接存一个文件就行了。
-
尝试内存映射方法,根据需要分段读取内存。
-
不是在代码中将数组定义为文字,您可以将数据存储在文件中并从磁盘读取以将其放入数组中。
-
@Jay 我需要整个初始化世界。
-
@Jire 我正在考虑这个问题,但正如我的问题所述:我不知道该怎么做。