自定义地雷数的扫雷(控制台运行)
package test1; //导包 import java.util.Scanner; import java.util.Random; public class tst1{ public static void main (String[]args) { //设置雷的个数 System.out.println("请输入雷的个数:"); char [][] a = new char [16][30]; //char类型的二维数组16行30列,用于存放字符类型 //以Random为模板创建一个Random类对象,调用Random类的函数 对 对象进行初始化 Random rnd = new Random(); Scanner sc = new Scanner(System.in); int MineNum = sc.nextInt(); System.out.println("雷的个数:"+MineNum); //随机布雷 需注意处理随机行列为相同值的特殊情况,使用while循环 while(MineNum>0){ //获取随机数 int row = rnd.nextInt(16); //地雷的行列数值随机 int column = rnd.nextInt(30); //随机行列确定后,布雷,还需布置雷的个数减一 if(a[row][column]!=*){ a[row][column]=*; MineNum--; } } //扫雷 for(int i=0;i<16;i++){ for(int j=0;j<30;j++){ int LeiNum=0; //一个方格检测到的地雷个数 //若方格本身不是地雷,检测此方格周围八个方格的地雷个数,累加赋值 if(a[i][j]==0){ //使用八个if判断语句检测 if(i-1>=0&&j-1>=0&&a[i-1][j-1]==*){ LeiNum++; } if(i-1>=0&&a[i-1][j]==*){ LeiNum++; } if(j<29){ if(i-1>0&&a[i-1][j+1]==*){ LeiNum++; } if(a[i][j+1]==*){ LeiNum++; } } if(j-1>0&&a[i][j-1]==*){ LeiNum++; } if(i<15){ if(j-1>0&&a[i+1][j-1]==*){ LeiNum++; } if(a[i+1][j]==*){ LeiNum++; } } if(i<15&&j<29){ if(a[i+1][j+1]==*){ LeiNum++; } } //int类型转char类型 ,再赋值 a[i][j]=(char)(LeiNum+0);//(LeiNum+48)||(LeiNum+0) } } } //打印检测的结果 for(int i=0;i<16;i++){ for(int j=0;j<30;j++){ System.out.print(a[i][j]); } System.out.println();//换行打印 } } }
本次项目是使用控制台打印扫雷布雷的结果,需注意细节。调用构造函数创建对象,初始化对象。创建和使用二维数组。不同类型之间的转换。扫雷的时候需要注意二维数组边界的情况,把检测到的地雷个数累加后使用int类转char类的方法赋值给char类型的二维数组,最后再打印出扫雷游戏的布雷情况。
结果展示:
下一篇:
Jackson解析嵌套对象工具类