package com.common;
public class Constant {
public static final String MINE = "*";
public static int PANEL_SIZE = 10;
public static int MINE_SIZE = 10;
public static int LEVEL_1 = 1;
public static int LEVEL_2 = 3;
public static int LEVEL_3 = 9;
}
package com.sweep;
import java.util.Random;
import com.common.Constant;
public class Sweep {
private static Random ran = new Random();
private static String[][] PANEL = null;
private static final String MINE = Constant.MINE;
private static int PANEL_SIZE = Constant.MINE_SIZE;
private static int MINE_SIZE = Constant.MINE_SIZE;
public static void initMINE() {
int totalTimes = MINE_SIZE;
PANEL = new String[PANEL_SIZE][PANEL_SIZE];
while (totalTimes > 0) {
int row = ran.nextInt(PANEL_SIZE);
int erect = ran.nextInt(PANEL_SIZE);
if (null == PANEL[row][erect]) {
PANEL[row][erect] = MINE;
totalTimes--;
}
}
}
public static void fillNum() {
for (int i = 0; i < PANEL_SIZE; i++) {
for (int j = 0; j < PANEL_SIZE; j++) {
if (MINE.equals(PANEL[i][j])) {
if ((j - 1 >= 0)) {
if (checkNum(PANEL[i][j - 1])) {
PANEL[i][j - 1] = ""
+ (Integer.valueOf(PANEL[i][j - 1]) + 1);
} else if (!MINE.equals(PANEL[i][j - 1])) {
PANEL[i][j - 1] = "1";
}
}
if ((j + 1 < PANEL_SIZE)) {
if (checkNum(PANEL[i][j + 1])) {
PANEL[i][j + 1] = ""
+ (Integer.valueOf(PANEL[i][j + 1]) + 1);
} else if (!MINE.equals(PANEL[i][j + 1])) {
PANEL[i][j + 1] = "1";
}
}
if ((i - 1 >= 0) && (j - 1 >= 0)) {
if (checkNum(PANEL[i - 1][j - 1])) {
PANEL[i - 1][j - 1] = ""
+ (Integer.valueOf(PANEL[i - 1][j - 1]) + 1);
} else if (!MINE.equals(PANEL[i - 1][j - 1])) {
PANEL[i - 1][j - 1] = "1";
}
}
if ((i - 1 >= 0)) {
if (checkNum(PANEL[i - 1][j])) {
PANEL[i - 1][j] = ""
+ (Integer.valueOf(PANEL[i - 1][j]) + 1);
} else if (!MINE.equals(PANEL[i - 1][j])) {
PANEL[i - 1][j] = "1";
}
}
if ((i - 1 >= 0) && (j + 1 < PANEL_SIZE)) {
if (checkNum(PANEL[i - 1][j + 1])) {
PANEL[i - 1][j + 1] = ""
+ (Integer.valueOf(PANEL[i - 1][j + 1]) + 1);
} else if (!MINE.equals(PANEL[i - 1][j + 1])) {
PANEL[i - 1][j + 1] = "1";
}
}
if ((i + 1 < PANEL_SIZE) && (j - 1 >= 0)) {
if (checkNum(PANEL[i + 1][j - 1])) {
PANEL[i + 1][j - 1] = ""
+ (Integer.valueOf(PANEL[i + 1][j - 1]) + 1);
} else if (!MINE.equals(PANEL[i + 1][j - 1])) {
PANEL[i + 1][j - 1] = "1";
}
}
if ((i + 1 < PANEL_SIZE)) {
if (checkNum(PANEL[i + 1][j])) {
PANEL[i + 1][j] = ""
+ (Integer.valueOf(PANEL[i + 1][j]) + 1);
} else if (!MINE.equals(PANEL[i + 1][j])) {
PANEL[i + 1][j] = "1";
}
}
if ((i + 1 < PANEL_SIZE) && (j + 1 < PANEL_SIZE)) {
if (checkNum(PANEL[i + 1][j + 1])) {
PANEL[i + 1][j + 1] = ""
+ (Integer.valueOf(PANEL[i + 1][j + 1]) + 1);
} else if (!MINE.equals(PANEL[i + 1][j + 1])) {
PANEL[i + 1][j + 1] = "1";
}
}
}
}
}
}
public static void print() {
String flag = "|";
for (int i = 0; i < PANEL_SIZE; i++) {
for (int j = 0; j < PANEL_SIZE; j++) {
if (null != PANEL[i][j]) {
System.out.print(flag + PANEL[i][j]);
} else {
System.out.print(flag + " ");
}
}
System.out.print(flag);
System.out.println();
}
}
private static boolean checkNum(String value) {
if (null == value || MINE.equals(value))
return false;
return true;
}
public static void generate() {
initMINE();
fillNum();
print();
}
public static void main(String[] args) {
generate();
}
}
分享到:
相关推荐
基于Unity扫雷算法实现,包含怎样布雷,消除雷,遍历雷区等算法实现,可以直接导入Unity运行,可以参考学习算法的实现过程。
一个非常棒的,完整的,可以运行的扫雷算法。
本人在课堂作业写的一个扫雷算法程序,调试运行正常结果正确 是用C#语言写的,分享出来供大家参考 ^_^ 希望感兴趣的朋友可以提出意见共同讨论~ hzher@qq.com
这个是布雷算法,是扫雷算法中的第一个,以后将逐步发布,游戏已经在测试中,所有算法都非常经典。敬请恭候!
[毕业设计]智能扫雷算法小程序
[毕业设计]智能扫雷算法研究小程序
无聊时写的扫雷分析程序,可依据当前状态分析出每个位置的雷的概率,主要是集合算法。懒的做界面,对算法感兴趣的可下载。
游戏扫雷的Java算法,主要可以实现布雷数、统计周围存在的雷数
本资源是本人通过真实代码,只设计了自动扫雷的核心代码,同时附带本次课题的题目要求以及扫雷的框架程序!!!具有一定参考价值!
一个用JAVA编写的扫雷程序,原创! 可以输入界面的行列数和雷数,此程序的精髓在打开一个不是雷而且周围没有雷的格子时,用到了递归的思想。
一个挺好的扫雷算法,,,希望能够给大家带来帮助。辛苦的分享
扫雷游戏算法- 扫雷是什么鬼?扫雷里包含什么算法?.mp4
总的来说,JAVA实现的自动扫雷程序展示了计算机科学在游戏逻辑、算法设计和人机交互等方面的应用,是学习和研究编程思维的好案例。通过分析和理解这样的程序,不仅可以提升编程技能,也能增强逻辑分析能力。
【Windows经典扫雷游戏Java版】是一款基于Java编程语言实现的扫雷游戏,它复刻了我们熟悉的Windows操作系统内置的扫雷游戏体验。这款游戏的主要特点包括用户自定义难度、计时功能以及独特的求救机制,使得游戏更具...
扫雷算法 这篇文章主要介绍了如何基于Python实现自动扫雷,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 原创文章 88获赞 60访问量 8万+ 关注
**三、扫雷算法** 1. **邻居计算**:算法的核心部分在于计算每个格子周围8个邻居的雷数。这可以通过索引计算或使用二维数组的邻接元素来实现。 2. **递归展开**:如果某个格子周围没有雷,程序可以自动展开其相邻的...
Delphi 高级扫雷程序,界面和功能和Windows自带的扫雷游戏非常相似,不过功能方面就不太相同了,带声音和帮助文件。。。。Function 程序的主要代码部分,是程序的主体部分,在运用四连通算法进行展开区域时使用到的...
1. **递归扫雷算法**:这种算法用于确定一个安全单元格周围的雷数。当玩家点击一个空格时,程序会递归地检查其相邻的九个单元格(如果在边缘则少于九个),并递归地处理这些相邻单元格,直到所有非雷单元格都被标记...
首先,让我们来看看游戏的基础——扫雷算法。扫雷的核心是生成随机的雷区布局。在原版Windows扫雷中,雷区由一定数量的单元格组成,每个单元格可能是雷或安全区域。生成雷区时,开发者会先确定雷的数量,然后在不...
模拟windows上的扫雷游戏,基本实现,提供源码,扫雷算法,定时器使用,swing组件.........