2012-03-31 29 views
2

嘿,我正在嘗試繪製柵格。我創建了一個二維數組,我試圖用Rectangle2D填充它。我希望網格是一個角色可以在其上等角的等寬方格。這裏是我的代碼:Java以柵格形式繪製遊戲板

public class GameWindow 
{  
public static int[][] map = { 
    {0, 0, 1, 0, 0}, 
    {0, 0, 1, 0, 0}, 
    {0, 0, 1, 0, 0}, 
    {0, 0, 1, 0, 0}, 
    {0, 0, 1, 0, 0}, 
    {0, 2, 1, 0, 0} 
}; 

public static double[][] board; 

public static Rectangle2D setBoard() 
{ 
Rectangle2D.Double tile = new Rectangle2D.Double(10, 10, 10, 10); 
for (int i = 0; i < 10; i++) 
{ 
    for (int j = 0; j < 10; j++) 
    { 
    board[i][j] = tile; 
    } 
} 
} 



public static int rows = 6; 
public static int columns = 5; 
public static int[][] next = new int[rows][columns]; 

public static void main(String[] args) 
{ 
for(int i = 0; i < map.length; i++) 
{ 
    for(int j = 0; j < map[i].length; j++) 
    { 
    System.out.print(map[i][j] + " "); 
    } 
    System.out.println(); 
} 

} 
} 

有一個編譯錯誤,它不讓我在這個數組中存儲矩形。另外我懷疑它甚至會形成網格。

+1

告訴我們什麼是編譯錯誤將是首選>:| – 2012-03-31 21:08:30

回答

2

那麼,董事會是一個雙數組,你試圖把矩形在那裏!您需要:

public static Rectangle2D[][] board = new Rectangle2D[10][10]; 

而且您需要確定矩形在屏幕上的確切位置。您不應該創建一個單獨的矩形並將其放置在電路板的每個位置。

public static Rectangle2D setBoard() 
    { 
     Rectangle2D.Double tile; 
     for (int i = 0; i < 10; i++) 
     { 
      for (int j = 0; j < 10; j++) 
      { 
       tile = new Rectangle2D.Double(x, y, w, h);//how will you determine x and y here 
       board[i][j] = tile; 
      } 
     } 
} 
+0

那麼如果我必須確定每個x和y座標,那麼存儲在二維數組中的要點是什麼。什麼是最好的方式來繪製這個電路板網格? – user1198199 2012-03-31 21:20:58

+0

我們不知道你的觀點?但是如果你用參數10,10,10,10創建一個矩形,那麼當你在屏幕上繪製它們時,它們將全部出現在相同的位置並且看起來像一個矩形......所以計算每個矩形的位置然後將其存儲在你的數組。 – 2012-03-31 21:23:03

+0

不能我只是跳過存儲在2d數組,並有一個for循環創建增加x和y的矩形,然後用paintComponent()繪製它們? – user1198199 2012-03-31 21:24:09

2

setBoard中的代碼有幾個錯誤。首先,創建一個Rectangle2D.Double實例,然後在構建board的內容時重複使用該實例。這意味着如果您對board中的任何條目進行了更改,則所有條目都將更改 - 數組包含100個對同一對象的引用。

第二個可能導致編譯錯誤的問題是board的類型爲double[][],但您試圖將Rectangle2D.Double放入其中,這與您的陣列是不同的「雙倍」。您只能將double值放入您的數組中。