]
})
);
- if (!!oneStep) continue outerLoop;
+ if (oneStep) continue outerLoop;
i += step[0];
j += step[1];
}
isAttackedByBN(sq, color) {
return (
this.isAttackedBySlideNJump(sq, color, V.BN, V.steps[V.BISHOP]) ||
- this.isAttackedBySlideNJump(
- sq, color, V.BN, V.steps[V.KNIGHT], "oneStep")
+ this.isAttackedBySlideNJump(sq, color, V.BN, V.steps[V.KNIGHT], 1)
);
}
isAttackedByRN(sq, color) {
return (
this.isAttackedBySlideNJump(sq, color, V.RN, V.steps[V.ROOK]) ||
- this.isAttackedBySlideNJump(
- sq, color, V.RN, V.steps[V.KNIGHT], "oneStep")
+ this.isAttackedBySlideNJump(sq, color, V.RN, V.steps[V.KNIGHT], 1)
);
}
isAttackedByKN(sq, color) {
const steps = V.steps[V.ROOK].concat(V.steps[V.BISHOP]);
return (
- this.isAttackedBySlideNJump(sq, color, V.KN, steps, "oneStep") ||
- this.isAttackedBySlideNJump(
- sq, color, V.KN, V.steps[V.KNIGHT], "oneStep")
+ this.isAttackedBySlideNJump(sq, color, V.KN, steps, 1) ||
+ this.isAttackedBySlideNJump(sq, color, V.KN, V.steps[V.KNIGHT], 1)
);
}
isAttackedByKB(sq, color) {
const steps = V.steps[V.ROOK].concat(V.steps[V.BISHOP]);
return (
- this.isAttackedBySlideNJump(sq, color, V.KB, steps, "oneStep") ||
+ this.isAttackedBySlideNJump(sq, color, V.KB, steps, 1) ||
this.isAttackedBySlideNJump(sq, color, V.KB, V.steps[V.BISHOP])
);
}
isAttackedByKR(sq, color) {
const steps = V.steps[V.ROOK].concat(V.steps[V.BISHOP]);
return (
- this.isAttackedBySlideNJump(sq, color, V.KR, steps, "oneStep") ||
+ this.isAttackedBySlideNJump(sq, color, V.KR, steps, 1) ||
this.isAttackedBySlideNJump(sq, color, V.KR, V.steps[V.ROOK])
);
}
postPlay(move) {
const c = V.GetOppCol(this.turn);
- const piece = move.appear[0].p;
- if ([V.KING, V.KN, V.KB, V.KR].includes(piece))
- this.kingPos[c] = [move.appear[0].x, move.appear[0].y];
- this.updateCastleFlags(move, piece);
+ move.kingMove = (
+ [V.KING, V.KN, V.KB, V.KR].includes(move.appear[0].p) &&
+ [V.KING, V.KN, V.KB, V.KR].includes(move.vanish[0].p)
+ );
+ if (move.kingMove) this.kingPos[c] = [move.appear[0].x, move.appear[0].y];
+ this.updateCastleFlags(move, move.appear[0].p);
}
postUndo(move) {
const c = this.getColor(move.start.x, move.start.y);
- if ([V.KING, V.KN, V.KB, V.KR].includes(move.appear[0].p))
- this.kingPos[c] = [move.start.x, move.start.y];
+ if (!!move.kingMove) this.kingPos[c] = [move.start.x, move.start.y];
}
static get VALUES() {
);
}
+ static get SEARCH_DEPTH() {
+ return 2;
+ }
+
getNotation(move) {
if (move.appear.length == 2 && move.vanish.length == 1) {
// Fission (because no capture in this case)