编程语言
首页 > 编程语言> > Java训练——实现五子棋功能

Java训练——实现五子棋功能

作者:互联网

使用二维数组,实现五子棋功能.
在控制台通过Scanner输入黑白棋坐标),使用实心五角星和空心五角星表示黑白棋子

代码实现

public static void main(String[] args) {
        String[][] a = new String[15][15];
        Scanner input = new Scanner(System.in);
        String[] num = {"⒈", "⒉", "⒊", "⒋", "⒌", "⒍", "⒎", "⒏", "⒐", "⒑", "⒒", "⒓", "⒔", "⒕", "⒖"};//行列序号
        /*
        * 初始化棋盘
        * */
        intiQP(a,num);

        int flag = 1;
        while (true) {
            System.out.println(((flag == 1) ? "白" : "黑") + "子下棋");
            System.out.println("请输入你要下的位置");
            int x = input.nextInt();
            int y = input.nextInt();
            /*
            *判断输入坐标是否不符合
            **/
            if (a[x - 1][y - 1] == "♘" || a[x - 1][y - 1] == "♞" || x>a.length || y>a.length || x<0 || y<0) {
                System.out.println("地址有误");
                continue;
            }
            
            if (flag == 1) {
                a[x - 1][y - 1] = "♘";
                flag = 0;
            } else {
                a[x - 1][y - 1] = "♞";
                flag = 1;
            }
            /*
            *判断输赢
            * */
            if (isWin(a)==0){
                System.out.println("白棋赢");
                break;
            }
            if (isWin(a)==1){
                System.out.println("黑棋赢");
                break;
            }
            /*
            * 更新棋盘
            * */
            PrintQp(a);

        }
    }


    /**
     * 创建棋盘
    */
    public static void intiQP(String [][] a , String [] num) {
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length; j++) {
                a[i][j] = "十";
                if (j == (a.length - 1)) {
                    a[i][j] = num[i];
                }
                if (i == (a.length - 1)) {
                    a[i][j] = num[j];
                }
                System.out.print(a[i][j]);
            }
            System.out.println();
        }
    }


    /**
    *打印棋盘
     */
    public static void PrintQp(String [][] a) {
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length; j++) {
                System.out.print(a[i][j]);
            }
            System.out.println();
        }
    }
    /**
    *判断谁赢
    */
    public static int isWin(String [] [] a) {

        //判断行是否为5个
        for (int i = 0; i < a.length-4; i++) {
            for (int j = 0; j < a.length-4; j++) {
                if (a[i][j]=="十") {continue;}
                if (a[i][j]==a[i][j+1] & a[i][j]==a[i][j+2] & a[i][j]==a[i][j+3] & a[i][j]==a[i][j+4])
                {
                    if (a[i][j]=="♘"){
                        return 0;
                    }else if(a[i][j]=="♞"){
                    return 1;
                    }
                }
            }
        }

        //判断列是否为5个
        for (int i = 0; i < a.length-4; i++) {
            for (int j = 0; j < a.length-4; j++) {
                if (a[i][j]=="十") {continue;}
                if (a[i][j]==a[i+1][j] & a[i][j]==a[i+2][j] & a[i][j]==a[i+3][j] & a[i][j]==a[i+4][j])
                {
                    if (a[i][j]=="♘"){
                        return 0;
                    }else if(a[i][j]=="♞"){
                        return 1;
                    }
                }
            }
        }

        //判断正对角是否为5个
        for (int i = 0; i < a.length-4; i++) {
            for (int j = 0; j < a.length-4; j++) {
                if (a[i][j]=="十") {continue;}
                if (a[i][j]==a[i+1][j+1] & a[i][j]==a[i+2][j+2] & a[i][j]==a[i+3][j+3] & a[i][j]==a[i+4][j+4])
                {
                    if (a[i][j]=="♘"){
                        return 0;
                    }else if(a[i][j]=="♞"){
                        return 1;
                    }
                }
            }
        }

        //判断反对角是否为5个
        for (int i = a.length-1; i > 4; i--) {
            for (int j = 0; j <a.length-4; j++) {
                if (a[i][j]=="十") {continue;}
                if (a[i][j]==a[i-1][j+1]  & a[i][j]==a[i-2][j+2] & a[i][j]==a[i-3][j+3] & a[i][j]==a[i-4][j+4])
                {
                    if (a[i][j]=="♘"){
                        return 0;
                    }else if(a[i][j]=="♞"){
                        return 1;
                    }
                }
            }
        }
        return 3;
    }

输出结果:

十十十十十十十十十十十十十十⒈
十十十十十十十十十十十十十十⒉
十十十十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
白子下棋
请输入你要下的位置
1
1
♘十十十十十十十十十十十十十⒈
十十十十十十十十十十十十十十⒉
十十十十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
黑子下棋
请输入你要下的位置
1
2
♘♞十十十十十十十十十十十十⒈
十十十十十十十十十十十十十十⒉
十十十十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
白子下棋
请输入你要下的位置
2
2
♘♞十十十十十十十十十十十十⒈
十♘十十十十十十十十十十十十⒉
十十十十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
黑子下棋
请输入你要下的位置
2
3
♘♞十十十十十十十十十十十十⒈
十♘♞十十十十十十十十十十十⒉
十十十十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
白子下棋
请输入你要下的位置
3
3
♘♞十十十十十十十十十十十十⒈
十♘♞十十十十十十十十十十十⒉
十十♘十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
黑子下棋
请输入你要下的位置
3
4
♘♞十十十十十十十十十十十十⒈
十♘♞十十十十十十十十十十十⒉
十十♘♞十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
白子下棋
请输入你要下的位置
4
4
♘♞十十十十十十十十十十十十⒈
十♘♞十十十十十十十十十十十⒉
十十♘♞十十十十十十十十十十⒊
十十十♘十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
黑子下棋
请输入你要下的位置
4
5
♘♞十十十十十十十十十十十十⒈
十♘♞十十十十十十十十十十十⒉
十十♘♞十十十十十十十十十十⒊
十十十♘♞十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
白子下棋
请输入你要下的位置
5
5
白棋赢

标签:十十,Java,白子,训练,下棋,位置,五子棋,int,输入
来源: https://www.cnblogs.com/xiaofanmi/p/14833655.html