Hallo, ich habe dieses Interface:
Und das Interface Move:
Meine ConnectFour (Vier Gewinnt) Klasse:
Klasse ConnectFourMove:
Meine getValidMoves() soll dabei in einem Vier Gewinnt berechnen, ob die erste Zeile gefüllt ist. Wenn sie nicht gefüllt ist, wird die Spaltennummer in die Liste übertragen. Ein Move ist ein Zug, den ein Spieler tätigt.
Ich habe nur das Problem, dass ich bei der Methode getValidMoves() den Move casten muss, damit ich ihn zur List<M> hinzufügen kann.
Wie kann ich das Casten umgehen?
Danke, Keyno
Java:
public interface Game<M extends Move> {
/**
* Calculates and returns the list of possible moves
* among which the active player can choose.
* If the game is over (one player has won) or no move
* is possible the list is empty.
* @return the list of possible moves.
*/
public List<M> getValidMoves();
[...]
}
Und das Interface Move:
Java:
public interface Move {
}
Meine ConnectFour (Vier Gewinnt) Klasse:
Java:
public class ConnectFour<M extends ConnectFourMove> implements Game<M> {
[...]
@Override
public List<M> getValidMoves() {
ArrayList<M> list;
int temp = -1;
for (int i = 0; i < map.length; i++) {
if (map[i][0] == 0) {
Move move = new ConnectFourMove(i);
list.add(move);
}
}
return list;
}
[...]
}
Klasse ConnectFourMove:
Java:
public class ConnectFourMove implements Move {
private static Player player;
private int column;
ConnectFourMove(int column) {
this.setColumn(column);
}
[...]
}
Meine getValidMoves() soll dabei in einem Vier Gewinnt berechnen, ob die erste Zeile gefüllt ist. Wenn sie nicht gefüllt ist, wird die Spaltennummer in die Liste übertragen. Ein Move ist ein Zug, den ein Spieler tätigt.
Ich habe nur das Problem, dass ich bei der Methode getValidMoves() den Move casten muss, damit ich ihn zur List<M> hinzufügen kann.
Wie kann ich das Casten umgehen?
Danke, Keyno