私はtic-tac-toeゲームを遵守しましたが、私の唯一の問題はゲームから勝者/ネクタイを決定できないことです。私は勝者を見つけるための具体的な方法がありますが、うまくいきません。私は間違って何をしていますか?ここでは、コードは次のようになります。Tic-Tac-Toeが勝者を確認する
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;
}
}
私は、これは私が必要とするすべてであるとして、このプログラムに別のメソッドを追加する必要はありません。
基本的には、3x3の行列があるので、1つの開始点を指定すると、水平方向、垂直方向、斜め方向を確認する必要があります。良いことは、開始点は常に最初の行(およびチェック)おそらく[this](http://stackoverflow.com/questions/32960625/how-to-properly-checkdiagonalwin-in-connect-4/32961044#32961044)と[this](http:// stackoverflow。 com/questions/32770321/connect-4-check-for-a-win-algorithm/32771401#32771401) – MadProgrammer