// 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 SEARCH_DEPTH() {
+ return 2;
+ }
+
getNotation(move) {
if (move.appear.length == 2 && move.appear[0].p == V.KING) {
if (move.end.y < move.start.y) return "0-0-0";