【发布时间】:2016-03-21 22:56:58
【问题描述】:
我已经完成了井字游戏,但我唯一的问题是我无法从游戏中确定获胜者/平局。我有一种专门用于寻找获胜者的方法,但它不起作用。我究竟做错了什么?代码如下:
import java.util.Scanner;
public class TicTacToe {
public static final int X = 1;
public static final int Y = 2;
public static void main(String[] args) {
final int X = 1;
final int Y = 2;
int[][] board = {{0, 0, 0},
{0, 0, 0},
{0, 0, 0}
};
int count = 0;
while (!checkWinner(board)) {
printBoard(board);
if (count % 2 == 0) {
System.out.println("X's turn");
move(X, board);
} else {
System.out.println("Y's turn");
move(Y, board);
}
System.out.println();
count++;
}
}
public static boolean checkWinner(int[][] board) {
if (board[0][0] == board[1][0] && board[1][0] == board[2][0] && (board[0][0] == "X" || board[0][0] == "Y")) {
return true;
} else if (board[0][1] == board[1][1] && board[1][1] == board[2][1] && (board[0][1] == "X" || board[0][1] == "Y")) {
return true;
} else if (board[0][2] == board[1][2] && board[1][2] == board[2][2] && (board[0][2] == "X" || board[0][2] == "Y")) {
return true;
} else if (board[0][0] == board[0][1] && board[0][1] == board[0][2] && (board[0][0] == "X" || board[0][0] == "Y")) {
return true;
} else if (board[1][0] == board[1][1] && board[1][1] == board[1][2] && (board[1][0] == "X" || board[1][0] == "Y")) {
return true;
} else if (board[2][0] == board[2][1] && board[2][1] == board[2][2] && (board[2][0] == "X" || board[2][0] == "Y")) {
return true;
} else if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && (board[0][0] == "X" || board[0][0] == "Y")) {
return true;
} else if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && (board[2][0] == "X" || board[2][0] == "Y")) {
return true;
} else {
return false;
}
}
public static void printBoard(int[][] board) {
for (int i = 0; i < 3; i++) {
System.out.print("| ");
for (int j = 0; j < 3; j++) {
if (board[i][j] == TicTacToe.X) {
System.out.print("X");
} else if (board[i][j] == TicTacToe.Y) {
System.out.print("Y");
} else {
System.out.print("-");
}
System.out.print(" | ");
}
System.out.println();
}
}
public static void move(int player, int[][] board) {
Scanner myScan = new Scanner(System.in);
System.out.print("Row: ");
int x = myScan.nextInt();
System.out.print("Column: ");
int y = myScan.nextInt();
board[x][y] = player;
}
}
我不需要向这个程序添加其他方法,因为这就是我所需要的。
【问题讨论】: