我正在为战舰游戏编码,我需要一些方法来跟踪船只的位置。我认为这样做的最好方法是使用ArrayList。如果我存储已放置的船只中包含的索引,那么我可以遍历ArrayList以表示它是无效的位置。例如,如果我有这样的循环:
for (int j = 1; j < SIZE; j++)
{
for (int k = 1; k < SIZE; k++)
{
if ((cell[j][k].contains(click)))
{
cell[j][k].setColor(Color.blue);
}
}
}
我想将单元格[j] [k] 位置存储在ArrayList中,当用户放置发货时,运行for循环以确定是否或不是那个牢房被占用了。问题是当我尝试添加到ArrayList时,我正在添加实际的单元格,而不是索引。我希望实际位置(x,y)存储在List中,但是现在我正在存储实际的元素。
答案 0 :(得分:0)
存储x和y值的列表是使用Java的点类的理想情况。
ArrayList<Point> shipPositions = new ArrayList<Point>();
shipPositions.add(new Point(0, 0));
点ArrayList
可以很容易地修改和迭代,以添加和删除船位。
答案 1 :(得分:0)
您可以为每艘船制作单独的物品。你可以创建一个带有x和y浮点数的相当简单的类(或者一个Point来保持简单)然后只需要创建一个像这样的数组
Ship[] ships = new Ship[n];
或
ArrayList<Ship> ships = new ArrayList<Ship>();
然后你可以得到ships[n]
(第一个例子)或ships.get(n)
(第二个例子)的值。
这将允许您将此数组用于不仅仅是位置,并最大限度地减少多余和不必要的代码。 :)