码迷,mamicode.com
首页 > 其他好文 > 详细

控制台简单五子棋

时间:2014-12-07 01:17:07      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   使用   sp   for   java   div   

  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 }

 

控制台简单五子棋

标签:style   blog   ar   color   使用   sp   for   java   div   

原文地址:http://www.cnblogs.com/liuhongfeng/p/4149009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!