Java五子棋

五子棋

/** * 五子棋需求分析(项目功能) * 1、展示棋盘(20*20) * 2、玩家(黑棋子)落入棋子(输入行,列) ,将指定的行和列覆盖棋盘 * 控制台的输入 行号,列号 * 验证用户的输入是否合法,并且是否为可落入棋子的位置**** * 3、电脑(白棋)落入棋子,随机生成 20以内的行和列 * 验证随机生成的数中 是否为可落入棋子的位置 ,如果不是继续生成随机数 直到是可落入位置停止 * 4、判断输赢 * 如何判断 * 5、循环 2,3,4步骤 * 6、结束 */ ``` static String [][]qipan=new String[20][20]; static Scanner sc=new Scanner(System.in); public static void main(String[] args) { //初始化期盼 for (int i=0;i20||row<1||column>20||column<1){ System.out.println("玩家的落入点不在棋盘上,请重新录入"); continue; }else { //判断当前的位置是否可落入棋子 if (qipan[row-1][column-1]!="+\t"){ System.out.println("玩家的落入点已存在棋子,不能落入"); continue; }else { qipan[row-1][column-1]="●\t"; } } //白棋落入 int row1=0; int column1=0; //验证白棋落入是否为有效位置 while (true){ row1=(int)(Math.random()*20); column1=(int)(Math.random()*20); if (qipan[row1][column1]=="+\t"){ break; } } qipan[row1][column1]="○\t";
        //打印棋盘
        printPan();
        //判断输赢
        if (judge()){
            System.out.println(s+"赢了,游戏结束!!");
            break;
        }
    }
}

/**
 * 打印棋盘
 */
public static void printPan(){
    for (int i=0;i<qipan.length;i++){
        for (int j=0;j<qipan[i].length;j++){
            System.out.print(qipan[i][j]);
        }
        System.out.println();
    }
}
static String s="";//全局变量   用于表示某一方

public static boolean judge(){
    boolean flag=false;
    for (int i=0;i<qipan.length;i++){
        for (int j=0;j<qipan[i].length;j++){
            if (qipan[i][j]=="●\t"||qipan[i][j]=="○\t"){

                //判断右斜下方向
                if (i<16&&j<16
                        &&qipan[i][j]==qipan[i+1][j+1]
                        &&qipan[i][j]==qipan[i+2][j+2]
                        &&qipan[i][j]==qipan[i+3][j+3]
                        &&qipan[i][j]==qipan[i+4][j+4]){
                    s=qipan[i][j];
                    flag=true;
                    break;
                }else if (j<16&&
                qipan[i][j]==qipan[i][j+1]&&
                qipan[i][j]==qipan[i][j+2]&&
                qipan[i][j]==qipan[i][j+3]&&
                qipan[i][j]==qipan[i][j+4]){
                    //判断横向
                    s=qipan[i][j];
                    flag=true;
                    break;
                }
                else if (i<16&&j>4
                        &&qipan[i][j]==qipan[i+1][j-1]
                        &&qipan[i][j]==qipan[i+2][j-2]
                        &&qipan[i][j]==qipan[i+3][j-3]
                        &&qipan[i][j]==qipan[i+4][j-4]
                ){
                    //判断左斜下
                            s=qipan[i][j];
                    flag=true;
                    break;
                }
                else if(i>4 &&qipan[i][j]==qipan[i-1][j]
                             &&qipan[i][j]==qipan[i-2][j]
                             &&qipan[i][j]==qipan[i-3][j]
                             &&qipan[i][j]==qipan[i-4][j]
                ){
                    //判断向上
                    s=qipan[i][j];
                    flag=true;
                    break;
                }
            }
        }
    }
    return flag;
}

}




最简单样式,后续会组件优化  不喜勿碰,喜欢的点个赞,点个关注,谢谢
posted @ 2020-10-13 20:15  晓笙  阅读(114)  评论(0编辑  收藏  举报