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 年,亲测有效)
分享一下 IntelliJ IDEA 2020.3.1 最新激活注册码,破解教程如下,可免费激活至 2099 年,亲测有效,本文给大家分享两种方法,感兴趣的朋友参考下吧2021-01-01springboot整合mybatis实现数据库的更新批处理方式
这篇文章主要介绍了springboot整合mybatis实现数据库的更新批处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-03-03@PathVariable、@RequestParam和@RequestBody的区别
本文主要介绍了@PathVariable、@RequestParam和@RequestBody的区别和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-05-05JAVA中时间戳与LocalDateTime互相转换代码例子
最近在编码过程中遇到将时间戳转化为 LocalDateTime,所以这里给总结下,这篇文章主要给大家介绍了关于JAVA中时间戳与LocalDateTime互相转换的相关资料,需要的朋友可以参考下2023-11-11
最新评论