簡體   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