X-Git-Url: https://git.auder.net/images/pieces/%22%20%20V.getPpath%28board%5Bi%5D%5Bj%5D%29%20%20%20%22.svg?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FKnightrelay1.js;h=aba952905069a08367310accc078c9a4da5139f9;hb=7e107b8f9dc9a4e7d9676fd2c48ba19f6cfc1661;hp=1e7bfabb8fd0d09d77eb05c388835a8f6c1726ca;hpb=7e8a7ea1cb66adb4a987badfb0a3c2f99a21bd0a;p=vchess.git diff --git a/client/src/variants/Knightrelay1.js b/client/src/variants/Knightrelay1.js index 1e7bfabb..aba95290 100644 --- a/client/src/variants/Knightrelay1.js +++ b/client/src/variants/Knightrelay1.js @@ -6,7 +6,19 @@ export class Knightrelay1Rules extends ChessRules { return false; } - // TODO: IsGoodPosition to check that 2 knights are on the board... + static IsGoodPosition(position) { + if (!ChessRules.IsGoodPosition(position)) return false; + // Check that (at least) 2 knights per side are on the board + const rows = position.split("/"); + let knights = { 'N': 0, 'n': 0 }; + for (let row of rows) { + for (let i = 0; i < row.length; i++) { + if (['N','n'].includes(row[i])) knights[row[i]]++; + } + } + if (Object.values(knights).some(v => v < 2)) return false; + return true; + } getPotentialMovesFrom([x, y]) { let moves = super.getPotentialMovesFrom([x, y]);