輸入三行三列數字,例如:
0 0 0
1 0 0
0 0 1
其中,0代表O,1代表X。代碼運行邏輯: 檢查行 --> 檢查列 --> 檢查對角線 --> 檢查反對角線
輸出 棋局結果【1(X) is winner .】、【0(O) is winner .】、【平局 !】。
import java.util.Scanner;
public class TicTacToe {
public static void main(String[] args) {
try {
Scanner in = new Scanner(System.in);
int [][] board = new int[3][3];
for(int i = 0; i < board.length; i++) {//讀入
for(int j = 0; j < board[i].length; j++) {
board[i][j] = in.nextInt();
}
}
int flag = -1; //-1: 平局; 1: (X)勝利; 0: (O)勝
int num1 = 0; //1的數量 1代表X
int num0 = 0; //0的數量 0代表O
for(int i = 0; i < board.length; i++) { //檢查行
if(flag == -1) { //平局 --> 繼續驗證
for(int j = 0; j < board[i].length; j++) {
if(board[i][j] == 1) {
num1++;
} else {
num0++;
}
}
if(num1 == 3 || num0 == 3) {
if(num1 == 3) {
flag = 1;
System.out.println("1(X) is winner .");
break;
} else {
flag = 0;
System.out.println("0(O) is winner .");
break;
}
} else {
flag = -1;
break;
}
}
}
if(flag == -1) { //檢查列: 平局 --> 繼續驗證
num1 = 0;
num0 = 0;
for(int i = 0; i < 3; i++) {
if(flag == -1) {
for(int j = 0; j < 3; j++) {
if(board[j][i] == 1) {
num1++;
} else {
num0++;
}
}
if(num1 == 3 || num0 == 3) {
if(num1 == 3) {
flag = 1;
System.out.println("1(X) is winner .");
break;
} else {
flag = 0;
System.out.println("0(O) is winner .");
break;
}
} else {
flag = -1;
break;
}
}
}
}
if(flag == -1) { //檢查對角線: 平局 --> 繼續驗證
num1 = 0;
num0 = 0;
for(int i = 0; i < 3; i++) {
if(board[i][i] == 1) {
num1++;
} else {
num0++;
}
}
if(num1 == 3 || num0 == 3) {
if(num1 == 3) {
flag = 1;
System.out.println("1(X) is winner .");
} else {
flag = 0;
System.out.println("0(O) is winner .");
}
} else {
flag = -1;
}
}
if(flag == -1) { //檢查反對角線: 平局 --> 繼續驗證
num1 = 0;
num0 = 0;
for(int i = 0; i < 3; i++) {
if(board[i][2-i] == 1) {
num1++;
} else {
num0++;
}
}
if(num1 == 3 || num0 == 3) {
if(num1 == 3) {
flag = 1;
System.out.println("1(X) is winner .");
} else {
flag = 0;
System.out.println("0(O) is winner .");
}
} else {
flag = -1;
}
}
if(flag == -1) {
System.out.println("平局 !");
}
} catch(Exception e){
System.out.println("程序異常 !");
}
}
}
/**
檢查行:
1 1 1
0 1 0
0 0 1
1(X) is winner .
0 0 0
1 0 0
0 0 1
0(O) is winner .
平局:
0 1 0
0 1 1
1 0 1
檢查對角線:
1 0 0
0 1 0
0 0 1
1(X)勝利:
try {
} catch(Exception e){
}
*/