smanzheng 发表于 2015-07-01 13:13

控制台扫雷

代码import java.util.Random;
import java.util.Scanner;
public class MimeService {
    //地雷格子
    final int x=10;
    final int y=10;
    //总的地雷数
    final int N=20;
    public int[][] init() {
      int[][] mime=new int;
      int count=0;
      Random random=new Random();
      //初始化地雷
      while (count<=N) {
            int x1=random.nextInt(x);
            int y1=random.nextInt(y);
            if(mime==0){
                mime=9;
                count+=1;
            }
      }
      //统计每个格子(不是地雷)周围地雷个数
      for(int i=0;i<mime.length;i++){
            for(int j=0;j<mime.length;j++){
                int mimeCount=0;
                if((j+1)<mime.length && mime==9){
                  mimeCount+=1;
                }
                if((j-1)>=0 && mime==9){
                  mimeCount+=1;         
                }
                if((i+1)<mime.length && (j+1)<mime.length && mime==9){
                  mimeCount+=1;
                }
                if((i+1)<mime.length && (j-1)>=0 && mime==9){
                  mimeCount+=1;               
                }
                if((i-1)>=0 && (j+1)<mime.length && mime==9){
                  mimeCount+=1;
                }
                if((i-1)>=0 && (j-1)>=0 && mime==9){
                  mimeCount+=1;
                }
                if((i-1)>=0 && mime==9){
                  mimeCount+=1;
                }
                if((i+1)<mime.length && mime==9){
                  mimeCount+=1;
                }
                if(mime!=9){
                  mime=mimeCount;
                }
            }
      }
      return mime;
    }
    public void whiteBoard(int[][]mime,char[][] or,int x,int y ) {
      or='0';
      if((y+1)<mime.length && or=='K'){
            if(mime!=0){
                or=(char)(mime+48);
            }else {
                whiteBoard(mime, or, x, y+1);
            }
      }
      if((y-1)>=0 && or=='K'){
            if(mime!=0){
                or=(char)(mime+48);
            }else {
                whiteBoard(mime, or, x, y-1);
            }         
      }
      if((x+1)<mime.length && (y+1)<mime.length && or=='K'){
            if(mime!=0){
                or=(char)(mime+48);
            }else {
                whiteBoard(mime, or, x+1, y+1);
            }      
      }
      if((x+1)<mime.length && (y-1)>=0 && or=='K'){
            if(mime!=0){
                or=(char)(mime+48);
            }else {
                whiteBoard(mime, or, x+1, y-1);
            }      
      }
      if((x-1)>=0 && (y+1)<mime.length && or=='K'){
            if(mime!=0){
                or=(char)(mime+48);
            }else {
                whiteBoard(mime, or, x-1, y+1);
            }      
      }
      if((x-1)>=0 && (y-1)>=0 && or=='K'){
            if(mime!=0){
                or=(char)(mime+48);
            }else {
                whiteBoard(mime, or, x-1, y-1);
            }      
      }
      if((x-1)>=0 && or=='K'){
            if(mime!=0){
                or=(char)(mime+48);
            }else {
                whiteBoard(mime, or, x-1, y);
            }   
      }
      if((x+1)<mime.length && or=='K'){
            if(mime!=0){
                or=(char)(mime+48);
            }else {
                whiteBoard(mime, or, x+1, y);
            }   
      }
    }
   
    public static void main(String[] args) {
      MimeService mineS=new MimeService();
         
      int[][] mine=mineS.init();
//      for(int i=0;i<mine.length;i++){
//          for(int j=0;j<mine.length;j++){
//            System.out.print(mine+"");
//          }
//          System.out.println();
//      }
      //初始化
      char[][] or=new char.length];
      for(int i=0;i<mine.length;i++){
            for(int j=0;j<mine.length;j++){
                or='K';
            }
      }
      int totol=80;
      while (totol<=80) {
            System.out.println("输入格式 :1 3 c(x坐标,y坐标,点击)||输入格式 :1 3 m(x坐标,y坐标,标记为类) ");
            System.out.println("扫雷开始:");
            for(int i=0;i<mine.length;i++){
                for(int j=0;j<mine.length;j++){
                  System.out.print(or+"");
                }
                System.out.println();
            }
            System.out.println("---------------------------------");
            Scanner scanner =new Scanner(System.in);
            int y=scanner.nextInt()-1;
            int x=scanner.nextInt()-1;
            String sign=scanner.next();
            if(sign.equalsIgnoreCase("C")){
                if(mine==9){
                  System.out.println("game over!!!");
                  break;
                }else if (mine<9&&mine>0) {
                  or=(char)(48+mine);
                }else if(mine==0) {
                  mineS.whiteBoard(mine, or, x, y);
                }
            }else {
                or='M';
            }
            
      }
    }
}
页: [1]
查看完整版本: 控制台扫雷