双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜
此任务由java基础语言,二维数组来完成

思路:
1. 用二维数组绘制初始地图
2. 实现双方玩家轮流下棋的方法
while(true)构成无限循环 if条件判断是否获胜使用break来跳出循环
接收用户输出的坐标并改变棋盘上对应坐标图案
3. 胜利条件检测
胜利条件检测在用户下棋之后,根据用户所下棋子位置对其周围进行检测,避免对整个棋盘进行遍历
行向检测:检测目标棋子的左至右各4个位置,是否存在连续的相同棋子
竖向检测:检测目标棋子的上至下各4个位置,是否存在连续的相同棋子
斜向检测:检测目标棋子的左斜上至右斜下各4个位置,是否存在连续的相同棋子
检测目标棋子的左斜下至右斜上各4个位置,是否存在连续的相同棋子
检测时要先考虑边缘情况 避免出现ArrayIndexOutOfBoundsException.

import java.util.Scanner;

public class Chess {

	public static void main(String[] args) {
		boolean gameOver=false;
		//创建一个二维数组作为棋盘
		int[][] board=new int[16][16];
		//初始化棋盘
		initialize(board);
		//黑白双方轮换下棋直至有一方获胜
		while(true) {
			System.out.println("==========黑棋回合==========");
			gameOver=putBlack(board);
			printboard(board);
			//获胜时跳出循环
			if(gameOver==true) {
				break;
			}
			System.out.println("==========白棋回合==========");
			gameOver=putWhite(board);
			printboard(board);
			if(gameOver==true) {
				break;
			}
		}
	}
	//初始化棋盘并打印
	public static void initialize(int[][] board) {
		
		for(int i=0;i<board.length;i++) {
			for(int j=0;j<board[i].length;j++) {
				if(i==0) {
					board[i][j]=j;
				}
				if(j==0) {
					board[i][j]=i;
				}
				System.out.print(board[i][j]+"\t");
			}
			System.out.println();
		}	
	}
	//打印棋盘
	public static void printboard(int[][] board) {
		for(int i=0;i<board.length;i++) {
			for(int j=0;j<board[i].length;j++) {
			
				System.out.print(board[i][j]+"\t");
			}
		System.out.println();
		}
	}
	//黑方下棋
	public static boolean putBlack(int[][] board) {
		Scanner scanner=new Scanner(System.in);
		System.out.println("输入横坐标:");
		int x =scanner.nextInt();
		//有效值检测
		while(x<1||x>15)  {
			System.out.println("您输入了一个无效的横坐标");
			System.out.println("请重新输入横坐标");
			x=scanner.nextInt();
			

		}
		System.out.println("输入纵坐标:");
		int y =scanner.nextInt();
		//有效值检测
		while(y<1||y>15)  {
			System.out.println("您输入了一个无效的纵坐标");
			System.out.println("请重新输入纵坐标");
			y=scanner.nextInt();
			

		}
		board[x][y]=1;
		
		if(check(board, x, y)) {
			System.out.println("黑棋获得胜利");
			
			return true;
			
		}
		return false;
		
		
	}
	//白方下棋
	public static boolean putWhite(int[][] board) {
		Scanner scanner=new Scanner(System.in);
		System.out.println("输入横坐标:");
		int x =scanner.nextInt();
		//有效值检测
		while(x<1||x>15) {
			System.out.println("您输入了一个无效的横坐标");
			System.out.println("请重新输入横坐标");
			x=scanner.nextInt();
			

		}
		System.out.println("输入纵坐标:");
		int y =scanner.nextInt();
		//有效值检测
		while(y<1||y>15)  {
			System.out.println("您输入了一个无效的纵坐标");
			System.out.println("请重新输入纵坐标");
			y=scanner.nextInt();
			

		}
		board[x][y]=2;
		
		if(check(board, x, y)) {
			System.out.println("白棋获得胜利");
			
			return true;
			
		}
		return false;
		
	}
	//五子检测
	public static boolean check(int[][] board,int x,int y) {
		int count=0;
		//1.玩家获取
		int player=0;
		player =board[x][y];
		//2.横向检查
		for(int i=-4;i<=4;i++) {
			if(y+i<=0||y+i>=15) {
				continue;
			}

			if(board[x][y+i]==player) {
				count+=1;

			}else {
				continue;
			}
			if(count==5) {
				
				return true;
			}
		}
		count=0;
		//3.纵向检查
		for(int i=-4;i<=4;i++) {
			if(x+i<=0||x+i>=15) {
				continue;
			}

			if(board[x+i][y]==player) {
				count+=1;

			}else {
				continue;
			}
			if(count==5) {
				
				return true;
			}
					
		}
		count=0;
		//4.斜向检察(二四象限)
		for(int i=-4;i<=4;i++) {
			//边界判定
			if(x+i<=0||x+i>=15||y+i<=0||y+i>=15) {
				continue;
			}

			if(board[x+i][y+i]==player) {
				count+=1;

			}else {
				continue;
			}
			if(count==5) {

				
				return true;
			}
		}
		count=0;
		//5.斜向检查(一三象限)
		for(int i=-4;i<=4;i++) {
			
			//边界判定
			if(x+i<=0||x+i>=15||y-i<=0||y-i>=15) {
				continue;
			}

			if(board[x+i][y-i]==player) {
				count+=1;

			}else {
				count=0;
				continue;
			}
			
			if(count==5) {
				
				return true;
			}
		}
	
		return false;
	}
}