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; } }