X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=public%2Fjavascripts%2Fvariants%2FAtomic.js;h=2b7b1ac343693c7f13cde637265f7f3e181086b0;hb=2526c041baf44968b0aa7b98af56730e88f6a595;hp=b7c7504dde9880f3f814c4fd7d39f7d462e39a94;hpb=1d184b4c016a645228251ce984d4c980e60420b0;p=vchess.git diff --git a/public/javascripts/variants/Atomic.js b/public/javascripts/variants/Atomic.js index b7c7504d..2b7b1ac3 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,7 +28,7 @@ class AtomicRules extends ChessRules return moves; } - getPotentialKingMoves(x, y, c) + getPotentialKingMoves([x,y]) { // King cannot capture: let moves = []; @@ -39,20 +39,20 @@ class AtomicRules extends ChessRules var i = x + step[0]; var j = y + step[1]; if (i>=0 && i=0 && j { return e < 0; })) @@ -113,8 +112,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; @@ -131,8 +131,24 @@ class AtomicRules extends ChessRules return res; } - checkGameEnd(color) + getCheckSquares(move) + { + 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); + return res; + } + + checkGameEnd() { + const color = this.turn; const kp = this.kingPos[color]; if (kp[0] < 0) //king disappeared return color == "w" ? "0-1" : "1-0";