this.pawnFlags = flags[1];
}
- static GenRandInitFen(randomness) {
+ static GenRandInitFen(options) {
// Add 16 pawns flags:
- return ChessRules.GenRandInitFen(randomness)
+ return ChessRules.GenRandInitFen(options)
.slice(0, -2) + "1111111111111111 -";
}
}
let baseMoves = [];
const c = this.turn;
- switch (piece || this.getPiece(x, y)) {
+ switch (piece) {
case V.PAWN: {
const firstRank = (c == 'w' ? 7 : 0);
baseMoves = this.getPotentialPawnMoves([x, y]).filter(m => {
break;
case V.KING:
baseMoves = this.getSlideNJumpMoves(
- [x, y],
- V.steps[V.ROOK].concat(V.steps[V.BISHOP]),
- "oneStep"
- );
+ [x, y], V.steps[V.ROOK].concat(V.steps[V.BISHOP]), 1);
if (!noCastle && this.castleFlags[this.turn].some(v => v < V.size.y))
baseMoves = baseMoves.concat(this.getCastleMoves([x, y]));
break;
const lm = this.lastMoveEnd[L-1];
const piece =
!!lm
- ? lm.p :
- this.getPiece(move.vanish[0].x, move.vanish[0].y);
+ ? lm.p
+ : this.getPiece(move.vanish[0].x, move.vanish[0].y);
if (piece == V.KING)
this.kingPos[c] = [move.appear[0].x, move.appear[0].y];
this.updateCastleFlags(move, piece);
postUndo(move) {
if (this.getPiece(move.start.x, move.start.y) == V.KING)
this.kingPos[this.turn] = [move.start.x, move.start.y];
+ else {
+ // Check if a king is being released: put it on releasing square
+ const L = this.lastMoveEnd.length;
+ const lm = this.lastMoveEnd[L-1];
+ if (!!lm && lm.p == V.KING)
+ this.kingPos[this.turn] = [move.start.x, move.start.y];
+ }
}
getCurrentScore() {