Java实现扫雷(简化版)
目标实现
随机生成雷在不同的位置,并且显示雷周围的数字,这两点是首要解决的问题,涉及算法。解决了这两个问题基本就可以了,再稍加点细节就可以玩扫雷啦。
Java代码
public static void main(String[] args) { String a[][] = new String[10][10]; int forrandom[] = new int[85]; for (int i = 0; i < 9; i++) { // 初始化数组 for (int j = 0; j < 9; j++) { a[i][j] = "0"; } } for (int i = 0; i < 81; i++) { forrandom[i] = i;// 0-80 } for (int i = 0; i < 200; i++) { // 交换 int x = (int) (Math.random() * 81);// 0-0.9 0-80 int y = (int) (Math.random() * 81); int t = forrandom[x]; forrandom[x] = forrandom[y]; forrandom[y] = t; } // 结果前10个 for (int i = 0; i < 10; i++) { System.out.print(forrandom[i] + " "); } System.out.println();
//0 1 2 3 4 5 6 7 8 i=0 对9取余=0 //9 10 11 12 13 14 15 16 17 i=1 对9 =1 //18 19 20 21 22 23 24 25 26 i=2 for (int k = 0; k < 10; k++) { int x = forrandom[k] / 9; int y = forrandom[k] % 9; a[x][y] = "@"; } // (0,0)(0,1)(0,2)(0,3)..数组下标 // (1,0)(1,1)(1,2)(1,3).. // (2,0)(2,1)(2,2)(2,3).. // (3,0)(3,1)(3,2)(3,3).. // .. // (-1,-1)(-1,0)(-1,1)(0,-1)(0,1)(1,-1)(1,0)(1,1) 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 < 9; i++) { for (int j = 0; j < 9; j++) { int count = 0; if (a[i][j] != "@") { // 不能为雷 for (int k = 0; k < 8; k++) { int xx = i + x[k]; int yy = j + y[k]; if (xx >= 0 && yy >= 0) { // 不能出界 if (a[xx][yy] == "@") { count = count + 1;// 累计这八个方位的雷总数 } } } a[i][j] = count + "";// 输出String型int+"" } } } // 打印输出 for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { System.out.print(a[i][j]); } System.out.println(); } }`
随机生成的雷的位置: 得到的扫雷图,@表示雷: 第一次写博客,比较粗糙,希望对你有所帮助
上一篇:
IDEA上Java项目控制台中文乱码