X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=public%2Fjavascripts%2Fbase_rules.js;h=d4315c73724b5572437e3e7b3203b12bc7fefda4;hb=c605216162dfc09cbbe61b0969f8890f28625372;hp=9cfab5ae06d0ab378d2f69e873aa3233de7dbb37;hpb=9e42b4dd8a70b9593cc44ab181b4df32032ca250;p=vchess.git diff --git a/public/javascripts/base_rules.js b/public/javascripts/base_rules.js index 9cfab5ae..d4315c73 100644 --- a/public/javascripts/base_rules.js +++ b/public/javascripts/base_rules.js @@ -171,7 +171,6 @@ class ChessRules 'r': [ [-1,0],[1,0],[0,-1],[0,1] ], 'n': [ [-1,-2],[-1,2],[1,-2],[1,2],[-2,-1],[-2,1],[2,-1],[2,1] ], 'b': [ [-1,-1],[-1,1],[1,-1],[1,1] ], - 'q': [ [-1,0],[1,0],[0,-1],[0,1],[-1,-1],[-1,1],[1,-1],[1,1] ] }; } @@ -379,21 +378,25 @@ class ChessRules // What are the queen moves from square x,y ? getPotentialQueenMoves(sq) { - return this.getSlideNJumpMoves(sq, VariantRules.steps[VariantRules.QUEEN]); + const V = VariantRules; + return this.getSlideNJumpMoves(sq, V.steps[V.ROOK].concat(V.steps[V.BISHOP])); } // What are the king moves from square x,y ? getPotentialKingMoves(sq) { + const V = VariantRules; // Initialize with normal moves - let moves = this.getSlideNJumpMoves(sq, VariantRules.steps[VariantRules.QUEEN], "oneStep"); + let moves = this.getSlideNJumpMoves(sq, + V.steps[V.ROOK].concat(V.steps[V.BISHOP]), "oneStep"); return moves.concat(this.getCastleMoves(sq)); } getCastleMoves([x,y]) { const c = this.getColor(x,y); - if (x != (c=="w" ? 7 : 0) || y != this.INIT_COL_KING[c]) + const [sizeX,sizeY] = VariantRules.size; + if (x != (c=="w" ? sizeX-1 : 0) || y != this.INIT_COL_KING[c]) return []; //x isn't first rank, or king has moved (shortcut) const V = VariantRules; @@ -402,7 +405,7 @@ class ChessRules const oppCol = this.getOppCol(c); let moves = []; let i = 0; - const finalSquares = [ [2,3], [6,5] ]; //king, then rook + const finalSquares = [ [2,3], [sizeY-2,sizeY-3] ]; //king, then rook castlingCheck: for (let castleSide=0; castleSide < 2; castleSide++) //large, then small { @@ -487,8 +490,8 @@ class ChessRules { const color = this.turn; const oppCol = this.getOppCol(color); - var potentialMoves = []; - let [sizeX,sizeY] = VariantRules.size; + let potentialMoves = []; + const [sizeX,sizeY] = VariantRules.size; for (var i=0; i 0) @@ -673,7 +679,7 @@ class ChessRules return; } const oppCol = this.getOppCol(c); - const oppFirstRank = 7 - firstRank; + const oppFirstRank = (sizeX-1) - firstRank; if (move.start.x == firstRank //our rook moves? && this.INIT_COL_ROOK[c].includes(move.start.y)) {