我正在尝试分析井字游戏的领域: 找到当前游戏的状态。可能的状态:
我已经编写了代码,但是每次都未完成输出游戏。
package tictactoe;
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1 = sc.nextLine();
System.out.println("---------");
System.out.println("| " + s1.charAt(0) + " " + s1.charAt(1) + " " + s1.charAt(2) + " " + "|");
System.out.println("| " + s1.charAt(3) + " " + s1.charAt(4) + " " + s1.charAt(5) + " " + "|");
System.out.println("| " + s1.charAt(6) + " " + s1.charAt(7) + " " + s1.charAt(8) + " " + "|");
System.out.println("---------");
int index = 0;
String[][] arr = new String[3][3];
int numX = 0;
int numO = 0;
int count = 1;
//entering value of char from string to array
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
arr[i][j] = Character.toString(s1.charAt(index));
//calculating number of X and O
if (arr[i][j] == "X") {
numX++;
count++;
} else if (arr[i][j] == "O") {
numO++;
count++;
}
index++;
}
}
/*for (String[] i : arr) {
System.out.println(Arrays.toString(i));
}*/
boolean won = false;
for (int i = 0; i < 3; i++) {
//checking rows for XXX
if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i] && arr[0][i] != "O") {
System.out.println("X wins");
won = true;
}
//checking rows for OOO
else if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i] && arr[0][i] != "X") {
System.out.println("O wins");
won = true;
}
//checking columns for XXX
else if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2] && arr[i][0] != "O") {
System.out.println("X wins");
won = true;
}
//checking columns for OOO
else if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2] && arr[i][0] != "X") {
System.out.println("O wins");
won = true;
}
}
if (won != true) {
//checking major diagonal for XXX
if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[0][0] != "O") {
System.out.println("X wins");
}
//checking major diagonal for OOO
else if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[0][0] != "O") {
System.out.println("O wins");
}
//checking minor diagonal for XXX
else if (arr[2][0] == arr[1][1] && arr[1][1] == arr[0][2] && arr[0][2] != "O") {
System.out.println("X wins");
}
//checking minor diagonal for OOO
else if (arr[2][0] == arr[1][1] && arr[1][1] == arr[0][2] && arr[0][2] != "X") {
System.out.println("O wins");
}
//more O or X than possible
else if (numO - numX > 1 || numX - numO > 1) {
System.out.println("Impossible");
}
//Unfinished
else if (count < 8) {
System.out.println("Game not finished");
} else {
System.out.println("Draw");
}
}
}
}