我想實現一個算法來清除我的Go遊戲中的死亡石頭。JAVA - Go遊戲算法
聽說floodfill是最好的實現這是使用它遞歸將是最effiecient也更容易實現。
我在使用它在我的代碼中的麻煩,想知道我應該怎麼去實現它。
這是我的一個類,它很自我解釋。
import java.io.*;
public class GoGame implements Serializable {
int size;
char[][] pos; // This is the array that stores whether a Black (B) or White (W) piece is stored, otherwise its an empty character.
public GoGame(int s){
size = s;
}
public void init() {
pos = new char[size][size];
for (int i=0;i<size;i++) {
for (int j=0;j<size;j++) {
pos[i][j] = ' ';
}
}
}
public void ClearAll() {
for (int i=0;i<size;i++) {
for (int j=0;j<size;j++) {
pos[i][j] = ' ';
}
}
}
public void clear(int x, int y) {
pos[x][y]=' ';
}
public void putB(int x, int y) { //places a black stone on the board+array
pos[x][y]='B';
floodfill(x,y,'B','W');
}
public void putW(int x, int y) { //places a white stone on the board+array
pos[x][y]='W';
floodfill(x,y,'W','B');
}
public char get(int x, int y) {
return pos[x][y];
}
public void floodfill(int x, int y, char placed, char liberty){
floodfill(x-1, y, placed, liberty);
floodfill(x+1, y, placed, liberty);
floodfill(x, y-1, placed, liberty);
floodfill(x, y+1, placed, liberty);
}
}
x
和y
是方形的座標,placed
是石頭的性格放下,liberty
是其他字符
任何幫助將是驚人的!
術語「死亡」可以指一組沒有自由的石頭,但更多的時候,「死亡」組只是一個可以被迫移除的組。這些寶石仍然會有自由,但無論如何都會在遊戲結束時被移除。沒有什麼絕對的辦法可以告訴哪些石頭已經死亡,因爲規則在這個問題上並沒有明確的定義 - 所以只需要玩家同意哪些石頭已經死亡。但他們仍然需要能夠確定哪些羣體已經死亡 - 所以我認爲OP真正要問的是如何識別羣體。 – 2012-04-10 15:43:22
是的,我同意 - 我只是想讓事情比較簡單。我給出的代碼標識了一個組。 – 2012-04-10 15:59:13