gpt4 book ai didi

java - 存储具有 x 和 y 坐标的对象网格以描述它们的位置。阵列是可接受的解决方案吗?

转载 作者:太空狗 更新时间:2023-10-29 12:54:06 24 4
gpt4 key购买 nike

我正在 Android 上开发一款涉及对象网格的游戏。现在我正在使用数组来存储对象,如下所示:

public class ObjectBuffer {

private final Object[] buffer;

private final int playfieldWidth;

ObjectBuffer(int playfieldWidth, int playfieldHeight) {
super();
this.buffer = new Object[playfieldWidth + (playfieldHeight * playfieldWidth)];
this.playfieldWidth = playfieldWidth;
}

public static int getX(int id) {
return id % playfieldWidth();
}

public static int getY(int id) {
return id / playfieldWidth();
}

public Object get(int id) {
return this.buffer[id];
}

public Object get(int x, int y) {
return this.buffer[x + (y * this.playfieldWidth)];
}
}

但是,我的问题是,这是实现这一目标的最佳方式吗?我选择了一个数组(而不是列表、ArrayList 或其他容器),因为一旦设置了游戏区域的宽度和高度,它们就不会改变。对象存在状态,一旦它们被实例化并添加到数组中,它们可能会更新,但不会重新排列。

我的问题类似于Storing objects for locating by x,y coordinates ,但差异很大,我想单独问我的问题。我的要求与他的要求不同,而且我认为在这种情况下空间索引没有必要。如果我错了,请纠正我。

我还应该提一下,数组的尺寸通常为 10x10(100 个元素),但可能需要适度增加;但不需要处理超过 15x15 的网格(225 个元素)。在生成网格时,这些维度将始终是已知的。生成网格后,尺寸不会改变。

最佳答案

更好的选择是做一个类点

    class Point
{
int x;
int y;

//getter and setter methods for x and y

public void setCoordinates(int x, int y)
{
this.x=x;
this.y=y;
}

}

然后创建一个点对象数组

Point[] mypoints

当你想为 mypoint[i] 设置坐标时

mypoint[i].setCoordinates(30,40)

关于java - 存储具有 x 和 y 坐标的对象网格以描述它们的位置。阵列是可接受的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8760974/

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