X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FGrand.js;h=359671b6e9742899cfa53b1988a1bed3096ae0eb;hb=f35b9960e1c527fc400ebac85321bd4712459da3;hp=c4e2eb1ddc5e480839bda9d1db2532bfbd9a2e36;hpb=910d631b73cad5ffef1b4461157b704e7e7057d8;p=vchess.git diff --git a/client/src/variants/Grand.js b/client/src/variants/Grand.js index c4e2eb1d..359671b6 100644 --- a/client/src/variants/Grand.js +++ b/client/src/variants/Grand.js @@ -5,10 +5,6 @@ import { randInt } from "@/utils/alea"; // NOTE: initial setup differs from the original; see // https://www.chessvariants.com/large.dir/freeling.html export const VariantRules = class GrandRules extends ChessRules { - static getPpath(b) { - return ([V.MARSHALL, V.CARDINAL].includes(b[1]) ? "Grand/" : "") + b; - } - static IsGoodFen(fen) { if (!ChessRules.IsGoodFen(fen)) return false; const fenParsed = V.ParseFen(fen); @@ -35,6 +31,10 @@ export const VariantRules = class GrandRules extends ChessRules { return Object.assign(ChessRules.ParseFen(fen), { captured: fenParts[5] }); } + getPpath(b) { + return ([V.MARSHALL, V.CARDINAL].includes(b[1]) ? "Grand/" : "") + b; + } + getFen() { return super.getFen() + " " + this.getCapturedFen(); } @@ -307,8 +307,8 @@ export const VariantRules = class GrandRules extends ChessRules { static get VALUES() { return Object.assign( - ChessRules.VALUES, - { c: 5, m: 7 } //experimental + { c: 5, m: 7 }, //experimental + ChessRules.VALUES ); } @@ -316,10 +316,20 @@ export const VariantRules = class GrandRules extends ChessRules { return 2; } - static GenRandInitFen() { + static GenRandInitFen(randomness) { + if (randomness == 0) { + return "rnbqkmcbnr/pppppppppp/10/10/10/10/10/10/PPPPPPPPPP/RNBQKMCBNR " + + "w 0 1111 - 00000000000000"; + } + let pieces = { w: new Array(10), b: new Array(10) }; // Shuffle pieces on first and last rank for (let c of ["w", "b"]) { + if (c == 'b' && randomness == 1) { + pieces['b'] = pieces['w']; + break; + } + let positions = ArrayFun.range(10); // Get random squares for bishops