五子棋java描述

package day04;
/**
2锛屼簲瀛愭娓告垙()
缂栧啓绋嬪簭瀹炵幇涓や汉浜掔帺鐨勪簲瀛愭娓告垙锛屾父鎴忓紑濮嬫椂瑕佹眰杈撳嚭浠ヤ笅妫嬬洏,鐒跺悗鎻愮ず榛戞柟鍜岀櫧鏂逛笅瀛?
鐜╁浠庡懡浠よ杈撳叆:a f,琛ㄧず鍦╝,f鍧愭爣钀藉瓙,鍏朵腑榛戞柟鐨勫瓙鐢ˊ琛ㄧず,鐧芥柟鐨勫瓙鐢∣琛ㄧず,
姣忔湁涓€鏂硅惤瀛?鍒欒閲嶆柊杈撳嚭妫嬬洏鐨勭姸鎬?绋嬪簭杩樿鑳藉垽鏂煇涓€鏂硅幏鑳?骞剁粓姝㈢▼搴?
 * @author root
 *
 */
import java.util.Scanner;
@SuppressWarnings("unused")
public class FiveChess {

 /**
  * @param args
  */
 public static void main(String[] args) {
  char[][] state=new char[16][16];
 
  for(int i=0;i<state.length;i++){//鍒濆鍖栨鐩?   for(int j=0;j<state[i].length;j++){
    state[i][j]='*';
   }
  }
  boolean isBlack=true;//褰撳墠鏄粦鏂逛笅瀛? 
  Scanner sca=new Scanner(System.in);
  printState(state);//杈撳嚭绌烘鐩?  while(true){
   System.out.println("璇?+(isBlack?"榛?:"鐧?)+"鏂逛笅 瀛?");
   int x=sca.next().charAt(0)-'a';//璇讳竴涓瓧绗︾粰x鍧愭爣
   int y=sca.next().charAt(0)-'a';//璇讳竴涓瓧绗︾粰y鍧愭爣
   if(state[x][y]=='@'||state[x][y]=='O'){//璇ヤ綅缃凡缁忔湁妫嬪瓙浜?
    System.out.println("璇ヤ綅缃凡缁忔湁妫嬪瓙锛岃閲嶆柊鎸囧畾鍧愭爣");
       continue;
   }
   state[x][y]=isBlack?'@':'O';//褰撳墠鏂逛笅妫嬪潗鏍?   printState(state);
   if(isWin(state,isBlack,x,y)){//濡傛灉鏈変竴鏂硅幏鑳?    System.out.println((isBlack?"榛?:"鐧?)+"鏂硅幏鑳?);
    break;
   }
   isBlack=!isBlack;//鎹汉涓嬫
  }
  
  

 }
 
/**
 * 妫嬬洏鍒锋柊鍑芥暟
 * @param state
 */ 
 public static void printState(char[][] state){
  System.out.print("   ");                          //杈撳嚭绗竴琛岀殑绌烘牸
  for(int i=0;i<state[0].length;i++){
   System.out.print((char)('a'+i)+"  ");        //绗竴琛岃緭鍑篴---p瀛楁瘝
  }
  System.out.print("/n");                          //杈撳嚭鎹㈣绗﹀彿
  
  for(int i=0;i<state.length;i++){                 //杈撳嚭姣忎竴琛岀殑鍐呭
   System.out.print((char)('a'+i)+"  ");        //姣忚鐨勭涓€涓綅缃负瀛楁瘝
   for(int j=0;j<state.length;j++){
    System.out.print(state[i][j]+"  ");      //杈撳嚭璇ヨ鐨勫唴瀹?   }
   System.out.print("/n");                      //鎹㈣鍚庡啀杈撳嚭涓嬩竴琛?  }
  
 }

 
 
/**
 * 姹傚嚭褰撳墠妫嬬洏鏄惁鏈夎幏鑳滄柟
 * @param state 妫嬬洏鏁扮粍
 * @param isBlack 褰撳墠妫嬪瓙鐨勯鑹? * @param x 褰撳墠妫嬪瓙鐨勬í鍧愭爣
 * @param y 褰撳墠妫嬪瓙鐨勭旱鍧愭爣
 * @return  鏄惁鑾疯儨
 */ 
 public static boolean isWin(char[][] state,boolean isBlack,int x,int y){
  //杩斿洖褰撳墠鏂规槸鍚﹁幏鑳? 
  return isShuiPingWin(state,isBlack,x,y)||isChuiZhiWin(state,isBlack,x,y)||
         isZuoXieWin(state,isBlack,x,y)||isYouXieWin(state,isBlack,x,y);
  
 }
/**
* 鍒ゆ柇鏄惁鏄按骞虫柟鍚戣幏鑳?* @param state 妫嬬洏鏁扮粍
* @param isBlack 褰撳墠妫嬪瓙鐨勯鑹?* @param x 褰撳墠妫嬪瓙鐨勬í鍧愭爣
* @param y 褰撳墠妫嬪瓙鐨勭旱鍧愭爣
* @return  鏄惁鑾疯儨
*/   

 public static boolean isShuiPingWin(char[][] state,boolean isBlack,int x,int y){  
  char c=isBlack?'@':'O';
        int a=0;//宸︾浉杩炴瀛愭暟
        int b=0;//鍙崇浉杩炴瀛愭暟
  //鍚戝乏鎵?  while(y>=0){//婊¤冻鎼滅储鏉′欢    
   
   if(y==0) break;//y涓嶈兘鍐嶅線宸﹁蛋浜?   if(state[x][y-a]!=c){//鎼滅储鍒扮殑妫嬪瓙涓庡綋鍓嶆瀛愪笉鍚岃壊鎴栨病鏈夋瀛?    a=a-1;
    break;
   }
   a++;
   if(y-a<0){a=a-1;break;}//鏁扮粍瓒婄晫
  }

  //鍚戝彸鎵?  while((y<state.length)){//婊¤冻鎼滅储鏉′欢 
   
   if(y==state.length-1)break;//y涓嶈兘鍐嶅線鍙宠蛋浜?   if(state[x][y+b]!=c){//鎼滅储鍒扮殑妫嬪瓙涓庡綋鍓嶆瀛愪笉鍚岃壊鎴栨病鏈夋瀛?    b=b-1;
    break;
   }
   b++;
   if(y+b>state.length-1){b=b-1;break;}//鏁扮粍瓒婄晫
  }    
  if(1+a+b==5){//鍒ゆ柇鐩歌繛妫嬪瓙鏁版槸5
   return true;
  }
  else{
   return false;
  }
  
  
 }

 
 
/**
 * 鍒ゆ柇鏄惁鏄瀭鐩存柟鍚戣幏鑳? * @param state 妫嬬洏鏁扮粍
 * @param isBlack 褰撳墠妫嬪瓙鐨勯鑹? * @param x 褰撳墠妫嬪瓙鐨勬í鍧愭爣
 * @param y 褰撳墠妫嬪瓙鐨勭旱鍧愭爣
 * @return  鏄惁鑾疯儨
 */
 public static boolean isChuiZhiWin(char[][] state,boolean isBlack,int x,int y){
  char c=isBlack?'@':'O';
        int a=0;//涓婄浉杩炴瀛愭暟
        int b=0;//涓嬬浉杩炴瀛愭暟
  //鍚戜笂鎵?  while(x>=0){//婊¤冻鎼滅储鏉′欢    
   
   if(x==0) break;//x涓嶈兘鍐嶅線涓婅蛋浜?   if(state[x-a][y]!=c){//鎼滅储鍒扮殑妫嬪瓙涓庡綋鍓嶆瀛愪笉鍚岃壊鎴栨病鏈夋瀛?    a=a-1;
    break;
   }
   a++;
   if(x-a<0){a=a-1;break;}//鏁扮粍瓒婄晫
  }

  //鍚戜笅鎵?  while((x<state[y].length)){//婊¤冻鎼滅储鏉′欢 
   
   if(x==state[y].length-1)break;//x涓嶈兘鍐嶅線涓嬭蛋浜?   if(state[x+b][y]!=c){//鎼滅储鍒扮殑妫嬪瓙涓庡綋鍓嶆瀛愪笉鍚岃壊鎴栨病鏈夋瀛?    b=b-1;
    break;
   }
   b++;
   if(x+b>state[y].length-1){//鏁扮粍瓒婄晫
    b=b-1;
    break;
    }
   
  }    
  if(1+a+b==5){//鍒ゆ柇鐩歌繛妫嬪瓙鏁版槸5
   return true;
  }
  else{
   return false;
  }
 }

 
 
/**
 * 鍒ゆ柇鏄惁鏄乏鏂滄柟鍚戣幏鑳? * @param state 妫嬬洏鏁扮粍
 * @param isBlack 褰撳墠妫嬪瓙鐨勯鑹? * @param x 褰撳墠妫嬪瓙鐨勬í鍧愭爣
 * @param y 褰撳墠妫嬪瓙鐨勭旱鍧愭爣
 * @return  鏄惁鑾疯儨
 */
 public static boolean isZuoXieWin(char[][] state,boolean isBlack,int x,int y){
  char c=isBlack?'@':'O';
        int a=0;//鍙充笂鐩歌繛妫嬪瓙鏁?        int b=0;//宸︿笅鐩歌繛妫嬪瓙鏁?  //鍚戜笂鎵?  while(x>=0&&y<=state[x].length-1){//婊¤冻鎼滅储鏉′欢    
   
   if(x==0) break;//x涓嶈兘寰€涓婅蛋浜?   if(y==state.length-1) break;//y涓嶈兘寰€鍙宠蛋浜?   if(state[x+a][y-a]!=c){//鎼滅储鍒扮殑妫嬪瓙涓庡綋鍓嶆瀛愪笉鍚岃壊鎴栨病鏈夋瀛?    a=a-1;
    break;
   }
   a++;
   if(x+a>state.length-1||y-a<0){//鏁扮粍瓒婄晫
    a=a-1;
    break;
   }
  }

  //鍚戜笅鎵?  while(x<=state.length-1&&y>=0){//婊¤冻鎼滅储鏉′欢 
   
   if(x==state.length-1)break;//x涓嶈兘寰€涓嬭蛋浜?   if(y==0)break;//y涓嶈兘寰€宸﹁蛋浜?   if(state[x-b][y+b]!=c){//鎼滅储鍒扮殑妫嬪瓙涓庡綋鍓嶆瀛愪笉鍚岃壊鎴栨病鏈夋瀛?    b=b-1;
    break;
   }
   b++;
   if(x-b<0||y+b>state[x].length-1){//鏁扮粍瓒婄晫
    b=b-1;
    break;
   }
  }    
  if(1+a+b==5){//鍒ゆ柇鐩歌繛妫嬪瓙鏁版槸5
   return true;
  }
  else{
   return false;
  }
 }
 
 
 
/**
 * 鍒ゆ柇鏄惁鏄張鏂滄柟鍚戣幏鑳? * @param state 妫嬬洏鏁扮粍
 * @param isBlack 褰撳墠妫嬪瓙鐨勯鑹? * @param x 褰撳墠妫嬪瓙鐨勬í鍧愭爣
 * @param y 褰撳墠妫嬪瓙鐨勭旱鍧愭爣
 * @return  鏄惁鑾疯儨
 */
 public static boolean isYouXieWin(char[][] state,boolean isBlack,int x,int y){
  char c=isBlack?'@':'O';
        int a=0;//鍙充笂鐩歌繛妫嬪瓙鏁?        int b=0;//宸︿笅鐩歌繛妫嬪瓙鏁?  //鍚戜笂鎵?  while(x>=0&&y<=0){//婊¤冻鎼滅储鏉′欢   
   
   if(x==0) break;//x涓嶈兘寰€涓婅蛋浜?   if(y==0) break;//y涓嶈兘寰€宸﹁蛋浜?   if(state[x-a][y-a]!=c){//鎼滅储鍒扮殑妫嬪瓙涓庡綋鍓嶆瀛愪笉鍚岃壊鎴栨病鏈夋瀛?    a=a-1;
    break;
   }
   a++;
   if(x-a<0||y-a<0){a=a-1;break;}//鏁扮粍瓒婄晫
  }

  //鍚戜笅鎵?  while(x<=state.length-1&&y<=state[x].length-1){
   
   if(x==state.length-1)break;//x涓嶈兘鍐嶅線涓嬭蛋浜?   if(y==state[x].length-1)break;//y涓嶈兘鍐嶅線鍙宠蛋浜?   if(state[x+b][y+b]!=c){//鎼滅储鍒扮殑妫嬪瓙涓嶄笌褰撳墠妫嬪瓙鍚岃壊鎴栨病鏈夋瀛?    b=b-1;
    break;
   }
   b++;
   if(x+b>state.length-1||y+b>state[x].length-1){//鏁扮粍瓒婄晫
    b=b-1;break;
    }
  }    
  if(1+a+b==5){//鍒ゆ柇鐩歌繛妫嬪瓙鏁版槸5
   return true;
  }
  else{
   return false;
  }
 }
 
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值