gpt4 book ai didi

java - 找到二维数组邻居的值?

转载 作者:行者123 更新时间:2023-11-30 05:30:54 26 4
gpt4 key购买 nike

我有一个 2D 数组,它使用柏林噪声生成地形,然后将(3D) block 放置在特定高度 - 在您单击离开之前,我需要帮助的是生成“高度图”的 2D 数组。我试图通过直接检查二维数组中的上、下、左、右值来确定旁边的 block 是否处于相同的高度(如果它是否“相邻”)。如果它们相等,则它们处于同一高度,因此是“邻居”。如果我遇到的问题是检查总是为所有邻居返回 true,即使该 block 没有邻居。

柏林噪声高度图的小示例

151514141312121111
151414131313121211
141414131312121211
141313131312121211
131313121212121111
131312121212111111
121212121111111111
111111111110101111
111111111010101111
111111111010101010
111111111010101010
101011101010101010
101010101099109999
991010109999988889
999109999888888999

这是检查代码,您将必须查看整个文件,链接如下以了解上下文

      if (terrain[x][leftColumn] == terrain[x][z]) {
neighbors[2] = true; // left side
}
if (terrain[x][rightColumn] == terrain[x][z]) {
neighbors[3] = true; //right side
}
if (terrain[belowRow][z] == terrain[x][z]) {
neighbors[4] = true; // front side (below)
}
if (terrain[aboveRow][z] == terrain[x][z]) {
neighbors[5] = true; // back side (above)
}

Pastebin:https://www.pastiebin.com/5d5c5416391ec
感谢任何帮助,亚瑟

最佳答案

移动此静态变量初始化

boolean[] neighbors = new boolean[]{false, false, false, false, false, false};

在内循环中,您检查每个 block 的邻居,为每个单独的 block 实例化一个新的邻居数组。现在,邻居是一个静态变量。您永远不会重置邻居数组上的值,因此每次迭代后它仍然为真。

编辑:

还有

  if (belowRow > 1) { 
belowRowExists = false;
belowRow = 0;
}
if (rightColumn > - 1) {
rightColumnExists = false;
rightColumn = 0;
}

错误,您想检查列或行是否越界,对吗?然后你想看看它们是否 >= chunkSize。

关于java - 找到二维数组邻居的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57580973/

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