// 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();
}
+ getFenForRepeat() {
+ return super.getFenForRepeat() + "_" + this.getCapturedFen();
+ }
+
getCapturedFen() {
let counts = [...Array(14).fill(0)];
let i = 0;
);
}
- updateVariables(move) {
- super.updateVariables(move);
+ postPlay(move) {
+ super.postPlay(move);
if (move.vanish.length == 2 && move.appear.length == 1) {
// Capture: update this.captured
this.captured[move.vanish[1].c][move.vanish[1].p]++;
}
}
- unupdateVariables(move) {
- super.unupdateVariables(move);
+ postUndo(move) {
+ super.postUndo(move);
if (move.vanish.length == 2 && move.appear.length == 1)
this.captured[move.vanish[1].c][move.vanish[1].p]--;
if (move.vanish[0].p != move.appear[0].p)
static get VALUES() {
return Object.assign(
- ChessRules.VALUES,
- { c: 5, m: 7 } //experimental
+ { c: 5, m: 7 }, //experimental
+ ChessRules.VALUES
);
}
return 2;
}
- // TODO: this function could be generalized and shared better (how ?!...)
- static GenRandInitFen() {
+ static GenRandInitFen(randomness) {
+ if (randomness == 0) {
+ // No castling in the official initial setup
+ return "r8r/1nbqkmcbn1/pppppppppp/10/10/10/10/PPPPPPPPPP/1NBQKMCBN1/R8R " +
+ "w 0 zzzz - 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