将对象添加到2d数组

时间:2017-03-03 02:17:06

标签: java arrays computer-science

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课程应该保存有关&#34; X&#34;或者&#34; O&#34;对象

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

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

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

1 个答案:

答案 0 :(得分:0)

  

我不确定如何使用转弯变量

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

  

但我对如何将对象传递到二维数组

有点模糊

这是你的代码吗?看起来你已经知道如何操作2D阵列了。阵列[行] [列]。你能详细说明将对象传递到你遇到问题的二维数组的哪个部分吗?在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语句来测试是否value为null并打印占位符字符。