Hallo!
Hab ein Problem beim Kopieren eines Spielbretts (Sudoku). In meinem Programm habe ich folgende Methode:
Das clone() legt ruft mit den Attributen eines Spielfelds einen Konstruktor auf. Es wird also ein neues Objekt erzeugt und zurückgegeben.
Mein Problem ist nun folgendes: Wird clone() zu ersten Mal aufgerufen, wird das tatsächliche Spielfeld kopiert(?) und eine Möglichkeit eingesetzt. Für die nächste Möglichkeit wird nun aber keine Kopie vom Originalbrett angelegt, sondern vom Clone, soweit ich das nachvollziehen kann.
Kann mir da jemand einen Hinweis geben, wie ich dieses Problem beheben kann?
Danke schonmal!
Hab ein Problem beim Kopieren eines Spielbretts (Sudoku). In meinem Programm habe ich folgende Methode:
Java:
private LinkedList<Board> backtrack(Board board){
LinkedList<Board> solutions = new LinkedList<Board>();
//Durchlaufe das Spielbrett
for (int i = 0; i < board.getNumbers(); i++) {
for (int j = 0; j < board.getNumbers(); j++) {
//an der ersten ungesetzten Zelle
if (board.getCell(Structure.ROW, i, j) == Board.UNSET_CELL) {
//lese Möglichkeiten aus
int[] possibilities = board.getPossibilities(Structure.ROW,
i, j);
if (possibilities != null) {
//für jede einzelne Möglichkeit
for (int k = 0; k < possibilities.length; k++) {
int pos = possibilities[k];
//Clone das Spielbrett
Board clone = board.clone();
...weitere Befehle...
}
break;//bearbeitet nur die Zeile
}
}
}
}
return solutions;
}
Das clone() legt ruft mit den Attributen eines Spielfelds einen Konstruktor auf. Es wird also ein neues Objekt erzeugt und zurückgegeben.
Mein Problem ist nun folgendes: Wird clone() zu ersten Mal aufgerufen, wird das tatsächliche Spielfeld kopiert(?) und eine Möglichkeit eingesetzt. Für die nächste Möglichkeit wird nun aber keine Kopie vom Originalbrett angelegt, sondern vom Clone, soweit ich das nachvollziehen kann.
Kann mir da jemand einen Hinweis geben, wie ich dieses Problem beheben kann?
Danke schonmal!
Zuletzt bearbeitet: