簡體   English   中英

Java 2D數組-如何將數組分配為值?

[英]Java 2D array - How to assign an array as a value?

背景
我正在為Java類做一個游戲項目,並且在游戲區域使用了網格系統。 50寬乘25高。 正方形是根據您的顯示器大小動態調整大小的,其中涉及一些數學運算。 我從下面的示例中刪除了它,因此更易於查看。

我目前決定要做的是將網格正方形存儲在一個漂亮且簡單的2D數組中,以便我們可以根據需要訪問和更新游戲區域。 這是該代碼:

// Updates when told to, saves new values
public static void GridList() {
// Record which grid squares are open (0) or blocked (1)
// X = Row and Y = Column
for (int x = 0; x < 50; x++ ) {
    for ( int y = 0; y < 25; y++ ) {
        gridList[x][y] = 0;
    }
}
}

我們的問題
現在,當我繼續保存代表這些網格正方形中間的訂單對(x,y)時,麻煩就開始了。 例如,基於所有用於計算顯示器尺寸的數學運算,我們制作了一個寬50 x高25的網格,現在需要保存這些正方形中間的(x,y)坐標。 這樣我們的AI知道了將敵人移至何處。 只要打開一點一點。

到目前為止,這是我將X坐標和Y坐標保存在它們自己的數組中的功能:

public static void NodeList() {
    for (int x = 0; x < 50; x++ ) {
        for ( int y = 0; y < 25; y++ ) {
            nodeListX[x][y] = *Removed all the math.*;
            nodeListY[x][y] = *Removed all the math.*;
        }
    }
}

我們想要擁有的
我真正想做的是為每個網格正方形保存一個數組,如下所示:

public static void NodeList() {
    for (int x = 0; x < 50; x++ ) {
        for ( int y = 0; y < 25; y++ ) {
            nodeList[x][y] = *array{x,y}*;
        }
    }
}

這在Java中可行嗎? 我不知道這個。 我看到了有關列表的內容,但我們還沒有涵蓋,所以我很茫然。

Java確實沒有存儲一對數字的方法。 但是您可以創建一個坐標類,如下所示:

`public class Coordinate
 int x;
 int y;

 public Coordinate(x,y)
 {
  this.x=x;
  this.y=y;
 }

 public int getX()
 {
  return x;
 }

 public int gety()
 {
  return y;
 }
`

然后,您可以只創建一個坐標數組。

老實說,我看不到您或fdsa解決方案的問題。 但是,如果您正在尋找另一種方法,則始終可以使用3維數組,第3維數組包含X和Y的2個元素:

public static void NodeList() {
    for (int x = 0; x < 50; x++ ) {
        for ( int y = 0; y < 25; y++ ) {
            int xPos = *Removed all the math.*;
            int yPos = *Removed all the math.*;
            nodeList[x][y] = new int[] {xPos, yPos};
        }
    }
}

只需確保將nodeList聲明為int[][][]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM