Hiho,
ich habe eine Klasse GameNode geschrieben, die einen knoten in einem 4gewinnt-spielbaum darstellen soll. Jetzt möchte ich in der methode setChildren zu einer gegebenen Spielkonfiguration (board) alle möglichen folgekonfigurationen bestimmen und die in die liste children ablegen. Nun habe ich das Problem das am Ende alle "Kinder" gleich sind, d.h. bei jedem Kind wurde in jede Zeile geworfen.
Es soll aber so sein, dass das 1.element in children das spielfeld zeigt, wenn in die 1. spalte eingeworfenen wurde, das 2. wenn in spalte 2 geworfen wurde usw... Ich habe nun alles mögliche ausprobiert, aber ich bekomms nicht hin (java anfänger und so).
Hier der Code:
Thx for help
ich habe eine Klasse GameNode geschrieben, die einen knoten in einem 4gewinnt-spielbaum darstellen soll. Jetzt möchte ich in der methode setChildren zu einer gegebenen Spielkonfiguration (board) alle möglichen folgekonfigurationen bestimmen und die in die liste children ablegen. Nun habe ich das Problem das am Ende alle "Kinder" gleich sind, d.h. bei jedem Kind wurde in jede Zeile geworfen.
Es soll aber so sein, dass das 1.element in children das spielfeld zeigt, wenn in die 1. spalte eingeworfenen wurde, das 2. wenn in spalte 2 geworfen wurde usw... Ich habe nun alles mögliche ausprobiert, aber ich bekomms nicht hin (java anfänger und so).
Hier der Code:
Code:
import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
public class GameNode implements Cloneable {
GameBoard board; // the current game state.
List<GameNode> children; // our children, one for each move available from here
GameNode parent; // our parent in the game tree
public GameNode(GameBoard initialBoard) {
board = initialBoard;
children = new ArrayList<GameNode>();
}
[b]public void setChildren(Color color) {
int[] allowed = board.allowedMoves();
for (int move: allowed) {
GameNode child = (GameNode) childClone();
child.throwIn(move, color);
this.children.add(child);
}
} [/b]
public GameNode throwIn(int col, Color color) {
boolean gesetzt = false;
for (int i = 0; i < board.getRows(); i++) {
if (board.getLayout()[col][i] == Color.BLACK && !gesetzt) {
board.getLayout()[col][i] = color;
gesetzt = true;
}
}
GameNode node = new GameNode(board);
return node;
}
public GameNode childClone() {
GameNode child = (GameNode) clone();
child.parent = this;
return child;
}
public Object clone() {
try {
return super.clone();
}
catch (CloneNotSupportedException e) {
throw new RuntimeException ("This class does not implement Cloneable.");
}
}
Thx for help