簡體   English   中英

Java編程 - 嵌套用於掃雷游戲的循環

[英]Java programming - nested for loops for minesweeper game

目前正在制作一個掃雷游戲,並堅持能夠循環通過8個周圍的細胞,以找到周圍的炸彈數量。 我有一個幫助方法,我相信工作正常,用於檢查單元格(由numberOfAdjacentBombs傳遞)是否包含炸彈。 如何創建一個循環遍歷每個周圍單元格的嵌套for循環? 例如(row-1,col-1),(row-1,col),(row-1,col + 1)。

任何幫助或提示表示贊賞,謝謝! :-)

 private int numberOfAdjacentBombs(int row, int col){
 int count = 0;
 //nested for loop
 count += getIfBomb(int, int)
}

輔助方法檢查單元格是否包含炸彈,如果有,則返回1,如果不包含則返回0。

private in getIfBomb(int row, int col){
 if(cells[row][col].getHasBomb() == true){
  return 1;
}else{
  return 0;
 }
}

沒有考慮邊界檢查......

您需要檢查之前的列和行,實際的列和行以及后面的列和行....

就像是...

row - 1, col - 1
row - 1, col
row - 1, col + 1
row, col - 1
row, col
row, col + 1
row + 1, col - 1
row + 1, col
row + 1, col + 1

這可能看起來像......

for (int visitRow = row - 1; visitRow < row + 1; visitRow++) {
    for (int visitCol = col - 1; visitCol < col + 1; visitCol++) {
        count += getIfBomb(visitRow, visitCol)
    }
}

現在,你的getIfBomb方法將需要檢查它傳遞的值以檢查它們是否超出數組范圍...但我想我可以把它留給你...

您的網格可能看起來像這樣:

(x-1, y+1) (x, y+1) (x+1, y+1)
(x-1,  y ) ( x, y ) (x+1,  y )
(x-1, y-1) (x-1, y) (x+1, y-1)

你可以做的是構造一個for循環,它從x-1迭代到x+1 ,在那里,從y-1y+1另一個循環(當然考慮到邊緣),然后簡單地跳過這個案例當你看(x, y)

for(int i = x-1; i <= x+1; i++) { //x-values
    for(int j = y-1; j <= y+1; j++) { //y-values
        if(i != x && j != y) {
            //do your snazzy minesweeper jazz here
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM