X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FJanggi.js;h=8ede111aa4e8631933af4cb6601cee48f2cebcd1;hb=4313762da3237b04f204e121a20cab3ba7bb5dd2;hp=27342422dfdcdbe84218e8f3f49057d2304a8284;hpb=173f11dc3119c842a58daa9d1e0afc67eeb0e4e8;p=vchess.git diff --git a/client/src/variants/Janggi.js b/client/src/variants/Janggi.js index 27342422..8ede111a 100644 --- a/client/src/variants/Janggi.js +++ b/client/src/variants/Janggi.js @@ -3,6 +3,10 @@ import { randInt } from "@/utils/alea"; export class JanggiRules extends ChessRules { + static get Options() { + return null; + } + static get Monochrome() { return true; } @@ -107,8 +111,12 @@ export class JanggiRules extends ChessRules { if (this.movesCount <= 1) { const firstRank = (this.movesCount == 0 ? 9 : 0); const initDestFile = new Map([[1, 2], [7, 6]]); - // Only option is knight / elephant swap: - if (x == firstRank && !!initDestFile.get(y)) { + // Only option is knight --> elephant swap: + if ( + x == firstRank && + !!initDestFile.get(y) && + this.getPiece(x, y) == V.KNIGHT + ) { const destFile = initDestFile.get(y); moves.push( new Move({ @@ -189,7 +197,7 @@ export class JanggiRules extends ChessRules { if (y == 3) steps.push([shiftX, 1]); else if (y == 5) steps.push([shiftX, -1]); } - return super.getSlideNJumpMoves([x, y], steps, "oneStep"); + return super.getSlideNJumpMoves([x, y], steps, 1); } knightStepsFromRookStep(step) { @@ -207,7 +215,7 @@ export class JanggiRules extends ChessRules { this.knightStepsFromRookStep(rookStep)); } } - return super.getSlideNJumpMoves([x, y], steps, "oneStep"); + return super.getSlideNJumpMoves([x, y], steps, 1); } elephantStepsFromRookStep(step) { @@ -230,7 +238,7 @@ export class JanggiRules extends ChessRules { } } } - return super.getSlideNJumpMoves([x, y], steps, "oneStep"); + return super.getSlideNJumpMoves([x, y], steps, 1); } palacePeopleMoves([x, y]) { @@ -274,7 +282,7 @@ export class JanggiRules extends ChessRules { // At the middle: all directions available Array.prototype.push.apply(steps, ChessRules.steps[V.BISHOP]); } - return super.getSlideNJumpMoves([x, y], steps, "oneStep"); + return super.getSlideNJumpMoves([x, y], steps, 1); } getPotentialAdvisorMoves(sq) { @@ -306,9 +314,7 @@ export class JanggiRules extends ChessRules { // In the middle of a palace: 4 one-diagonal-step to check Array.prototype.push.apply( moves, - super.getSlideNJumpMoves([x, y], - ChessRules.steps[V.BISHOP], - "oneStep") + super.getSlideNJumpMoves([x, y], ChessRules.steps[V.BISHOP], 1) ); } return moves; @@ -387,7 +393,7 @@ export class JanggiRules extends ChessRules { isAttackedByPawn([x, y], color) { const shiftX = (color == 'w' ? 1 : -1); //shift from king if (super.isAttackedBySlideNJump( - [x, y], color, V.PAWN, [[shiftX, 0], [0, 1], [0, -1]], "oneStep") + [x, y], color, V.PAWN, [[shiftX, 0], [0, 1], [0, -1]], 1) ) { return true; } @@ -424,7 +430,7 @@ export class JanggiRules extends ChessRules { } } return ( - super.isAttackedBySlideNJump([x, y], color, V.KNIGHT, steps, "oneStep") + super.isAttackedBySlideNJump([x, y], color, V.KNIGHT, steps, 1) ); } @@ -446,7 +452,7 @@ export class JanggiRules extends ChessRules { } } return ( - super.isAttackedBySlideNJump([x, y], color, V.ELEPHANT, steps, "oneStep") + super.isAttackedBySlideNJump([x, y], color, V.ELEPHANT, steps, 1) ); }