扫雷——关于展开空格的算法
关于展开空格的算法 【扫雷——关于展开空格的算法】第一种:
方法的相互调用
达到递归的效果
//打开盒子
publicbooleanclick(int x,int y) {
if(grid[x][y].isType()) {
//盒子类已经打开
return true;
}else {
if(grid[x][y].getContent()=='*') {
//是雷直接显示
show();
return false;
}else {
if(grid[x][y].getContent()==' ') {
//是空格
grid[x][y].setType(true);
clickBlank(x,y);
return true;
}else {
//是数字
grid[x][y].setType(true);
return true;
}
}
}
}
//判断空白的格子
public voidclickBlank(int x,int y) {
if(x-1>-1&&x-1<9&&grid[x-1][y].getContent()!='*') {
click(x-1,y);
}
if(x+1>-1&&x+1<9&&grid[x+1][y].getContent()!='*') {
click(x+1,y);
}
if(y-1>-1&&y-1<9&&grid[x][y-1].getContent()!='*') {
click(x,y-1);
}
if(y+1>-1&&y+1<9&&grid[x][y+1].getContent()!='*') {
click(x,y+1);
}
}
第二种方法:
递归调用。达到遍历效果。将相连的空格全部展示
//打开盒子方法
publicvoidclick(int x,int y) {
if(!grid[x][y].isType()) {
if(grid[x][y].getContent()=='*'){
grid[x][y].setType(true);
//雷的处理
}else {if(grid[x][y].getContent()==' '){
grid[x][y].setType(true);
if(x-1>-1&&x-1<9&&grid[x-1][y].getContent()!='*') {
click(x-1,y);
}
if(x+1>-1&&x+1<9&&grid[x+1][y].getContent()!='*') {
click(x+1,y);
}
if(y-1>-1&&y-1<9&&grid[x][y-1].getContent()!='*') {
click(x,y-1);
}
if(y+1>-1&&y+1<9&&grid[x][y+1].getContent()!='*') {
click(x,y+1);
}
}else {
grid[x][y].setType(true);
}
}}
}
推荐阅读
- python玩扫雷_Python玩转算法—扫雷
- 个人的小白成长经历|【濡白的C语言】初学者-从零开始-5(模块化设计——函数,传值和传址)
- java扫雷布雷算法_java 扫雷 如何随机布雷()
- Java|【数据结构与算法】——必知必会的排序算法你会几种
- Java|Java基础——面向基础模块
- Java|阿里云——Java实现手机短信验证码功能
- 程序人生|关于程序员35岁的坎(年龄不是挡板,当你匹配了这个年纪该有的能力还有什么畏惧!)
- 关于SpringBoot集成myBatis时,mapper接口注入失败的问题
- crowdfunding项目03——mapper映射错误
- Android项目——用户主页实现