// 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);
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();
}
static get VALUES() {
return Object.assign(
- ChessRules.VALUES,
- { c: 5, m: 7 } //experimental
+ { c: 5, m: 7 }, //experimental
+ ChessRules.VALUES
);
}
return 2;
}
- static GenRandInitFen() {
+ static GenRandInitFen(randomness) {
+ if (!randomness) randomness = 2;
+ 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