在ArrayList中存储2D数组索引?

时间:2016-04-23 21:58:56

标签: java arrays list arraylist

我正在为战舰游戏编码,我需要一些方法来跟踪船只的位置。我认为这样做的最好方法是使用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中,但是现在我正在存储实际的元素。

2 个答案:

答案 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)(第二个例子)的值。

这将允许您将此数组用于不仅仅是位置,并最大限度地减少多余和不必要的代码。 :)