X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FMonochrome.js;h=8c74961bccff03af41f391dcc18455fb6c8175b5;hb=f9ecc49933b5f541724b73856ba816722ea26c34;hp=ba56c69a9a2dca61b103ef523d45a527546ab7f8;hpb=8ca6042e7b8cffd4131e81493141ab6261300ff6;p=vchess.git diff --git a/client/src/variants/Monochrome.js b/client/src/variants/Monochrome.js index ba56c69a..8c74961b 100644 --- a/client/src/variants/Monochrome.js +++ b/client/src/variants/Monochrome.js @@ -47,65 +47,21 @@ export class MonochromeRules extends ChessRules { return ((x1 <= 3 && x2 >= 4) || (x1 >= 4 && x2 <= 3)); } - // follow steps from x,y until something is met. - // if met piece is opponent and same movement (asA): eat it! - findCaptures_aux([x, y], asA) { - let moves = []; - const steps = - asA != V.PAWN - ? [V.QUEEN, V.KING].includes(asA) - ? V.steps[V.ROOK].concat(V.steps[V.BISHOP]) - : V.steps[asA] - : this.turn == "w" - ? [ - [-1, -1], - [-1, 1] - ] - : [ - [1, -1], - [1, 1] - ]; - const oneStep = [V.KNIGHT, V.PAWN, V.KING].includes(asA); - outerLoop: for (let loop = 0; loop < steps.length; loop++) { - const step = steps[loop]; - let i = x + step[0]; - let j = y + step[1]; - while (V.OnBoard(i, j) && this.board[i][j] == V.EMPTY) { - if (oneStep) continue outerLoop; - i += step[0]; - j += step[1]; - } - if ( - V.OnBoard(i, j) && - this.getPiece(i, j) == asA && - this.canTake([i, j], [x, y]) - ) { - // eat! - moves.push(this.getBasicMove([x, y], [i, j])); - } - } - return moves; - } - - // Find possible captures from a square: look in every direction! - findCaptures(sq) { - let moves = []; - Array.prototype.push.apply(moves, this.findCaptures_aux(sq, V.PAWN)); - Array.prototype.push.apply(moves, this.findCaptures_aux(sq, V.ROOK)); - Array.prototype.push.apply(moves, this.findCaptures_aux(sq, V.KNIGHT)); - Array.prototype.push.apply(moves, this.findCaptures_aux(sq, V.BISHOP)); - Array.prototype.push.apply(moves, this.findCaptures_aux(sq, V.QUEEN)); - Array.prototype.push.apply(moves, this.findCaptures_aux(sq, V.KING)); - return moves; - } - // Trim all non-capturing moves static KeepCaptures(moves) { return moves.filter(m => m.vanish.length == 2); } - getPotentialMovesFrom(sq) { - return super.getPotentialMovesFrom(sq).concat(this.findCaptures(sq)); + getPotentialKnightMoves(sq) { + // Knight becomes knightrider: + return this.getSlideNJumpMoves(sq, V.steps[V.KNIGHT]); + } + + getPotentialKingMoves(sq) { + // King become queen: + return ( + this.getSlideNJumpMoves(sq, V.steps[V.ROOK].concat(V.steps[V.BISHOP])); + ) } getAllPotentialMoves() {