refactored pawn movement + implemented knight movement

This commit is contained in:
CT
2026-04-23 16:18:28 -05:00
parent 6e6c222d57
commit ce61482b9e
4 changed files with 34 additions and 18 deletions

View File

@@ -13,27 +13,28 @@ public class Pawn extends Piece {
public ArrayList<Position> getLegalMoves(Board board) {
ArrayList<Position> positions = new ArrayList<Position>();
// diagonal moves (captures)
if (Board.inBounds(new Position(pos.x + 1, pos.y + colorDir))
&& !board.isOpen(new Position(pos.x + 1, pos.y + colorDir))
&& !board.board[pos.x + 1][pos.y + colorDir].color.equals(this.color)) {
positions.add(new Position(pos.x + 1, pos.y + colorDir));
Position test = new Position(pos.x + 1, pos.y + colorDir);
if (Board.inBounds(test) && !board.isOpen(test) && !board.getPiece(test).colorMatches(this)) {
positions.add(test);
}
if (Board.inBounds(new Position(pos.x - 1, pos.y + colorDir))
&& !board.isOpen(new Position(pos.x - 1, pos.y + colorDir))
&& !board.board[pos.x - 1][pos.y + colorDir].color.equals(this.color)) {
positions.add(new Position(pos.x - 1, pos.y + colorDir));
test = new Position(pos.x - 1, pos.y + colorDir);
if (Board.inBounds(test) && !board.isOpen(test) && !board.getPiece(test).colorMatches(this)) {
positions.add(test);
}
// one square in front: if blocked return early
if (Board.inBounds(new Position(pos.x, pos.y + colorDir))
&& board.isOpen(new Position(pos.x, pos.y + colorDir))) {
positions.add(new Position(pos.x, pos.y + colorDir));
test = new Position(pos.x, pos.y + colorDir);
if (Board.inBounds(test) && board.isOpen(test)) {
positions.add(test);
} else return positions;
// two squares in front
if (!hasMoved && board.isOpen(new Position(pos.x, pos.y + 2 * colorDir))) {
positions.add(new Position(pos.x, pos.y + 2 * colorDir));
test = new Position(pos.x, pos.y + 2 * colorDir);
if (!hasMoved && board.isOpen(test)) {
positions.add(test);
}
return positions;
}