import { ChessRules } from "@/base_rules";
-import { ArrayFun } from "@/utils/array";
-import { randInt } from "@/utils/alea";
-export const VariantRules = class LosersRules extends ChessRules {
+export class CaptureRules extends ChessRules {
// Trim all non-capturing moves
static KeepCaptures(moves) {
- return moves.filter(m => m.vanish.length == 2);
+ return moves.filter(m => m.vanish.length == 2 && m.appear.length == 1);
}
- // Stop at the first capture found (if any)
+ // Stop at the first capture found (if any)
atLeastOneCapture() {
const color = this.turn;
const oppCol = V.GetOppCol(color);
if (
this.board[i][j] != V.EMPTY &&
this.getColor(i, j) != oppCol &&
- this.getPotentialMovesFrom([i, j]).some(m =>
- // Warning: duscard castle moves
+ this.filterValid(this.getPotentialMovesFrom([i, j])).some(m =>
+ // Warning: discard castle moves
m.vanish.length == 2 && m.appear.length == 1)
) {
return true;
getAllValidMoves() {
const moves = super.getAllValidMoves();
- if (moves.some(m => m.vanish.length == 2)) return V.KeepCaptures(moves);
+ if (moves.some(m => m.vanish.length == 2 && m.appear.length == 1))
+ return V.KeepCaptures(moves);
return moves;
}
-
- static get SEARCH_DEPTH() {
- return 4;
- }
};