Draft Antiking1/2. Changed underCheck/searchKingPos (TODO: impact on some other variants)
[xogo.git] / variants / Antiking2 / class.js
diff --git a/variants/Antiking2/class.js b/variants/Antiking2/class.js
new file mode 100644 (file)
index 0000000..0e6a3e5
--- /dev/null
@@ -0,0 +1,33 @@
+import ChessRules from "/base_rules.js";
+import AbstractAntikingRules from "/variants/AbstractAntiking.js";
+import { Random } from "/utils/alea.js";
+
+export class Antiking2Rules extends AbstractAntikingRules {
+
+  static get Aliases() {
+    return Object.assign({'A': AbstractAntikingRules}, ChessRules.Aliases);
+  }
+
+  static get Options() {
+    return {
+      styles: A.Options.styles.concat("cylinder")
+    };
+  }
+
+  genRandInitFen(seed) {
+    const baseFen = super.genRandInitFen(seed);
+    // Just add an antiking on 3rd ranks
+    let akPos = [3, 3];
+    if (this.options.randomness >= 1) {
+      akPos[0] = Random.randInt(this.size.y);
+      if (this.options.randomness == 2)
+        akPos[1] = Random.randInt(this.size.y);
+      else
+        akPos[1] = akPos[0];
+    }
+    const whiteLine = (akPos[0] > 0 ? akPos[0] : "") + 'A' + (akPos < this.size.y - 1 ? ...);
+    const blackLine = ...
+    return baseFen.replace(...)
+  }
+
+};