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]
任何帮助都将不胜感激。非常感谢!
答案 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并打印占位符字符。