X-Git-Url: https://git.auder.net/doc/current/git-logo.png?a=blobdiff_plain;f=public%2Fjavascripts%2Fvariants%2FAtomic.js;h=997a70e106c9c32ebf01ac92151a5226ca8d59e5;hb=1147d89554c96691f3db32ebab7618d31b5b097d;hp=bf860df656ced49f47ee3d526bab2f9560e917b0;hpb=4b5fe3061829e184f9ad86a13d831eda22d95343;p=vchess.git diff --git a/public/javascripts/variants/Atomic.js b/public/javascripts/variants/Atomic.js index bf860df6..997a70e1 100644 --- a/public/javascripts/variants/Atomic.js +++ b/public/javascripts/variants/Atomic.js @@ -1,8 +1,8 @@ class AtomicRules extends ChessRules { - getPotentialMovesFrom([x,y], c, lastMove) + getPotentialMovesFrom([x,y]) { - let moves = super.getPotentialMovesFrom([x,y], c, lastMove); + let moves = super.getPotentialMovesFrom([x,y]); // Handle explosions moves.forEach(m => { @@ -28,78 +28,70 @@ class AtomicRules extends ChessRules return moves; } - getPotentialKingMoves(x, y, c) + getPotentialKingMoves([x,y]) { + const V = VariantRules; // King cannot capture: let moves = []; - let [sizeX,sizeY] = VariantRules.size; - const steps = VariantRules.steps[VariantRules.QUEEN]; + 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; })) @@ -113,8 +105,9 @@ class AtomicRules extends ChessRules } } - underCheck(move, c) + underCheck(move) { + const c = this.turn; const oppCol = this.getOppCol(c); this.play(move); let res = undefined; @@ -126,30 +119,33 @@ 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; } - getCheckSquares(move, c) + getCheckSquares(move) { - const saveKingPos = this.kingPos[c]; //king might explode + 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 = [ this.kingPos[c] ] + else if (this.isAttacked(this.kingPos[c], [this.getOppCol(c)])) + res = [ JSON.parse(JSON.stringify(this.kingPos[c])) ] this.undo(move); return res; } - checkGameEnd(color) + checkGameEnd() { + const color = this.turn; 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";