79 lines
3.2 KiB
Java
79 lines
3.2 KiB
Java
package de.vivi.chess.pieces;
|
|
|
|
import de.vivi.chess.board.Board;
|
|
import de.vivi.chess.board.Field;
|
|
|
|
public class Rook extends Piece {
|
|
|
|
private boolean isValid = false;
|
|
|
|
public Rook(Color color, Type type) {
|
|
super(color, type);
|
|
}
|
|
|
|
@Override
|
|
public char getSymbol() {
|
|
if (getColor() == Color.WHITE) {
|
|
if (getType() == Type.ROOK) {
|
|
symbol = '\u265C';
|
|
}
|
|
|
|
} else if (getColor() == Color.BLACK) {
|
|
if (getType() == Type.ROOK) {
|
|
symbol = '\u2656';
|
|
}
|
|
}
|
|
return symbol;
|
|
}
|
|
|
|
@Override
|
|
public boolean isValidMove(Board board, Field from, Field to) {
|
|
if (board.getPiece(from).getSymbol() == symbol &&
|
|
board.getPiece(from).getColor() == Color.WHITE) {
|
|
|
|
if (from.getColumn() == to.getColumn()) {
|
|
for (int i = 1; i < 8; i++) {
|
|
Field freeField = Field.from(from.getColumn(), from.getRow() - i);
|
|
//System.out.println(freeField.getRow());
|
|
//System.out.println(board.getPiece(freeField).getColor());
|
|
|
|
if (board.getPiece(Field.from(from.getColumn(), freeField.getRow())) == null) {
|
|
isValid = true;
|
|
} else if ((freeField.getRow() != to.getRow()) &&
|
|
(board.getPiece(Field.from(from.getColumn(), freeField.getRow())) != null) &&
|
|
(board.getPiece(Field.from(from.getColumn(), freeField.getRow())).getColor() == Color.BLACK)) {
|
|
isValid = false;
|
|
System.err.println("Illegal move, try again: ");
|
|
} else
|
|
/*if ((board.getPiece(Field.from(from.getColumn(), freeField.getRow())).getColor() == Color.BLACK ) &&
|
|
(freeField.getRow()) == to.getRow()) {
|
|
isValid = true;
|
|
//System.out.println(board.getPiece(freeField).getType());
|
|
} else
|
|
if ((board.getPiece(Field.from(from.getColumn(), freeField.getRow())).getColor() == Color.WHITE) &&
|
|
(freeField.getRow()) != to.getRow()) {
|
|
*/
|
|
if ((board.getPiece(Field.from(from.getColumn(), freeField.getRow())) != null) &&
|
|
(board.getPiece(Field.from(from.getColumn(), freeField.getRow())).getColor() == Color.WHITE)) {
|
|
isValid = false;
|
|
//System.err.println("Illegal move, try again: ");
|
|
} else {
|
|
isValid = false;
|
|
//System.err.println("Illegal move, try again: ");
|
|
}
|
|
}
|
|
} else {
|
|
isValid = false;
|
|
//System.err.println("Illegal move, try again: ");
|
|
}
|
|
} else if (board.getPiece(from).getSymbol() == symbol &&
|
|
board.getPiece(from).getColor() == Color.BLACK) {
|
|
isValid = true;
|
|
} else {
|
|
isValid = false;
|
|
}
|
|
//System.out.println(isValid);
|
|
return isValid;
|
|
}
|
|
}
|