class ZenRules extends ChessRules
{
+ // NOTE: enPassant, if enabled, would need to redefine carefully getEpSquare
+ getEpSquare(move)
+ {
+ return undefined;
+ }
+
// TODO: some duplicated code in 2 next functions
getSlideNJumpMoves(x, y, color, steps, oneStep)
{
let [sizeX,sizeY] = VariantRules.size;
let shift = (color == 'w' ? -1 : 1);
let startRank = (color == 'w' ? sizeY-2 : 1);
+ let firstRank = (color == 'w' ? sizeY-1 : 0);
let lastRank = (color == "w" ? 0 : sizeY-1);
if (x+shift >= 0 && x+shift < sizeX && x+shift != lastRank)
if (this.board[x+shift][y] == V.EMPTY)
{
moves.push(this.getBasicMove(x, y, x+shift, y));
- if (x==startRank && this.board[x+2*shift][y] == V.EMPTY)
+ if ([startRank,firstRank].includes(x) && this.board[x+2*shift][y] == V.EMPTY)
{
//two squares jump
moves.push(this.getBasicMove(x, y, x+2*shift, y));
});
}
- // En passant
- const Lep = this.epSquares.length;
- const epSquare = Lep>0 ? this.epSquares[Lep-1] : undefined;
- if (!!epSquare && epSquare.x == x+shift && Math.abs(epSquare.y - y) == 1)
- {
- let epStep = epSquare.y - y;
- var enpassantMove = this.getBasicMove(x, y, x+shift, y+epStep);
- enpassantMove.vanish.push({
- x: x,
- y: y+epStep,
- p: 'p',
- c: this.getColor(x,y+epStep)
- });
- moves.push(enpassantMove);
- }
+ // No en passant here
// Add "zen" captures
Array.prototype.push.apply(moves, this.findCaptures(x, y, color));
String.fromCharCode(97 + move.end.y) + (VariantRules.size[0]-move.end.x);
let notation = "";
- let piece = this.rules.getPiece(move.start.x, move.start.y);
+ let piece = this.getPiece(move.start.x, move.start.y);
if (piece == VariantRules.PAWN)
{
// pawn move (TODO: enPassant indication)