首页 > 代码库 > 控制台简单五子棋

控制台简单五子棋

  1 import java.util.Scanner;  2    3 //控制台简单五子棋  4 public class wuziqi {  5    6     //二维数组作为棋盘  7     private static char[][] board=new char[16][16];  8     //已下棋子数目  9     private static int cnt; 10     //分别代表玩家1,2的棋子 11     private static char[] qizi={‘#‘,‘@‘}; 12     //八方向搜索检测 13     private static int[] dx={-1,0,-1,-1,1,1,0,1}; 14     private static int[] dy={0,-1,-1,1,-1,1,1,0}; 15       16     //输入检测 17     private static int CheckInput(int x,int y){ 18           19         if(board[x][y]!=‘+‘) 20             return 0; 21         if(x<1||x>15||y<1||y>15) 22             return 0; 23         return 1; 24     } 25       26         //边界检测 27     private static int Check(int x,int y){ 28         if(x>15||x<1||y>15||y<1) 29             return 0; 30         return 1; 31     } 32     //检测玩家是否获胜,需要传入玩家编号,及当前落点坐标 33     private static int CheckAns(int num,int x,int y){ 34         if(cnt==15*15) 35             return 1; 36         //横竖 左斜 右斜 四个方向判断是否有五个棋子连在一起 37         for(int i=0;i<4;i++){ 38             int sum=1; 39             int xx=x+dx[i]; 40             int yy=y+dy[i]; 41             while(board[xx][yy]==qizi[num]&&Check(xx,yy)==1){ 42                 sum++; 43                 xx=xx+dx[i]; 44                 yy=yy+dy[i]; 45             } 46             xx=x+dx[7-i]; 47             yy=y+dy[7-i]; 48             while(board[xx][yy]==qizi[num]&&Check(xx,yy)==1){ 49                 sum++; 50                 xx=xx+dx[7-i]; 51                 yy=yy+dy[7-i]; 52             } 53             if(sum>=5) 54                 return 1; 55         } 56         return 0; 57     } 58       59     //初始化 60     private static void Init(){ 61         cnt=0; 62         for(int i=1;i<=15;i++) 63             for(int j=1;j<=15;j++) 64                 board[i][j]=‘+‘; 65     } 66       67     //输出棋盘 68     private static void Print(){ 69         int i,j; 70         for(i=1;i<=15;i++){ 71             for(j=1;j<=15;j++){ 72                   73                 System.out.print(board[i][j]); 74             } 75             System.out.println(); 76         } 77     } 78       79     public static int run(){ 80           81         int x,y; 82         Init(); 83         //当前棋手编号,默认0号先下 84         int num=0; 85         while(true){ 86             Print(); 87             System.out.print(num+1+"号选手请输入您下棋的坐标,应以x y形式: "); 88             Scanner sc =new Scanner(System.in); 89             while(true){ 90                 x=sc.nextInt(); 91                 y=sc.nextInt(); 92                 if(CheckInput(x,y)==1) 93                     break; 94                 System.out.print("输入坐标不合法,请重新输入: "); 95             } 96             board[x][y]=qizi[num]; 97             if(CheckAns(num,x,y)==1){ 98                 return num+1; 99             }100             num=1-num;101         }102     }103      104     public static void main(String[] args){105          106         System.out.println("欢迎使用lkl的五子棋!");107         int ans=run();108         System.out.println("恭喜"+ans+"号选手获得最终的胜利");109     }110 }

 

控制台简单五子棋