};
}
- static getPpath(b) {
- return (Object.keys(this.ALICE_PIECES).includes(b[1]) ? "Alice/" : "") + b;
- }
-
static get PIECES() {
return ChessRules.PIECES.concat(Object.keys(V.ALICE_PIECES));
}
+ getPpath(b) {
+ return (Object.keys(V.ALICE_PIECES).includes(b[1]) ? "Alice/" : "") + b;
+ }
+
setOtherVariables(fen) {
super.setOtherVariables(fen);
const rows = V.ParseFen(fen).position.split("/");
// Finally filter impossible moves
const res = moves.filter(m => {
if (m.appear.length == 2) {
- //castle
- // appear[i] must be an empty square on the other board
+ // Castle: appear[i] must be an empty square on the other board
for (let psq of m.appear) {
if (this.getSquareOccupation(psq.x, psq.y, 3 - mirrorSide) != V.EMPTY)
return false;
// If the move is computed on board1, m.appear change for Alice pieces.
if (mirrorSide == 1) {
m.appear.forEach(psq => {
- //forEach: castling taken into account
+ // forEach: castling taken into account
psq.p = V.ALICE_CODES[psq.p]; //goto board2
});
- } //move on board2: mark vanishing pieces as Alice
+ }
else {
+ // Move on board2: mark vanishing pieces as Alice
m.vanish.forEach(psq => {
psq.p = V.ALICE_CODES[psq.p];
});
}
static get VALUES() {
- return Object.assign(ChessRules.VALUES, {
- s: 1,
- u: 5,
- o: 3,
- c: 3,
- t: 9,
- l: 1000
- });
+ return Object.assign(
+ {
+ s: 1,
+ u: 5,
+ o: 3,
+ c: 3,
+ t: 9,
+ l: 1000
+ },
+ ChessRules.VALUES
+ );
+ }
+
+ static get SEARCH_DEPTH() {
+ return 2;
}
getNotation(move) {