return true;
}
+ static IsGoodEnpassant(enpassant)
+ {
+ if (enpassant != "-")
+ {
+ const squares = enpassant.split(",");
+ if (squares.length > 2)
+ return false;
+ for (let sq of squares)
+ {
+ const ep = V.SquareToCoords(sq);
+ if (isNaN(ep.x) || !V.OnBoard(ep))
+ return false;
+ }
+ }
+ return true;
+ }
+
static ParseFen(fen)
{
const fenParts = fen.split(" ");
);
}
- static GenRandInitFen()
- {
- return ChessRules.GenRandInitFen() + " 0000000000";
- }
-
getFen()
{
return super.getFen() + " " + this.getCapturedFen();
getCapturedFen()
{
let counts = _.map(_.range(10), 0);
- for (let i=0; i<V.PIECES.length; i++)
+ for (let i=0; i<V.PIECES.length-1; i++) //-1: no king captured
{
counts[i] = this.captured["w"][V.PIECES[i]];
counts[5+i] = this.captured["b"][V.PIECES[i]];
// TODO: some redundant checks
if (epsq.x == x+shift && Math.abs(epsq.y - y) == 1)
{
- let epStep = epsq.y - y;
- var enpassantMove = this.getBasicMove([x,y], [x+shift,y+epStep]);
+ var enpassantMove = this.getBasicMove([x,y], [x+shift,epsq.y]);
enpassantMove.vanish.push({
x: x,
- y: y+epStep,
+ y: epsq.y,
p: 'p',
- c: this.getColor(x,y+epStep)
+ c: this.getColor(x,epsq.y)
});
moves.push(enpassantMove);
}
return pieces["b"].join("") +
"/pppppppppp/10/10/10/10/10/10/PPPPPPPPPP/" +
pieces["w"].join("").toUpperCase() +
- " w 1111 -";
+ " w 1111 - 0000000000";
}
}