我希望用户选择地图大小,以便在运行时不知道地图的大小。我一直在寻找如何实现这一点,但收效甚微。最接近的工作是使用矢量变量,但在运行时它仍然无法正常工作。
我想要一个三维数组,所以在我的标题中我声明像这样的tilemap。
std::vector<std::vector<std::vector<Tile>>> tileMap;
并在类中测试它:
World::World(int width, int height, int depth)
{
tileMap.resize(width);
tileMap[0].resize(height);
tileMap[0][0].resize(depth);
tileMap.resize(width);
for (int i = 0;i<width;i++)
{
tileMap[i].resize(height);
}
for (int y = 0; y < height;y++)
{
for (int x = 0; x < width; x++)
{
tileMap[x,y].resize(depth);
}
}
std::cout << sizeof tileMap / sizeof tileMap[0][0][0] << std::endl;
}
我知道并非所有数组的尺寸都已正确调整大小,但最后一行只输出“0”。
有没有更好的方法来创建未知大小的tilemap?我需要很多尺寸,如64 * 64,256 * 256,64 * 1024等(z级别将在生成级别后确定)。所以为每个大小创建一个数组似乎效率低下。但也许有一种更好的方式来声明我的阵列,或者我在某处做错了什么。
答案 0 :(得分:2)
您希望tileMap.size() * tileMap[0].size() * tileMap[0][0].size()
获取平铺数量。