生活随笔
收集整理的這篇文章主要介紹了
扫雷——关于展开空格的算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于展開空格的算法
第一種:
方法的相互調用
達到遞歸的效果
//打開盒子public boolean click(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 void clickBlank(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);}
}
第二種方法:
遞歸調用。達到遍歷效果。將相連的空格全部展示
//打開盒子方法
public void click(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);}}}
}
總結
以上是生活随笔為你收集整理的扫雷——关于展开空格的算法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。