繁体   English   中英

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

[英]Store 2D Array Index in 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)存储在列表中,但是现在我正在存储实际元素。

存储x和y值的列表是使用Java的点类的理想情况。

ArrayList<Point> shipPositions = new ArrayList<Point>();
shipPositions.add(new Point(0, 0));

点的ArrayList可以轻松修改和迭代,以添加和删除飞船位置。

您可以为每艘船制作一个单独的对象。 您可以使用x和ay浮点数(或使用Point保持简单)来制作一个相当简单的类,然后像这样制作一系列船只

Ship[] ships = new Ship[n];

要么

ArrayList<Ship> ships = new ArrayList<Ship>();

然后您可以在ships.get(n) ships[n] (对于第一个示例)或ships.get(n) (对于第二个示例)处获取值。

这样一来,您不仅可以在位置上使用此数组,还可以最大限度地减少多余和不必要的代码。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM