用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();
}
}
运行截图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
免责声明:本站发布的内容(图片、视频和文字)以原创、来自互联网转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系QQ:712375056 进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
Copyright © 2009-2021 56dr.com. All Rights Reserved. 特网科技 特网云 版权所有 珠海市特网科技有限公司 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 中国互联网举报中心 增值电信业务经营许可证B2
建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站


