扫雷——关于展开空格的算法

关于展开空格的算法 【扫雷——关于展开空格的算法】第一种:
方法的相互调用
达到递归的效果

//打开盒子 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); } }} }

    推荐阅读