2011-09-30 57 views
1

我正在使用Java的掃雷程序。我有我的炸彈分佈在整個領域,我有我的actionlisteners響應點擊和mouselistener,響應右鍵單擊。我也有每個被點擊的方格檢查,看看它旁邊有多少枚炸彈,就像在遊戲中一樣在方格上打印數字。minesweeper java

我不明白的唯一部分是如何在單擊正方形時打開字段,無論是數字還是空白方塊。請幫我理解這是如何工作的。

+0

發佈一些關於如何設置網格的代碼可能會有所幫助。 – talnicolas

回答

4

我不明白的唯一部分是點擊一個正方形,無論是數字或空白方塊,當掃雷艦如何開闢了場。

如果它的任何相鄰的方格有一個地雷,它將顯示一個數字,其周圍有多少個地雷。

如果周圍沒有地雷,它就是空白的(即:如果必須的話,它會顯示數字0)。當它爲空時,它也遞歸地打開它的所有鄰居(例如:打開所有鄰居和它們的鄰居,如果它們也是空白的,等等)。

如果這是一個礦,你當然會失去。一個例子:

X 2 . . 
X 2 . . 
2 2 1 . 
1 X 1 . 

(讓X表示一個礦)。

如果你打開任何的平方與標記爲.(空白),自動擴充它們都與數字旁邊:

- 2 . . 
- 2 . . 
- - 1 . 
- - 1 . 

(讓-表示一個隱藏的平方)。

+0

@ user541597:null用戶是對的,如果你想遞歸地打開周圍的單元格,如果他們在空白單元格旁邊(一個沒有開放鄰居的單元格),那麼1+。有關這個和model-view類結構的示例,請查看我的代碼:[minesweeper示例代碼](http://stackoverflow.com/questions/7006029/minesweeper-action-events/7016492#7016492) –

+0

所以如果我點擊一個正方形,它會打開它周圍的所有正方形,這是一個數字或一個空白的正方形,只要沒有相鄰的正方形不是我的正確的?並從那裏執行遞歸只在空白框而不是編號框? – user541597

2

如果是炸彈,就輸了。

如果它是一個數字,那麼它只是顯示該數字。

如果它是一個空方塊,也就是說沒有相鄰的炸彈,那麼它就是一個空白的方塊,一旦被揭示,遊戲就會揭示所有與它接觸的其他方塊都是空白的(這個過程一直持續到所有與新創建的空字段相鄰的正方形是與它們相鄰的至少一個炸彈(也就是說,有一個數字)的方格)