下落棋-阿里云开发者社区

开发者社区> 一条coding> 正文

下落棋

简介: 能够画出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;

           }

       }//下棋循环结束

   }//方法块


}//类块


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26795 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10092 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
11633 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10886 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
11819 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
4510 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
22409 0
+关注
121
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载