背景
我正在为我的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中可行吗?我无法解决这个问题。我看到了有关列表的事情,但我们尚未涉及到这一点,所以我不知所措。
答案 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[][][]
。