五子棋

package fiveChess;
import java.util.Scanner;
public class FiveChess {
    public static final int  LENGTH=16;
    public static  String[][] chess=new String[LENGTH][LENGTH];
    public static Scanner sc = new Scanner(System.in);
    //打印棋盘
    public static void printChess() {
        //打印横坐标
        for (int k = 0; k < chess.length; k++) {
            if (k == 0) {
                System.out.print("  ");
            } else if (k < 10 && k > 0) {
                System.out.print(k+" ");
            }else{
                System.out.print(k);
            }
        }
        System.out.println();
        for(int i=1;i 0) {
                System.out.print(i+" ");
            }else{
                System.out.print(i);
            }
            for (int j =1; j  15 || y < 1 || y > 15) {
            System.out.println("超出棋盘范围,请重新输入坐标 1<=x,y<=15");
        }
        else{
            if (!chess[x][y].equals("十")) {
                System.out.println("此处已被占用,请重新输入坐标1<=x,y<=15");

            }
            else {
                chess[x][y]=str;
                printChess();
                if (CheckWin(x,y)) {
                    System.out.println("胜利");
                    return ;
                }
            }
        }
    }
    //判断胜负
    public static boolean CheckWin(int xIndex, int yIndex) {
        int max = 0;
        int tempXIndex = xIndex;
        int tempYIndex = yIndex;
        // 三维数组记录横向,纵向,左斜,右斜的移动
        int[][][] dir = new int[][][] {
                // 竖着
                { { -1, 0 }, { 1, 0 } },
                // 横向
                { { 0, -1 }, { 0, 1 } },
                // 左斜
                { { -1, -1 }, { 1, 1 } },
                // 右斜
                { { 1, -1 }, { -1, 1 } } };

        for (int i = 0; i < 4; i++) {
            int count = 1;
            //j为0,1分别为棋子的两边方向,比如对于横向的时候,j=0,表示下棋位子的左边,j=1的时候表示右边
            for (int j = 0; j < 2; j++) {
                boolean flag = true;
                /**
                 while语句中为一直向某一个方向遍历
                 有相同颜色的棋子的时候,Count++
                 否则置flag为false,结束该该方向的遍历
                 **/
                while (flag) {
                    tempXIndex = tempXIndex + dir[i][j][0];
                    tempYIndex = tempYIndex + dir[i][j][1];

                    //这里加上棋盘大小的判断,这里我设置的棋盘大小为20 具体可根据实际情况设置 防止越界
                    if (tempXIndex >= 1 && tempXIndex < chess.length && tempYIndex >= 1 && tempYIndex = 5) {
                max = 1;
                break;
            } else
                max = 0;
        }
        if (max == 1)
            return true;
        else
            return false;
    }

    public static void main(String[] args) {

        for(int i=1;i

 

你可能感兴趣的:(五子棋)