X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=public%2Fjavascripts%2Fvariants%2FAtomic.js;h=255444f2f026abec77b411793ce71052ff8aaf6b;hb=26b8e4f7c71030d49e44fe1d89632ef91b886d67;hp=28ee1f267bdc95983260f949c237e5094b178fe2;hpb=9234226104764b91df9d677fb360ad538b98510c;p=vchess.git diff --git a/public/javascripts/variants/Atomic.js b/public/javascripts/variants/Atomic.js index 28ee1f26..255444f2 100644 --- a/public/javascripts/variants/Atomic.js +++ b/public/javascripts/variants/Atomic.js @@ -14,8 +14,8 @@ class AtomicRules extends ChessRules { 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})); @@ -31,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; })) { // There is a chance that last move blowed some king away.. @@ -107,37 +102,30 @@ class AtomicRules extends ChessRules } } - underCheck(move) + underCheck(color) { - const c = this.turn; - const oppCol = this.getOppCol(c); - this.play(move); + const oppCol = V.GetOppCol(color); let res = undefined; // If our king disappeared, move is not valid - if (this.kingPos[c][0] < 0) + if (this.kingPos[color][0] < 0) res = true; // If opponent king disappeared, move is valid else if (this.kingPos[oppCol][0] < 0) res = false; // Otherwise, if we remain under check, move is not valid else - res = this.isAttacked(this.kingPos[c], [oppCol]); - this.undo(move); + res = this.isAttacked(this.kingPos[color], [oppCol]); return res; } - getCheckSquares(move) + getCheckSquares(color) { - const c = this.getOppCol(this.turn); - // King might explode: - const saveKingPos = JSON.parse(JSON.stringify(this.kingPos[c])); - this.play(move); let res = [ ]; - if (this.kingPos[c][0] < 0) - res = [saveKingPos]; - else if (this.isAttacked(this.kingPos[c], [this.getOppCol(c)])) - res = [ JSON.parse(JSON.stringify(this.kingPos[c])) ] - this.undo(move); + if (this.kingPos[color][0] >= 0 //king might have exploded + && this.isAttacked(this.kingPos[color], [V.GetOppCol(color)])) + { + res = [ JSON.parse(JSON.stringify(this.kingPos[color])) ] + } return res; } @@ -147,8 +135,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, [V.GetOppCol(color)])) return "1/2"; return color == "w" ? "0-1" : "1-0"; //checkmate } } + +const VariantRules = AtomicRules;