Experimental symmetric randomness + deterministic option
[vchess.git] / client / src / variants / Circular.js
index 4db5a52..93df8ef 100644 (file)
@@ -30,10 +30,19 @@ export const VariantRules = class CircularRules extends ChessRules {
     this.pawnFlags = flags;
   }
 
-  static GenRandInitFen() {
+  static GenRandInitFen(randomness) {
+    if (!randomness) randomness = 2;
+    if (randomness == 0)
+      return "8/8/pppppppp/rnbqkbnr/8/8/PPPPPPPP/RNBQKBNR w 0 1111111111111111";
+
     let pieces = { w: new Array(8), b: new Array(8) };
     // Shuffle pieces on first and fifth rank
     for (let c of ["w", "b"]) {
+      if (c == 'b' && randomness == 1) {
+        pieces['b'] = pieces['w'];
+        break;
+      }
+
       let positions = ArrayFun.range(8);
 
       // Get random squares for bishops
@@ -170,9 +179,9 @@ export const VariantRules = class CircularRules extends ChessRules {
   }
 
   isAttackedByPawn([x, y], colors) {
+    const pawnShift = 1;
+    const attackerRow = V.ComputeX(x + pawnShift);
     for (let c of colors) {
-      let pawnShift = 1;
-      const attackerRow = V.ComputeX(x + pawnShift);
       for (let i of [-1, 1]) {
         if (
           y + i >= 0 &&