Как создать доску Tic Tac Toe произвольного размера в Java?

Для моего задания я должен создать игру Tic Tac Toe, где доска произвольного размера... Я знаю, как создать доску 3X3, но я не знаю, с чего начать. Мой инструктор хочет, чтобы мы создали доску внутри класса TicTacToe, используя

public TicTacToe(int edgesize) {
}

поэтому, когда я создаю свою доску произвольного размера, я должен начать с этого?

public TicTacToe(int edgesize){
  int [][] board = new int[edgesize] [edgesize]
}

person RikYC    schedule 16.10.2012    source источник
comment
Можете ли вы написать стандартный класс доски 3x3? Иногда полезно начать с конкретного случая, а затем вернуться и обобщить его.   -  person altendky    schedule 16.10.2012
comment
Прочтите об области видимости переменных и членах класса   -  person Lews Therin    schedule 16.10.2012


Ответы (2)


Объявление вашей платы должно быть вне конструктора, т. е. оно должно быть переменной экземпляра, оно должно быть свойством вашего класса, чтобы вы могли легко получить к нему доступ/манипулировать с помощью геттеров/сеттеров. В настоящее время вы объявляете ее как локальную переменную, и это неверный метод.

public class TicTacToe
{
   int[][] board;

   public TicTacToe(int edgesize)
   {
     this.board = new int[edgesize][edgesize];
   }

   //Getter and setter for your "board".

   public int[][] getBoard()
   { return board; }
   public void setBoard(int[][] board)
   { this.board = board; }

   //Some other methods for iterating your "board" maybe, etc.
}
person Juvanis    schedule 16.10.2012
comment
Я бы не стал добавлять метод setBoard(), пока у вас не возникнет потребность в нем. Кроме того, хотя вы можете получить его из board.length, я бы также сохранил размер края в переменной экземпляра. Потому что он понадобится вам позже для циклов, проверки победителя и т. д. - person user949300; 16.10.2012
comment
@ user949300 вы определенно правы, я просто попытался показать ОП важность глобального масштаба для этой ситуации. - person Juvanis; 16.10.2012
comment
Я бы не назвал это глобальной переменной. - person Bhesh Gurung; 16.10.2012
comment
@BheshGurung это глобальная переменная, но я думаю, вы имеете в виду, что термин «переменная экземпляра» лучше. спасибо, посмотрите мое редактирование. - person Juvanis; 16.10.2012

Если вы сделаете

public TicTacToe(int edgesize){
   int [][] board = new int[edgesize] [edgesize]
}

Переменная board будет локальной для самого конструктора. Это означает, что он не будет доступен вне конструктора.

Сделайте board переменной уровня экземпляра и используйте конструктор, чтобы создать для нее экземпляр массива, чтобы он был доступен для всех методов экземпляра в вашем классе TicTacToe:

public class TicTacToe {
    private int[][] board;

    public TicTacTo(int size) {
        this.board = new int[size][size];
        //initialize the board
    }

    //write methods to do stuffs with the board
person Bhesh Gurung    schedule 16.10.2012