Java實現簡單的掃雷圖

用Java實現簡單的掃雷圖,供大傢參考,具體內容如下

掃雷圖的思想是:

1、地圖可以是一個二維數組,並對數組進行初始化

2、隨機生成雷的位置,可以用Random函數進行隨機生成也可以用Math.random()進行隨機生成

(PS:我就是簡單隨機下標生成瞭雷的位置)

3、對每一個非雷的位置一周的格子進行判斷是否有雷,進行數字的累加

4、遍歷數組進行輸出

private static void mineClearance() {
  // 聲明一個二維數組表示掃雷地圖
  String[][] mineClearanceMap = new String[9][9];
  //初始化數組
  for (int i = 0; i < mineClearanceMap.length; i++) {
   for (int j = 0; j < mineClearanceMap.length; j++) {
    mineClearanceMap[i][j] = "0";
   }
  }
  Random random = new Random();
  //隨機生成地雷
  for (int i = 0; i < 25; i++) {
   mineClearanceMap[random.nextInt(mineClearanceMap.length)][random.nextInt(mineClearanceMap.length)] = "*";// *表示雷
  }

  //mineClearanceMap[i][j]的一周的坐標,用i+x,j+y得到周圍的坐標
  int x[] = { -1, -1, -1, 0, 0, 1, 1, 1 };
  int y[] = { -1, 0, 1, -1, 1, -1, 0, 1 };

  for (int i = 0; i < mineClearanceMap.length - 1; i++) {
   for (int j = 0; j < mineClearanceMap.length - 1; j++) {
    int count = 0;
    if (!"*".equals(mineClearanceMap[i][j])) {
     for (int k = 0; k < 8; k++) {
      int xx = i + x[k];
      int yy = j + y[k];
      if (xx >= 0 && yy >= 0) {// 坐標不能出界,數組從(0,0)開始
       if (mineClearanceMap[xx][yy] == "*") {
        count = count + 1;// 累計這八個方位的雷總數
       }
      }
     }
     mineClearanceMap[i][j] = count + "";// 輸出每個位置周圍的雷數
    }

   }

  }

  System.out.println("得到的掃雷圖,*為雷");
  for (int j = 0; j < mineClearanceMap.length; j++) {
   for (int j2 = 0; j2 < mineClearanceMap.length; j2++) {
    System.out.print(mineClearanceMap[j][j2]);
   }
   System.out.println();
  }

 }

運行截圖

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: