Java Рисование игрового поля в виде сетки - PullRequest
2 голосов
/ 01 апреля 2012

Эй, я пытаюсь нарисовать сетку. Я выбрал 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 ]

2 голосов
/ 01 апреля 2012

Код в setBoard содержит пару ошибок.Сначала вы создаете один экземпляр Rectangle2D.Double, который затем многократно используете при создании содержимого board.Это означает, что если вы внесете изменение в любую запись в board, все записи будут изменены - массив содержит 100 ссылок на один и тот же объект.

Вторая проблема, которая, вероятно, вызывает компиляциюошибка в том, что board имеет тип double[][], но вы пытаетесь вставить в него Rectangle2D.Double, который отличается от вашего массива "double".Вы можете поместить только double значений в ваш массив.

2 голосов
/ 01 апреля 2012

Ну, доска - это массив double, и вы пытаетесь поместить туда прямоугольник !!! Вам нужно:

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