Hi!
Wir programmieren gerade das Spiel Go (chinesisches Brettspiel).Wir haben bereits unser Spielfeld Zustand[][] spielbrett = new Zustand[10][10];
mit den Zuständen LEER ( . ), SCHWARZ (X) und WEISS (O).
Nun sollen wir in der Methode public int entferneEingeschlosseneSteine(Zustand farbe), alle vollständig eingeschlossenen Ketten der Farbe farbe vom Spielbrett
nehmen und die Anzahl der entnommenen Steine als Resultat zurückgegeben. Dazu sollen wir zunächst alle Steine der Farbe farbe markieren die nicht zu vollständig eingeschlossenen Ketten gehören.
Dazu haben wir folgendes array, boolean [10][10]markierung, in dem alle Felder auf false gesetz sind, wird ein Feld true, dann ist der entsprechende Stein markiert!
Nun soll man für alle Felder testen, ob dort ein noch nicht markierter Stein der Farbe farbe liegt, welcher markiert werden kann.
Was der Fall ist, wenn er direkter Nachbar eines leeren Feldes ist, oder falls er neben einem bereits markierten Stein liegt.
Falls er markiert werden kann, sollen wir ihn markieren.
Nach der letzten Iteration sollten dann alle Steine der Farbe farbe markiert sein, die nicht zu vollständig eingeschlossenen Ketten gehören.
Die Steine der Farbe farbe die also nicht markiert sind, gehören dann zu eingeschlossenen Ketten.
Also sollte man wohl testen welche Steine von farbe nicht markiert sind und diese dann entefernen und zählen.
Das ist mein bisheriger Code; ich habe aber keine Idee wie das ganze funktionieren soll, insbesondere wie ich die anzahl der Steine die ich irgendwie entferne bekomme usw.
Wir programmieren gerade das Spiel Go (chinesisches Brettspiel).Wir haben bereits unser Spielfeld Zustand[][] spielbrett = new Zustand[10][10];
mit den Zuständen LEER ( . ), SCHWARZ (X) und WEISS (O).
Nun sollen wir in der Methode public int entferneEingeschlosseneSteine(Zustand farbe), alle vollständig eingeschlossenen Ketten der Farbe farbe vom Spielbrett
nehmen und die Anzahl der entnommenen Steine als Resultat zurückgegeben. Dazu sollen wir zunächst alle Steine der Farbe farbe markieren die nicht zu vollständig eingeschlossenen Ketten gehören.
Dazu haben wir folgendes array, boolean [10][10]markierung, in dem alle Felder auf false gesetz sind, wird ein Feld true, dann ist der entsprechende Stein markiert!
Nun soll man für alle Felder testen, ob dort ein noch nicht markierter Stein der Farbe farbe liegt, welcher markiert werden kann.
Was der Fall ist, wenn er direkter Nachbar eines leeren Feldes ist, oder falls er neben einem bereits markierten Stein liegt.
Falls er markiert werden kann, sollen wir ihn markieren.
Nach der letzten Iteration sollten dann alle Steine der Farbe farbe markiert sein, die nicht zu vollständig eingeschlossenen Ketten gehören.
Die Steine der Farbe farbe die also nicht markiert sind, gehören dann zu eingeschlossenen Ketten.
Also sollte man wohl testen welche Steine von farbe nicht markiert sind und diese dann entefernen und zählen.
Java:
public int entferneEingeschlosseneSteine(Zustand farbe) {
if (farbe != Zustand.WEISS || farbe != Zustand.SCHWARZ) {
throw new IllegalArgumentException(
"Farbe ist nicht WEISS und nicht SCHWARZ!");
}
boolean[][] markierung = new boolean[10][10]; // neues boolean-array
for (int x = 0; x < 10; x++) {
for (int y = 0; y < 10; y++) {
markierung[x][y] = false; // alle Felder false
}
}
for (int x = 0; x < 10; x++) {
for (int y = 0; y < 10; y++) {
if (markierung[x][y] = false & farbe == Zustand.WEISS){
}
}
}
}