• 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]!="+ "){ System.out.println("玩家的落入点已存在棋子,不能落入"); continue; }else { qipan[row-1][column-1]="● "; } } //白棋落入 int row1=0; int column1=0; //验证白棋落入是否为有效位置 while (true){ row1=(int)(Math.random()*20); column1=(int)(Math.random()*20); if (qipan[row1][column1]=="+ "){ break; } } qipan[row1][column1]="○ ";
            //打印棋盘
            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]=="●	"||qipan[i][j]=="○	"){
    
                    //判断右斜下方向
                    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;
    }
    

    }

    
    
    
    最简单样式,后续会组件优化  不喜勿碰,喜欢的点个赞,点个关注,谢谢
  • 相关阅读:
    ubuntu下 apt-get install 下载的文件存放的目录
    ubuntu 上更新安装 openoffice.org3的过程
    ubuntu中flash的中文乱码解决方法
    ubuntu 安装AMP环境的笔记 Prefork方式与fast-cgi方法
    socket 基础知识
    php 处理透明背景的图片时的问题
    RHEL 8 Speculation
    心之力
    (OK) 在内核中,获得 某目的地址的下一跳的数目,kernel 4.4
    Linux内核分析
  • 原文地址:https://www.cnblogs.com/zzk201/p/13810888.html
Copyright © 2020-2023  润新知