X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=public%2Fjavascripts%2Fvariants%2FAtomic.js;h=666c50b214406656bc04a258e6f75c448e5a2b75;hb=388e4c401f05b1f6a4c54e33c9da9114969a53c0;hp=b86e7822507ebadca8ecee6ac7bef4ed3312c5f4;hpb=a37076f1ac8f4c19d9b34a60cbe89df86b88fa0b;p=vchess.git diff --git a/public/javascripts/variants/Atomic.js b/public/javascripts/variants/Atomic.js index b86e7822..666c50b2 100644 --- a/public/javascripts/variants/Atomic.js +++ b/public/javascripts/variants/Atomic.js @@ -8,16 +8,17 @@ class AtomicRules extends ChessRules moves.forEach(m => { if (m.vanish.length > 1 && m.appear.length <= 1) //avoid castles { - // Explosion! TODO: drop moves which explode our king here + // Explosion! TODO(?): drop moves which explode our king here let steps = [ [-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1] ]; for (let step of steps) { let x = m.end.x + step[0]; let y = m.end.y + step[1]; - if (x>=0 && x<8 && y>=0 && y<8 && this.board[x][y] != VariantRules.EMPTY - && this.getPiece(x,y) != VariantRules.PAWN) + if (V.OnBoard(x,y) && this.board[x][y] != V.EMPTY + && this.getPiece(x,y) != V.PAWN) { - m.vanish.push(new PiPo({p:this.getPiece(x,y),c:this.getColor(x,y),x:x,y:y})); + m.vanish.push( + new PiPo({p:this.getPiece(x,y),c:this.getColor(x,y),x:x,y:y})); } } m.end = {x:m.appear[0].x, y:m.appear[0].y}; @@ -30,16 +31,14 @@ class AtomicRules extends ChessRules getPotentialKingMoves([x,y]) { - const V = VariantRules; // King cannot capture: let moves = []; - let [sizeX,sizeY] = V.size; const steps = V.steps[V.ROOK].concat(V.steps[V.BISHOP]); for (let step of steps) { - var i = x + step[0]; - var j = y + step[1]; - if (i>=0 && i=0 && j { return e < 0; })) { @@ -127,7 +116,7 @@ class AtomicRules extends ChessRules res = false; // Otherwise, if we remain under check, move is not valid else - res = this.isAttacked(this.kingPos[c], oppCol); + res = this.isAttacked(this.kingPos[c], [oppCol]); this.undo(move); return res; } @@ -141,7 +130,7 @@ class AtomicRules extends ChessRules let res = [ ]; if (this.kingPos[c][0] < 0) res = [saveKingPos]; - else if (this.isAttacked(this.kingPos[c], this.getOppCol(c))) + else if (this.isAttacked(this.kingPos[c], [this.getOppCol(c)])) res = [ JSON.parse(JSON.stringify(this.kingPos[c])) ] this.undo(move); return res; @@ -153,9 +142,10 @@ class AtomicRules extends ChessRules const kp = this.kingPos[color]; if (kp[0] < 0) //king disappeared return color == "w" ? "0-1" : "1-0"; - if (!this.isAttacked(kp, this.getOppCol(color))) + if (!this.isAttacked(kp, [this.getOppCol(color)])) return "1/2"; - // Checkmate - return color == "w" ? "0-1" : "1-0"; + return color == "w" ? "0-1" : "1-0"; //checkmate } } + +const VariantRules = AtomicRules;