X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FFugue.js;h=2c83fb2c6e00f1f7c8d7bee83907deef04647154;hp=c29324ace0893406499705b9c2d0b173215c82a0;hb=4313762da3237b04f204e121a20cab3ba7bb5dd2;hpb=cee75a57d2f4f89c89d64cefbab55d839a238ed9 diff --git a/client/src/variants/Fugue.js b/client/src/variants/Fugue.js index c29324ac..2c83fb2c 100644 --- a/client/src/variants/Fugue.js +++ b/client/src/variants/Fugue.js @@ -122,7 +122,11 @@ export class FugueRules extends ChessRules { } canTake([x1, y1], [x2, y2]) { - return !this.isProtected([x2, y2]) && super.canTake([x1, y1], [x2, y2]); + return ( + [V.QUEEN, V.KING].includes(this.getPiece(x1, y1)) && + !this.isProtected([x2, y2]) && + this.getColor(x1, y1) != this.getColor(x2, y2) + ); } getPotentialMovesFrom([x, y]) { @@ -143,30 +147,6 @@ export class FugueRules extends ChessRules { } } - getSlideNJumpMoves([x, y], steps, oneStep) { - const piece = this.getPiece(x, y); - let moves = []; - outerLoop: for (let step of steps) { - let i = x + step[0]; - let j = y + step[1]; - while (V.OnBoard(i, j) && this.board[i][j] == V.EMPTY) { - moves.push(this.getBasicMove([x, y], [i, j])); - if (oneStep !== undefined) continue outerLoop; - i += step[0]; - j += step[1]; - } - // Only queen and king can take on occupied square: - if ( - [V.KING, V.QUEEN].includes(piece) && - V.OnBoard(i, j) && - this.canTake([x, y], [i, j]) - ) { - moves.push(this.getBasicMove([x, y], [i, j])); - } - } - return moves; - } - // "Cannon/grasshopper pawn" getPotentialPawnMoves([x, y]) { const c = this.turn; @@ -228,7 +208,7 @@ export class FugueRules extends ChessRules { getPotentialKingMoves(sq) { const steps = V.steps[V.ROOK].concat(V.steps[V.BISHOP]); - return this.getSlideNJumpMoves(sq, steps, "oneStep"); + return this.getSlideNJumpMoves(sq, steps, 1); } // NOTE: not really captures, but let's keep the name @@ -512,8 +492,8 @@ export class FugueRules extends ChessRules { } } - static GenRandInitFen(randomness) { - if (randomness == 0) { + static GenRandInitFen(options) { + if (options.randomness == 0) { return ( "wlqksaui/pppppppp/8/8/8/8/PPPPPPPP/IUASKQLW w 0" ); @@ -522,7 +502,7 @@ export class FugueRules extends ChessRules { let pieces = { w: new Array(8), b: new Array(8) }; // Shuffle pieces on first and last rank for (let c of ["w", "b"]) { - if (c == 'b' && randomness == 1) { + if (c == 'b' && options.randomness == 1) { pieces['b'] = pieces['w']; break; }