【问题标题】:How do I create a Tic Tac Toe board of arbitrary size in Java?如何在 Java 中创建任意大小的井字游戏板?
【发布时间】:2012-10-16 00:09:33
【问题描述】:

对于我的任务,我必须创建一个任意大小的棋盘的井字游戏……我知道如何创建一个 3X3 棋盘,但我不知道从哪里开始。我的导师希望我们使用

在 TicTacToe 类中创建棋盘
public TicTacToe(int edgesize) {
}

所以当我创建任意大小的板时,我应该从这个开始吗?

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

【问题讨论】:

  • int [][] board = new int[edgesize][edgesize]
  • 你能写一个标准的 3x3 板类吗?有时从具体案例开始,然后再回过头来概括它是有帮助的。
  • 了解变量范围和类成员

标签: java tic-tac-toe


【解决方案1】:

你的板子声明应该在构造函数之外,即它应该是一个实例变量,它应该是你的类的属性,这样你就可以使用 getter/setter 轻松访问/操作它。您当前将其声明为 局部变量,这是一种错误的方法。

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

【讨论】:

  • 除非您有要求,否则我不会添加 setBoard() 方法。此外,即使您可以从 board.length 中获取它,我也会将 edgesize 存储在实例变量中。因为您稍后将需要它进行循环、检查获胜者等......
  • @user949300 你绝对是对的,我只是试图向 OP 展示这种情况下全局范围的重要性。
  • 我不会称它为全局变量。
  • @BheshGurung 它是一个全局变量,但我认为您的意思是“实例变量”这个词更好。谢谢,看看我的编辑。
【解决方案2】:

如果你这样做了

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多