Exercises/chess/pieces/Rook.java

79 lines
3.2 KiB
Java
Raw Normal View History

2025-02-26 10:11:17 +01:00
package de.vivi.chess.pieces;
import de.vivi.chess.board.Board;
import de.vivi.chess.board.Field;
public class Rook extends Piece {
2025-03-01 16:06:01 +01:00
private boolean isValid = false;
2025-02-26 10:11:17 +01:00
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) {
2025-03-01 16:06:01 +01:00
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;
2025-02-26 10:11:17 +01:00
}
}