import { ChessRules } from "@/base_rules";
export class WormholeRules extends ChessRules {
+
static get HasFlags() {
return false;
}
return b;
}
+ static IsGoodPosition(position) {
+ if (position.length == 0) return false;
+ const rows = position.split("/");
+ if (rows.length != V.size.x) return false;
+ let kings = { "k": 0, "K": 0 };
+ for (let row of rows) {
+ let sumElts = 0;
+ for (let i = 0; i < row.length; i++) {
+ if (['K','k'].includes(row[i])) kings[row[i]]++;
+ if (['x'].concat(V.PIECES).includes(row[i].toLowerCase())) sumElts++;
+ else {
+ const num = parseInt(row[i], 10);
+ if (isNaN(num)) return false;
+ sumElts += num;
+ }
+ }
+ if (sumElts != V.size.y) return false;
+ }
+ if (Object.values(kings).some(v => v != 1)) return false;
+ return true;
+ }
+
getSquareAfter(square, movement) {
let shift1, shift2;
if (Array.isArray(movement[0])) {
// A knight
shift1 = movement[0];
shift2 = movement[1];
- } else {
+ }
+ else {
shift1 = movement;
shift2 = null;
}
}
getCurrentScore() {
- if (this.atLeastOneMove())
- return "*";
+ if (this.atLeastOneMove()) return "*";
// No valid move: I lose
return this.turn == "w" ? "0-1" : "1-0";
}
notation += "=" + move.appear[0].p.toUpperCase();
return notation;
}
+
};