Some code cleaning + clarifying (TODO: work on variables names)
[vchess.git] / public / javascripts / variants / Zen.js
index 17c922d..c1f4814 100644 (file)
@@ -6,18 +6,18 @@ class ZenRules extends ChessRules
                return undefined;
        }
 
-       // TODO: some duplicated code in 2 next functions
+       // TODO(?): some duplicated code in 2 next functions
        getSlideNJumpMoves([x,y], steps, oneStep)
        {
                const color = this.getColor(x,y);
-               var moves = [];
-               let [sizeX,sizeY] = VariantRules.size;
+               let moves = [];
+               const [sizeX,sizeY] = VariantRules.size;
                outerLoop:
-               for (var loop=0; loop<steps.length; loop++)
+               for (let loop=0; loop<steps.length; loop++)
                {
-                       var step = steps[loop];
-                       var i = x + step[0];
-                       var j = y + step[1];
+                       const step = steps[loop];
+                       let i = x + step[0];
+                       let j = y + step[1];
                        while (i>=0 && i<sizeX && j>=0 && j<sizeY
                                && this.board[i][j] == VariantRules.EMPTY)
                        {
@@ -38,22 +38,21 @@ class ZenRules extends ChessRules
        {
                const color = this.getColor(x,y);
                var moves = [];
-               var V = VariantRules;
-               var steps = asA != V.PAWN
-                       ? V.steps[asA]
+               const V = VariantRules;
+               const steps = asA != V.PAWN
+                       ? (asA==V.QUEEN ? V.steps[V.ROOK].concat(V.steps[V.BISHOP]) : V.steps[asA])
                        : color=='w' ? [[-1,-1],[-1,1]] : [[1,-1],[1,1]];
-               var oneStep = (asA==V.KNIGHT || asA==V.PAWN); //we don't capture king
-               let [sizeX,sizeY] = V.size;
-               let lastRank = (color == 'w' ? 0 : sizeY-1);
-               let promotionPieces = [V.ROOK,V.KNIGHT,V.BISHOP,V.QUEEN];
+               const oneStep = (asA==V.KNIGHT || asA==V.PAWN); //we don't capture king
+               const [sizeX,sizeY] = V.size;
+               const lastRank = (color == 'w' ? 0 : sizeY-1);
+               const promotionPieces = [V.ROOK,V.KNIGHT,V.BISHOP,V.QUEEN];
                outerLoop:
-               for (var loop=0; loop<steps.length; loop++)
+               for (let loop=0; loop<steps.length; loop++)
                {
-                       var step = steps[loop];
-                       var i = x + step[0];
-                       var j = y + step[1];
-                       while (i>=0 && i<sizeX && j>=0 && j<sizeY
-                               && this.board[i][j] == V.EMPTY)
+                       const step = steps[loop];
+                       let i = x + step[0];
+                       let j = y + step[1];
+                       while (i>=0 && i<sizeX && j>=0 && j<sizeY && this.board[i][j] == V.EMPTY)
                        {
                                if (oneStep)
                                        continue outerLoop;
@@ -84,21 +83,12 @@ class ZenRules extends ChessRules
        // Find possible captures from a square: look in every direction!
        findCaptures(sq)
        {
-               var moves = [];
+               let moves = [];
 
-               // PAWN
                Array.prototype.push.apply(moves, this.findCaptures_aux(sq, VariantRules.PAWN));
-
-               // ROOK
                Array.prototype.push.apply(moves, this.findCaptures_aux(sq, VariantRules.ROOK));
-
-               // KNIGHT
                Array.prototype.push.apply(moves, this.findCaptures_aux(sq, VariantRules.KNIGHT));
-
-               // BISHOP
                Array.prototype.push.apply(moves, this.findCaptures_aux(sq, VariantRules.BISHOP));
-
-               // QUEEN
                Array.prototype.push.apply(moves, this.findCaptures_aux(sq, VariantRules.QUEEN));
 
                return moves;
@@ -150,22 +140,24 @@ class ZenRules extends ChessRules
 
        getPotentialRookMoves(sq)
        {
-               let noCaptures = this.getSlideNJumpMoves(sq, VariantRules.steps[VariantRules.ROOK]);
+               let noCaptures = this.getSlideNJumpMoves(
+                       sq, VariantRules.steps[VariantRules.ROOK]);
                let captures = this.findCaptures(sq);
                return noCaptures.concat(captures);
        }
 
        getPotentialKnightMoves(sq)
        {
-               let noCaptures = this.getSlideNJumpMoves(sq,
-                       VariantRules.steps[VariantRules.KNIGHT], "oneStep");
+               let noCaptures = this.getSlideNJumpMoves(
+                       sq, VariantRules.steps[VariantRules.KNIGHT], "oneStep");
                let captures = this.findCaptures(sq);
                return noCaptures.concat(captures);
        }
 
        getPotentialBishopMoves(sq)
        {
-               let noCaptures = this.getSlideNJumpMoves(sq, VariantRules.steps[VariantRules.BISHOP]);
+               let noCaptures = this.getSlideNJumpMoves(
+                       sq, VariantRules.steps[VariantRules.BISHOP]);
                let captures = this.findCaptures(sq);
                return noCaptures.concat(captures);
        }
@@ -173,7 +165,8 @@ class ZenRules extends ChessRules
        getPotentialQueenMoves(sq)
        {
                const V = VariantRules;
-               let noCaptures = this.getSlideNJumpMoves(sq, V.steps[V.ROOK.concat(V.steps[V.BISHOP])]);
+               let noCaptures = this.getSlideNJumpMoves(
+                       sq, V.steps[V.ROOK].concat(V.steps[V.BISHOP]));
                let captures = this.findCaptures(sq);
                return noCaptures.concat(captures);
        }