import { ChessRules } from "@/base_rules";
export class ZenRules extends ChessRules {
+
getEpSquare(moveOrSquare) {
if (!moveOrSquare) return undefined;
if (typeof moveOrSquare === "string") {
return undefined;
}
- // TODO(?): some duplicated code in 2 next functions
- getSlideNJumpMoves([x, y], steps, oneStep) {
- let moves = [];
- outerLoop: for (let loop = 0; loop < steps.length; loop++) {
- const step = steps[loop];
- let i = x + step[0];
- let j = y + step[1];
- while (V.OnBoard(i, j) && this.board[i][j] == V.EMPTY) {
- moves.push(this.getBasicMove([x, y], [i, j]));
- if (oneStep) continue outerLoop;
- i += step[0];
- j += step[1];
- }
- // No capture check: handled elsewhere (next method)
- }
- return moves;
- }
-
// follow steps from x,y until something is met.
// if met piece is opponent and same movement (asA): eat it!
findCaptures_aux([x, y], asA) {
}
if (
V.OnBoard(i, j) &&
+ this.board[i][j] != V.EMPTY &&
this.getColor(i, j) == oppCol &&
this.getPiece(i, j) == asA
) {
promotionPieces.forEach(p => {
moves.push(this.getBasicMove([x, y], [i, j], { c: color, p: p }));
});
- } else {
+ }
+ else {
// All other cases
moves.push(this.getBasicMove([x, y], [i, j]));
}
return moves;
}
- canTake(sq1, sq2) {
+ canTake() {
return false; //captures handled separately
}
k: 1000
};
}
+
};