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 }
时间: 2024-10-24 08:09:42