21xrx.com
2024-09-20 00:52:07 Friday
登录
文章检索 我的文章 写文章
Java代码示例:如何实现随机生成雷区
2023-06-16 15:36:51 深夜i     --     --
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();

    }

  }

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复