Java绘制游戏板作为网格

时间:2012-03-31 21:05:04

标签: java grid draw

嘿我想画一个网格。我已经处理了一个2D数组,我试图用Rectangle2D填充它。我希望网格是相等的正方形,字符可以在其中。这是我的代码:

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();
}

}
}

存在编译错误,并且不允许我在此数组中存储矩形。此外,我怀疑它甚至会成为一个网格。

2 个答案:

答案 0 :(得分:2)

好吧,board是一个double的数组,你正试图在那里放一个Rectangle!你需要:

  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;
             }
       }
 }

答案 1 :(得分:2)

setBoard中的代码有几个错误。首先,您要创建一个Rectangle2D.Double实例,然后在构建board的内容时重复使用多次。这意味着如果您对board中的任何条目进行更改,则所有条目都将更改 - 该数组包含对同一对象的100个引用。

可能导致编译错误的第二个问题是board类型为double[][],但您尝试将Rectangle2D.Double放入其中,这是一个不同的“加倍你的阵列。您只能将double值放入数组中。