【问题标题】:add object to 2d array将对象添加到二维数组
【发布时间】:2017-03-03 02:17:05
【问题描述】:
public class XO {
    private String name;
    private static int turn = 1;

    public XO(String name) {
        if (2 % turn == 0) {
            turn++;
            name = "X";
        }
        else {
            turn++;
            name = "O";
        }

    }
    //set method
    public void setName(String name) {
        this.name = name;
    }
    //public void setTurn(int turn){
    //this.turn=0;
    //}
    //get method
    public String getName() {
        return name;
    }
    public int getTurn() {
        return turn;
    }

    public boolean equals(XO obj) {
        return name == obj.getName();
    }

    public String toString() {
        return "You are " + name;
    }
}


import java.util. * ;

public class TicTacToeBoard extends Board {
    private int turnCnt;
    private XO[][] board;

    public TicTacToeBoard(int rows, int columns) {
        super(rows, columns);
        turnCnt = 0;
        this.board = new XO[rows][columns];
    }
    //set method 
    public void setBoard(XO[][] board) {

        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                board[i][j] = board.getName();
            }
        }

    }
    //get methods
    public XO[][] getBoard() {
        return board;
    }

    public int getTurnCnt() {
        return turnCnt;
    }
    //print board
    public void printBoard() {
        for (int i = 0; i < board.length; i++) {
            System.out.println("\n");
            for (int j = 0; j < board[i].length; j++) {
                System.out.print(board[i][j] + " ");
            }

        }
    }
    //add X or O
    public boolean add(int r, int c) {
        XO[][] j = new XO[r][c];
        if (r > 2 && c > 2 || this.board.equals(j)) return false;
        else

        //setBoard(j);
        return true;

    }
    //check win
    public boolean win(XO a, XO b) {
        //player 1 wins
        if (board[0][0] == a && board[1][0] == a && board[2][0] == a) {
            return true;
        }
        if (board[0][1] == a && board[1][1] == a && board[2][1] == a) {
            return true;
        }
        if (board[0][2] == a && board[1][2] == a && board[2][2] == a) {
            return true;
        }
        if (board[0][0] == a && board[0][1] == a && board[0][2] == a) {
            return true;
        }
        if (board[1][0] == a && board[1][1] == a && board[1][2] == a) {
            return true;
        }
        if (board[2][0] == a && board[2][1] == a && board[2][2] == a) {
            return true;
        }
        if (board[0][0] == a && board[1][1] == a && board[2][2] == a) {
            return true;
        }
        if (board[2][0] == a && board[1][1] == a && board[0][2] == a) {
            return true;
        }
        //now player 2 wins
        if (board[0][0] == b && board[1][0] == b && board[2][0] == b) {
            return true;
        }
        if (board[0][1] == b && board[1][1] == b && board[2][1] == b) {
            return true;
        }
        if (board[0][2] == b && board[1][2] == b && board[2][2] == b) {
            return true;
        }
        if (board[0][0] == b && board[0][1] == b && board[0][2] == b) {
            return true;
        }
        if (board[1][0] == b && board[1][1] == b && board[1][2] == b) {
            return true;
        }
        if (board[2][0] == b && board[2][1] == b && board[2][2] == b) {
            return true;
        }
        if (board[0][0] == b && board[1][1] == b && board[2][2] == b) {
            return true;
        }
        if (board[2][0] == b && board[1][1] == b && board[0][2] == b) {
            return true;
        }
        else return false;
    }

    public String toString() {
        return board[0][0] + "\t" + board[1][0] + "\t" + board[2][0] + "\n" + board[0][1] + "\t" + board[1][1] + "\t" + board[1][2] + "\n" + board[0][2] + "\t" + board[1][2] + "\t" + board[2][2];
    }
}

你好,我正在做一个关于用 java 创作一个战术游戏的作业。这些是我的代码。该指南说 XO 类应该包含有关“X”或“O”对象的信息。

该类应该有两个属性:一个名称(它是一个字符串“X”或“O”)和一个设置为 0 或 1 的静态 int 变量(它应该被初始化为 1)。您将使用此变量来确定在创建对象时为其赋予哪个名称(例如,如果为 1,则将名称设置为“X”)。

我不确定如何使用 turn 变量,我知道我应该将 X O like 2 对象传递给 2d 数组,但我对如何将对象传递给 2d 数组有点模糊。而且我一开始也想打印一个像空白矩阵一样的板,但它总是 [null null null, 空空空 null null null]

任何帮助将不胜感激。非常感谢!

【问题讨论】:

    标签: java arrays computer-science


    【解决方案1】:

    我不确定如何使用 turn 变量

    XO 构造函数中的 turn 变量通过检查 2 模(轮数)来跟踪是谁轮到了它。因此,如果轮到 1:则 2%1 为 1,因此 name 变量设置为 'O'。对于第 2 回合:2%2 == 0,名称设置为“X”。 这基本上是使用一个简单的 mod 测试来检查转弯是偶数还是奇数..

    但我对如何将对象传递到二维数组有点模糊

    这是你的代码吗?看来您已经知道如何操作二维数组了。数组[行][列]。您能否详细说明将对象传递到二维数组的哪一部分遇到问题?在您的 setBoard 函数中,您可能希望根据您在实例化 TicTacToe 类时声明的行和列的长度进行动态迭代。

    我也想先打印一个像空白矩阵一样的板,但它总是[null null null, null null null null null]

    您可以通过在迭代中正确打印来打印类似表格的输出。尝试将 Board.toString() 函数更改为类似这样。

    for(XO[] row : board){
            for(XO item : row){
                System.out.print(item.getName());
            }
            System.out.print('\n');
        }
    

    它应该改变输出看起来像 -

    XXX

    XXX

    XXX

    编辑:如果你想成为一个没有填充空值的空白矩阵,你需要将 XO 的所有实例实例化为默认值,或者你可以添加一个测试 if 语句来测试是否值为 null 并打印占位符。

    【讨论】:

    • 我不知道如何将 x o 对象添加到板上。是不是像这样 public boolean add(int r,int c){ XO [][]player = new XO[r][c];如果(r>3&&c>3)返回假;否则 xo[r][c]=玩家; //setBoard(j);转数++;返回真; }
    猜你喜欢
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 2012-01-01
    • 2016-07-01
    • 2019-04-22
    • 1970-01-01
    • 2016-07-01
    • 2018-07-22
    相关资源
    最近更新 更多