Java簡易井字棋

輸入三行三列數字,例如:
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){
	
}
*/

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

發佈了6 篇原創文章 · 獲贊 9 · 訪問量 2803
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章