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 · 访问量 2790

猜你喜欢

转载自blog.csdn.net/weixin_44949135/article/details/104419853