Javaでマインスイーパを作っています。
周囲にある爆弾の数が0のマスを押した時、そのマスに続けて隣接するマスの周囲にある爆弾の数も0なら一気に開けていくという処理を作っているのですが、ボタンを押した位置によって一気にあくときと開かない時があります。どうすれば良いでしょうか?
Java
1public void openAroundVoidMine(int x, int y){ //引数は押したボタンの位置(盤面は9×9) 2 Mine tmp = mines[y][x]; //記述が面倒なのでtmpに置き換え 3 if(tmp.getAroundNum()==0){ //周りの爆弾数が0の時 4 if(tmp.getCheck()==false){ //マスはまだ押されていない事を確認 5 tmp.mineCheck(); //マスを押下済みにする処理 6 int tx=x-1,ty=y-1; 7 while(ty<=y+1){ 8 while(tx<=x+1){ 9 //i文の条件文が見辛くなるので分けました 10 boolean rangeY = 0<=ty&&ty<boardsize; 11 boolean rangeX = 0<=tx&&tx<boardsize; 12 if(rangeX && rangeY){ 13 openAroundVoidMine(tx,ty); 14 } 15 tx++; 16 } 17 ty++; 18 } 19 }else{ 20 return; 21 } 22 }else{ 23 return; 24 } 25 }
最短ルート探索アルゴリズムとおなじやねぇ・・・ https://github.com/devnum1979/algorithm/blob/master/src/main/java/jp/mirageworld/algorithm/route/RouteCalc.java
回答2件
あなたの回答
tips
プレビュー