创建一个需要从3个变量的中间向外循环的检查(xyz)

Cas*_*526 5 java arrays for-loop minecraft

for (int ix = x - r; ix < x + r + 1; ix++) {
    for (int iz = z - r; iz < z + r + 1; iz++) {
        for (int iy = y - r; iy < y + r + 1; iy++) {
                       // if ix,iy,iz = something blah blah (this part isn't needed)
        }                           
    }
}
Run Code Online (Sandbox Code Playgroud)

好的,现在问题就在这里.上面的当前代码获得x,y,z和r(范围).它的工作是通过"立方体"引用,直到满足我设定的某个条件.问题在于它从立方体的外部开始并且基本上从一个角落进入另一个角落.

我正在寻找一种方式(我的数学/ Java是不是喜欢我大气压)在从POS POS机和环向外开始(包括POS本身),直到它到达立方体的最外面的边界.

因此,如果我们给出了所有假值,让我们使用x = 5,y = 5,z = 5,r = 2代码应检查5,5,5 - 4,5,5 6,5,5 5,6,5 5,4,5等基本上从中心向外迭代每个东西.

该命令名为FindNearest,但从技术上讲,它的作用类似于FindFurthest atm.

我希望我给出了足够的细节,如果有人可以扔掉一些片段或工作代码,我会很高兴,因为这在过去一小时左右是令人沮丧的.如果在for循环中间检查或者像这样随机的东西,我不想要10,我正在寻找一种干净的方式来做到这一点.

Car*_*rum 3

您可以通过执行以下操作从中心迭代:

for (ix = x, xsign = 1, xstep = 1; 
     (ix >= x - r) && (ix <= x + r);
     ix += xsign * xstep, xsign = -xsign, xstep++)
Run Code Online (Sandbox Code Playgroud)

因此,ix对于您的示例,将从 5 到 6 到 4 到 7 等。您可以像这样嵌套循环,至少如果我正确理解问题的话,您就会得到您想要的东西。