import { ChessRules, PiPo } from "@/base_rules";
export const VariantRules = class AtomicRules extends ChessRules {
+ getEpSquare(moveOrSquare) {
+ if (typeof moveOrSquare !== "object" || moveOrSquare.appear.length > 0)
+ return super.getEpSquare(moveOrSquare);
+ // Capturing move: no en-passant
+ return undefined;
+ }
+
getPotentialMovesFrom([x, y]) {
let moves = super.getPotentialMovesFrom([x, y]);
updateVariables(move) {
super.updateVariables(move);
if (move.appear.length == 0) {
- //capture
+ // Capture
const firstRank = { w: 7, b: 0 };
for (let c of ["w", "b"]) {
// Did we explode king of color c ? (TODO: remove move earlier)
const color = this.turn;
const kp = this.kingPos[color];
if (kp[0] < 0)
- //king disappeared
+ // King disappeared
return color == "w" ? "0-1" : "1-0";
if (this.atLeastOneMove())
- // game not over
return "*";
if (!this.isAttacked(kp, [V.GetOppCol(color)])) return "1/2";
return color == "w" ? "0-1" : "1-0"; //checkmate