下落棋

简介: 能够画出9*9格,有两个棋手A,B,交替输入列数0-9,由于重力原理,输入这个列下几行没有棋子,则自动下落;A显示棋子是X,B显示棋子O,要求当出现四连胜利!A和B交替进行:

能够画出9*9格,有两个棋手A,B,交替输入列数0-9,由于重力原理,输入这个列下几行没有棋子,则自动下落;A显示棋子是X,B显示棋子O,要求当出现四连胜利!A和B交替进行:


import java.util.Scanner;



public class practice7Arrays{

   //悬挂的四子棋

   public static void main(String[]args){

       Scanner input = new Scanner(System.in);

       String[][] qi = new String[6][7];

       String yuanShiYuanSu = "|   ";

       String yellow = "| Y ";

       String red = "| R ";

       int count = 0;//谁下子及下了多少子的判断计数器

       //初始化棋子数组

       for(int i = 0;i < qi.length;i++)

           for(int j = 0;j < qi[0].length;j++)

               qi[i][j] = yuanShiYuanSu;

       //画出原始棋盘

       System.out.println("-----------------------------");

       for(int i = qi.length - 1;i >= 0;i--){

           for(int j = 0;j < qi[0].length;j++)

               System.out.print(qi[i][j]);

           System.out.println("|");

           System.out.println("-----------------------------");

       }

       for(int i = 0;i < qi[0].length;i++)

           System.out.print("* "+(i+1)+" ");

       System.out.println("*");


       int row = 0,column = 0;//行列下标初始化

       //下棋循环开始

       while (true) {

           row = 0;

           column = 0;

           if (count % 2 == 0) {//黄方下子

               System.out.print("\n\nY player please drop a yellow disk at column(1~7):");

               while (true) {//黄方下子循环开始

                   column = input.nextInt() - 1;

                   if (column >= 0 && column <= 6) {// 输入合法进行下子

                       for (row = 0; row < qi.length; row++) {

                           if (qi[row][column] == yuanShiYuanSu) {

                               qi[row][column] = yellow;

                               break;

                           }

                       }

                       if (row == qi.length)//该列棋子满,重新输入

                           System.out.print("The column of you enter is full,"

                                   + "please reEnter! : ");

                       else//棋子没满,下子结束

                           break;

                   }

                   else// 输入不合法,重新下子

                       System.out.print("You enter the wrong column,"

                               + "please reEnter! : ");

               }//黄方下子循环结束

           }//if(count % 2 == 0)

           else{//红方下子

               System.out.print("\n\nR player please drop a yellow disk at column(1~7):");

               while (true) {//红方下子循环开始

                   column = input.nextInt() - 1;

                   if (column >= 0 && column <= 6) {// 输入合法进行下子

                       for (row = 0; row < qi.length; row++) {

                           if (qi[row][column] == yuanShiYuanSu) {

                               qi[row][column] = red;

                               break;

                           }

                       }

                       if (row == qi.length)//该列棋子满,重新输入

                           System.out.print("The column of you enter is full,"

                                   + "please reEnter! : ");

                       else//棋子没满,下子结束

                           break;

                   }

                   else// 输入不合法,重新下子

                       System.out.print("You enter the wrong column,"

                               + "please reEnter! : ");

               }//红方下子循环结束

           }//if(count % 2 != 0)



           //画出棋盘

           System.out.println("-----------------------------");

           for(int i = qi.length - 1;i >= 0;i--){

               for(int j = 0;j < qi[0].length;j++)

                   System.out.print(qi[i][j]);

               System.out.println("|");

               System.out.println("-----------------------------");

           }

           for(int i = 0;i < qi[0].length;i++)

               System.out.print("* "+(i+1)+" ");

           System.out.println("*");


           //输赢标志位

           boolean flagForYWin = false;

           boolean flagForRWin = false;


           //只需对当前下子的周围情况进行判断来决定棋局结果

           if (count % 2 == 0) {//yellow player is win?

               //行检测开始

               if (column <= 3) {

                   for (int jj = 0; jj <= column; jj++)

                       if (qi[row][jj] == yellow

                               && qi[row][jj + 1] == yellow

                               && qi[row][jj + 2] == yellow

                               && qi[row][jj + 3] == yellow) {

                           flagForYWin = true;

                           break;

                       }

               }

               else {

                   for (int jj = column - 3; jj <= 3; jj++)

                       if (qi[row][jj] == yellow

                               && qi[row][jj + 1] == yellow

                               && qi[row][jj + 2] == yellow

                               && qi[row][jj + 3] == yellow) {

                           flagForYWin = true;

                           break;

                       }

               }

               if (flagForYWin) {

                   System.out.println("The yellow player win the game!");

                   break;

               }


               //列检测开始

               if (row >= 3) {

                   if (qi[row][column] == yellow

                           && qi[row - 1][column] == yellow

                           && qi[row - 2][column] == yellow

                           && qi[row - 3][column] == yellow)

                       flagForYWin = true;

               }

               if (flagForYWin) {

                   System.out.println("The yellow player win the game!");

                   break;

               }


               //正反对角检测

               if(row >= 3){

                   if(column < 3){

                       if (qi[row][column] == yellow

                               && qi[row - 1][column + 1] == yellow

                               && qi[row - 2][column + 2] == yellow

                               && qi[row - 3][column + 3] == yellow)

                           flagForYWin = true;

                   }

                   else if(column > 3){

                       if (qi[row][column] == yellow

                               && qi[row - 1][column - 1] == yellow

                               && qi[row - 2][column - 2] == yellow

                               && qi[row - 3][column - 3] == yellow)

                           flagForYWin = true;

                   }

                   else{

                       if ((qi[row][column] == yellow

                               && qi[row - 1][column + 1] == yellow

                               && qi[row - 2][column + 2] == yellow

                               && qi[row - 3][column + 3] == yellow)

                               || (qi[row][column] == yellow

                               && qi[row - 1][column - 1] == yellow

                               && qi[row - 2][column - 2] == yellow

                               && qi[row - 3][column - 3] == yellow))

                           flagForYWin = true;

                   }

               }

               if (flagForYWin) {

                   System.out.println("The yellow player win the game!");

                   break;

               }

           }//yellow player is win?

           else{//red player is win?

               //行检测开始

               if (column <= 3) {

                   for (int jj = 0; jj <= column; jj++)

                       if (qi[row][jj] == red

                               && qi[row][jj + 1] == red

                               && qi[row][jj + 2] == red

                               && qi[row][jj + 3] == red) {

                           flagForRWin = true;

                           break;

                       }

               }

               else {

                   for (int jj = column - 3; jj <= 3; jj++)

                       if (qi[row][jj] == red

                               && qi[row][jj + 1] == red

                               && qi[row][jj + 2] == red

                               && qi[row][jj + 3] == red) {

                           flagForRWin = true;

                           break;

                       }

               }

               if (flagForRWin) {

                   System.out.println("The red player win the game!");

                   break;

               }


               //列检测开始

               if (row >= 3) {

                   if (qi[row][column] == red

                           && qi[row - 1][column] == red

                           && qi[row - 2][column] == red

                           && qi[row - 3][column] == red)

                       flagForRWin = true;

               }

               if (flagForRWin) {

                   System.out.println("The red player win the game!");

                   break;

               }


               //正反对角检测

               if(row >= 3){

                   if(column < 3){

                       if (qi[row][column] == red

                               && qi[row - 1][column + 1] == red

                               && qi[row - 2][column + 2] == red

                               && qi[row - 3][column + 3] == red)

                           flagForRWin = true;

                   }

                   else if(column > 3){

                       if (qi[row][column] == red

                               && qi[row - 1][column - 1] == red

                               && qi[row - 2][column - 2] == red

                               && qi[row - 3][column - 3] == red)

                           flagForRWin = true;

                   }

                   else{

                       if ((qi[row][column] == red

                               && qi[row - 1][column + 1] == red

                               && qi[row - 2][column + 2] == red

                               && qi[row - 3][column + 3] == red)

                               || (qi[row][column] == red

                               && qi[row - 1][column - 1] == red

                               && qi[row - 2][column - 2] == red

                               && qi[row - 3][column - 3] == red))

                           flagForRWin = true;

                   }

               }

               if (flagForRWin) {

                   System.out.println("The red player win the game!");

                   break;

               }

           }


           count++;//棋子数加1,并用于谁下棋子的判断


           //棋盘下满棋子,是平局

           if(count == 6*7){

               System.out.println("棋盘棋子已经下满,是平局!");

               break;

           }

       }//下棋循环结束

   }//方法块


}//类块


相关文章
|
自然语言处理 搜索推荐 开发者
GitHub Copilot Enterprise三大创新功能
【2月更文挑战第9天】GitHub Copilot Enterprise三大创新功能
338 4
GitHub Copilot Enterprise三大创新功能
|
7月前
|
机器学习/深度学习 文字识别 自然语言处理
OCR技术:数字化办公的“隐形助手”
在数字化办公时代,OCR(光学字符识别)技术如同一位“隐形助手”,将纸质文档转化为可编辑的电子文本,大幅提升工作效率与准确性。它不仅革新了文档处理方式,还通过智能化应用实现票据识别、客户信息录入等功能,助力财务和CRM系统自动化。此外,OCR技术能挖掘文档数据价值,支持决策分析,并可通过个性化定制满足跨语言协作或内容搜索等需求。开发者可结合自然语言处理、机器学习等技术,探索更多创新应用场景,如智能文档管理和内容可视化工具。OCR技术正以高效、智能的方式,推动办公流程全面升级,激发无限可能。
430 57
|
人工智能 弹性计算 搜索推荐
打造个性化的微信公众号AI小助手:从人设到工作流程
在数字化时代,一个有个性且功能强大的AI小助手能显著提升用户体验。本文档指导如何在微信公众号上设置AI小助手“小智”,涵盖其人设、功能规划及工作流程设计,旨在打造一个既智能又具吸引力的AI伙伴。
1061 0
|
11月前
|
存储 开发者 Python
python基本语法
Python的基本语法简洁而强大,支持多种编程范式,包括面向对象编程和函数式编程。通过掌握变量和数据类型、操作符、控制结构、函数、类和模块等基本概念,可以有效地编写高效、可读的Python代码。无论是初学者还是经验丰富的开发者,Python都提供了丰富的工具和库来满足各种编程需求。
352 13
|
机器学习/深度学习 人工智能 算法
探索机器学习:从线性回归到深度学习
本文将带领读者从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过代码示例,展示如何实现这些算法,并解释其背后的数学原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。让我们一起踏上这段激动人心的旅程吧!
218 3
|
机器学习/深度学习 人工智能 自然语言处理
当前AI大模型在软件开发中的创新应用与挑战
【10月更文挑战第31天】2024年,AI大模型在软件开发领域的应用取得了显著进展,从自动化代码生成、智能代码审查到智能化测试,极大地提升了开发效率和代码质量。然而,技术挑战、伦理与安全问题以及模型可解释性仍是亟待解决的关键问题。开发者需不断学习和适应,以充分利用AI的优势。
|
12月前
|
运维 监控 Cloud Native
云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警
在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。
379 0
|
Java
Java“NumberFormatException”解决
当尝试将字符串转换为数字时,若字符串格式不正确,则会抛出“NumberFormatException”。解决方法:1. 检查字符串是否为空或仅包含空白字符;2. 确保字符串中的字符都是数字;3. 使用异常处理捕获并处理该异常。
658 1
|
人工智能 弹性计算 Kubernetes
【云故事探索】NO.10:厦门立马耀的数字化转型之路
厦门立马耀网络科技有限公司在数字化转型中,凭借敏锐的市场洞察和技术创新,将云计算深度融合于业务。其品牌“蝉妈妈”为中小企业提供全方位数字营销解决方案,成为行业标杆。面对快速变化的市场需求,公司通过与阿里云合作,构建高可靠性计算平台,提升效率,并利用AI技术赋能客户,推动业务多元化发展,展现了云计算在企业成长中的巨大潜力。
|
前端开发 JavaScript Java
LayUI入门简介(详解)
LayUI入门简介(详解)
1653 0