gpt4 book ai didi

java - 如何获取线性数组的坐标

转载 作者:行者123 更新时间:2023-12-01 19:14:14 25 4
gpt4 key购买 nike

我正在制作一个游戏,其中我有一个 3D map 存储在数组 int 整数中:

int width = 256;
int height = 256;
int depth = 64;
int[] map = new int[width * height * depth];

我需要能够获取索引的 x、y、z。我目前想到的方法是:

private int getX(int blockID) {
return blockID % width;
}

private int getY(int blockID) {
return (blockID % depth) / height;
}

private int getDepth(int blockID) {
return blockID / (width * height);
}

获取 x 和深度的方法似乎有效,但我无法让 getY() 正常工作,并且我不断收到 ArrayIndexOutOfBoundsException,如下所示:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at game.Level.updateLighting(Level.java:98)
at game.Level.generateMap(Level.java:58)
at game.Level.<init>(Level.java:21)
at game.mainClass.main(Minecraft.java:6)

如果您知道如何执行此操作,请提供帮助。

最佳答案

伙计。只需使用 3D 数组即可。

int[][][] map = new int[width][height][depth];

那么您就不必担心从 blockID 中解复用 xyz 索引>。它们是线性独立的,因此请保持这种方式。

关于java - 如何获取线性数组的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7418991/

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