Java 2D数组 - 如何将数组指定为值?

时间:2015-03-08 03:04:28

标签: java arrays

背景
我正在为我的java类做一个游戏项目,我们正在为游戏区域使用网格系统。 50宽25高。根据您的显示器大小动态调整正方形,它涉及一些数学运算。我从下面的示例中删除了它,因此更容易查看。

我目前决定将网格方块存储在漂亮而简单的2D数组中,以便我们可以根据需要访问和更新播放区域。这是代码:

// Updates when told to, saves new values
public static void GridList() {
// Record which grid squares are open (0) or blocked (1)
// X = Row and Y = Column
for (int x = 0; x < 50; x++ ) {
    for ( int y = 0; y < 25; y++ ) {
        gridList[x][y] = 0;
    }
}
}

我们的问题
现在,当我继续保存代表这些网格方块中间的订单对(x,y)时,麻烦就开始了。例如,根据我们计算出显示器尺寸的所有数学计算,我们制作了一个50宽25高的网格,现在需要保存这些方块中间的(x,y)坐标。这是我们的AI知道在哪里移动敌人;只要它是开放的,就一点一点地进行。

这是我到目前为止在自己的数组中保存X坐标和Y坐标的原因:

public static void NodeList() {
    for (int x = 0; x < 50; x++ ) {
        for ( int y = 0; y < 25; y++ ) {
            nodeListX[x][y] = *Removed all the math.*;
            nodeListY[x][y] = *Removed all the math.*;
        }
    }
}

我们的目标
我真正想做的是为每个网格方块保存一个数组:

public static void NodeList() {
    for (int x = 0; x < 50; x++ ) {
        for ( int y = 0; y < 25; y++ ) {
            nodeList[x][y] = *array{x,y}*;
        }
    }
}

这在Java中可行吗?我无法解决这个问题。我看到了有关列表的事情,但我们尚未涉及到这一点,所以我不知所措。

2 个答案:

答案 0 :(得分:1)

Java并没有真正存储一对数字的方法。但你可以创建一个这样的坐标类:

`public class Coordinate
 int x;
 int y;

 public Coordinate(x,y)
 {
  this.x=x;
  this.y=y;
 }

 public int getX()
 {
  return x;
 }

 public int gety()
 {
  return y;
 }
`

然后你可以创建一个坐标数组。

答案 1 :(得分:1)

老实说,我没有看到你或fdsa解决方案的问题。但是如果你正在寻找另一种方法,你总是可以使用一个三维数组,第三维包含2个X和Y元素:

public static void NodeList() {
    for (int x = 0; x < 50; x++ ) {
        for ( int y = 0; y < 25; y++ ) {
            int xPos = *Removed all the math.*;
            int yPos = *Removed all the math.*;
            nodeList[x][y] = new int[] {xPos, yPos};
        }
    }
}

请务必将nodeList声明为int[][][]