Ich versuche, einen Algorithmus zu implementieren, um tote Steine in meinem Go-Spiel zu löschen.JAVA - Go-Spiel-Algorithmus
Ich höre, dass Floodfill das Beste ist, um dies zu erreichen, da die rekursive Verwendung am effizientesten und einfacher zu implementieren wäre.
Ich habe Probleme mit der Verwendung in meinem Code und fragte mich, wie ich es implementieren sollte.
Dies ist einer meiner Klassen, es ist ziemlich selbsterklärend.
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
und y
die Koordinaten des Platzes sind, placed
ist der Charakter des Steins nach unten setzen, ist liberty
der andere Charakter
Jede mögliche Hilfe würde erstaunlich sein!
Der Begriff "tot" kann sich auf eine Gruppe von Steinen beziehen, die keine Freiheiten hat, aber häufiger ist eine "tote" Gruppe einfach eine, deren Entfernung erzwungen werden kann. Diese Steine haben immer noch Freiheiten, werden aber am Ende des Spiels entfernt.Es gibt keine absolute Möglichkeit zu sagen, welche Steine tot sind, da die Regeln in der Sache nicht genau definiert sind - es liegt also einfach an den Spielern zu vereinbaren, welche Steine tot sind. Aber sie müssen immer noch in der Lage sein zu erkennen, welche Gruppen tot sind - also denke ich, was OP wirklich fragt, ist, wie man Gruppen von Steinen identifiziert. –
ja, ich stimme zu - ich habe nur versucht, die Dinge relativ einfach zu halten. Der Code, den ich gab, identifiziert eine Gruppe. –