Java实现简单的扫雷图

 更新时间:2021年05月11日 06:57:45   作者:麋鹿不知归途  
这篇文章主要为大家详细介绍了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();
  }

 }

运行截图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • IDEA 2020.3最新永久激活码(免费激活到 2099 年,亲测有效)

    IDEA 2020.3最新永久激活码(免费激活到 2099 年,亲测有效)

    分享一下 IntelliJ IDEA 2020.3.1 最新激活注册码,破解教程如下,可免费激活至 2099 年,亲测有效,本文给大家分享两种方法,感兴趣的朋友参考下吧
    2021-01-01
  • spring配置不扫描service层的原因解答

    spring配置不扫描service层的原因解答

    这篇文章主要介绍了spring配置不扫描service层的原因解答,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java FTP上传下载删除功能实例代码

    Java FTP上传下载删除功能实例代码

    这篇文章主要介绍了Java FTP上传下载删除功能实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • springboot整合mybatis实现数据库的更新批处理方式

    springboot整合mybatis实现数据库的更新批处理方式

    这篇文章主要介绍了springboot整合mybatis实现数据库的更新批处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • @PathVariable、@RequestParam和@RequestBody的区别

    @PathVariable、@RequestParam和@RequestBody的区别

    本文主要介绍了@PathVariable、@RequestParam和@RequestBody的区别和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • ehcache模糊批量移除缓存的方法

    ehcache模糊批量移除缓存的方法

    本篇文章主要介绍了ehcache模糊批量移除缓存的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • JAVA中时间戳与LocalDateTime互相转换代码例子

    JAVA中时间戳与LocalDateTime互相转换代码例子

    最近在编码过程中遇到将时间戳转化为 LocalDateTime,所以这里给总结下,这篇文章主要给大家介绍了关于JAVA中时间戳与LocalDateTime互相转换的相关资料,需要的朋友可以参考下
    2023-11-11
  • Java求两集合中元素交集的四种方法对比分析

    Java求两集合中元素交集的四种方法对比分析

    这篇文章主要介绍了Java求两集合中元素交集的四种方法对比总结,四种求集合中元素交集的方法,按照在处理大量数据的效率来看,使用map集合的特性的方法效率最高,之后是使用Java流的方法,其次是使用for循环和迭代器的方法,需要的朋友可以参考下
    2023-05-05
  • Java应用程序的CPU使用率飙升原因详细分析

    Java应用程序的CPU使用率飙升原因详细分析

    这篇文章主要介绍了Java应用程序的CPU使用率飙升原因详细分析,在 Java 中,我们使用 JVM 进行线程调度,所以一般来说,线程的调度有两种模式:分时调度和抢占式调度,线程和进程在阻塞或者等待时,都不会使用 CPU 资源,需要的朋友可以参考下
    2024-01-01
  • java的主要特性学习总结

    java的主要特性学习总结

    在本篇文章里小编给大家分享了一篇关于java的主要特性学习总结内容,有兴趣的朋友们可以参考下。
    2020-05-05

最新评论