FOP-2425-Marathon/solution/H04/src/main/java/h04/chesspieces/Knight.java

44 lines
1.3 KiB
Java

package h04.chesspieces;
import fopbot.Robot;
import h04.movement.MoveStrategy;
import h04.template.ChessUtils;
import java.awt.Point;
public class Knight extends Robot implements ChessPiece {
private final Team team;
public Knight(final int x, final int y, final Team team) {
super(x, y, team == Team.WHITE ? Families.KNIGHT_WHITE : Families.KNIGHT_BLACK);
this.team = team;
}
@Override
public Team getTeam() {
return team;
}
@Override
public void moveStrategy(final int dx, final int dy, final MoveStrategy strategy) {
strategy.move(this, dx, dy);
}
@Override
public Point[] getPossibleMoveFields() {
final Point[] possibleMoves = new Point[8];
int index = 0;
for (final Point delta : new Point[]{new Point(1, 2), new Point(2, 1)}) {
for (int i = 0; i < 4; i++) {
final Point move = new Point(getX() + delta.x, getY() + delta.y);
if (ChessUtils.isValidCoordinate(move) && ChessUtils.getTeamAt(move) != getTeam()) {
possibleMoves[index++] = move;
}
//noinspection SuspiciousNameCombination
delta.setLocation(-delta.y, delta.x);
}
}
return possibleMoves;
}
}