Implemented direction enum

This commit is contained in:
lin committed 2026-10-19 04:10:40 +02:00
1 parent 040f5e1b87
commit d025c31789
1 file changed
+53
@@ -0,0 +1,53 @@
package com.gitea.lin.model;
public enum Direction {
// Orthogonal (Rook, Queen, King)
NORTH(0, -1),
SOUTH(0, 1),
EAST(1, 0),
WEST(-1, 0),
// Diagonal (Bishop, Queen, King, Pawn captures)
NORTH_EAST(1, -1),
NORTH_WEST(-1, -1),
SOUTH_EAST(1, 1),
SOUTH_WEST(-1, 1),
// Knight Jumps (L-shapes)
KNIGHT_NNE(1, -2),
KNIGHT_ENE(2, -1),
KNIGHT_ESE(2, 1),
KNIGHT_SSE(1, 2),
KNIGHT_SSW(-1, 2),
KNIGHT_WSW(-2, 1),
KNIGHT_WNW(-2, -1),
KNIGHT_NNW(-1, -2),
// Pawn Initial Double Push
PAWN_DOUBLE_NORTH(0, -2),
PAWN_DOUBLE_SOUTH(0, 2);
private final int dx;
private final int dy;
Direction(int dx, int dy) {
this.dx = dx;
this.dy = dy;
}
public int getDx() {
return dx;
}
public int getDy() {
return dy;
}
/**
* Converts the 2D vector into a 1D array offset for Piece[64].
* (Assuming index 0 is top-left a8 and 63 is bottom-right h1)
*/
public int getFlatOffset() {
return dy * 8 + dx;
}
}