在我的 2D Tiled 游戏中,我遇到了一个问题,当我在另一个内部的 for 循环中从 2D 数组中更新所有对象时(在 2D 数组中从左上角到右下角逐行循环(如下面的代码)) , 如果程序在索引 (5,6) 处循环并且它需要来自自身下的对象的数据,它将使用他在循环处 (5,5) 时执行的新数据,但我想使用双 for 循环开始之前的所有数据...
一个基本的例子:
int[][] map = new int[10][10];
for(int x = 0; x < 10; x++)
{
for(int y = 0; y < 10; y++)
{
update(x, y, map);
}
}
// I remember you that it is an example
void update(int x, int y, int[][] m)
{
m[x][y] = 0
if(y > 9) { return; }
m[x][y + 1] = 1
}
它会立即将数据“1”放在(x,10)处,而不考虑它会产生错误......(ArrayOutOfBoundsException......)
当他还没有开始双循环时,我怎样才能让它使用数组的数据?
我知道它会生成 ArrayOutOfBoundExecption,并且如果我可以像我在这里完成的那样更正它
int Water = 1;
int Air = 0;
int[][] map = new int[20][20];
void update()
{
for(int x = 0; x < 10; x++)
{
for(int y = 0; y < 10; y++)
{
tick(x, y, map);
}
}
}
void tick(int x, int y, int[][] m)
{
if(y > m.lenght - 1) { return; }
m[x][y] = Air;
m[x][y + 1] = Water;
}