21xrx.com
2025-03-25 15:22:44 Tuesday
文章检索 我的文章 写文章
Java代码示例:如何实现随机生成雷区
2023-06-16 15:36:51 深夜i     14     0
Java 随机生成 雷区

在游戏开发中,雷区的随机生成是一个常见需求。本文将介绍如何使用Java代码实现随机生成雷区的功能。

实现步骤:

1. 定义雷区数组,并初始化所有格子为0(表示未走过的空格)。

2. 随机生成10个雷的位置(本例子中仅生成10个雷)。

3. 将随机生成的10个雷的x,y坐标对应雷区数组中的格子设置为-1(表示这个格子有雷)。

4. 遍历雷区数组,对于没有被设置为-1的格子,计算周围雷的数量,并将这个数量赋值给格子。

代码实现:

public class RandomMinesweeper {
  public static void main(String[] args) {
    int[][] minesweeper = new int[10][10]; //定义雷区数组
    initMinesweeper(minesweeper);
    printMinesweeper(minesweeper);
  }
  /**
   * 初始化雷区数组
   */
  public static void initMinesweeper(int[][] minesweeper) {
    //初始化所有格子为0
    for (int i = 0; i < minesweeper.length; i++) {
      for (int j = 0; j < minesweeper[i].length; j++) {
        minesweeper[i][j] = 0;
      }
    }
    //随机生成雷的位置,并将雷的位置设置为-1
    for (int i = 0; i < 10; i++) {
      int x = (int) (Math.random() * 10);
      int y = (int) (Math.random() * 10);
      if (minesweeper[x][y] == -1) { //如果这个位置已经是雷了,就再重新生成一个位置
        i--;
      } else//否则将这个位置设置为雷
        minesweeper[x][y] = -1;
      }
    }
    //计算周围雷的数量,并将这个数量赋值给格子
    for (int i = 0; i < minesweeper.length; i++) {
      for (int j = 0; j < minesweeper[i].length; j++) {
        if (minesweeper[i][j] == -1) { //如果这个位置是雷,跳过
          continue;
        }
        //计算周围雷的数量
        int count = 0;
        for (int m = i - 1; m <= i + 1; m++) {
          for (int n = j - 1; n <= j + 1; n++) {
            if (m >= 0 && m < minesweeper.length && n >= 0 && n < minesweeper[i].length
                && minesweeper[m][n] == -1) {
              count++;
            }
          }
        }
        //将周围雷的数量赋值给格子
        minesweeper[i][j] = count;
      }
    }
  }
  /**
   * 输出雷区数组
   */
  public static void printMinesweeper(int[][] minesweeper) {
    for (int i = 0; i < minesweeper.length; i++) {
      for (int j = 0; j < minesweeper[i].length; j++) {
        System.out.printf("%2d", minesweeper[i][j]);
      }
      System.out.println();
    }
  }
}

  
  

评论区