Generalize pawn movements: cleaner and smaller code
[vchess.git] / client / src / variants / Upsidedown.js
index 538fb4a..2076824 100644 (file)
@@ -2,27 +2,30 @@ import { ChessRules } from "@/base_rules";
 import { randInt } from "@/utils/alea";
 import { ArrayFun } from "@/utils/array";
 
-export const VariantRules = class UpsidedownRules extends ChessRules {
+export class UpsidedownRules extends ChessRules {
   static get HasFlags() {
     return false;
   }
 
-  static get HasEnpassant() {
+  static get HasCastle() {
     return false;
   }
 
-  getPotentialKingMoves(sq) {
-    // No castle
-    return this.getSlideNJumpMoves(
-      sq,
-      V.steps[V.ROOK].concat(V.steps[V.BISHOP]),
-      "oneStep"
-    );
+  static get HasEnpassant() {
+    return false;
   }
 
-  static GenRandInitFen() {
+  static GenRandInitFen(randomness) {
+    if (randomness == 0)
+      return "RNBQKBNR/PPPPPPPP/8/8/8/8/pppppppp/rnbqkbnr w 0";
+
     let pieces = { w: new Array(8), b: new Array(8) };
     for (let c of ["w", "b"]) {
+      if (c == 'b' && randomness == 1) {
+        pieces['b'] = pieces['w'];
+        break;
+      }
+
       let positions = ArrayFun.range(8);
 
       let randIndex = randInt(8);
@@ -73,4 +76,8 @@ export const VariantRules = class UpsidedownRules extends ChessRules {
       " w 0"
     ); //no castle, no en-passant
   }
+
+  static get SEARCH_DEPTH() {
+    return 2;
+  }
 };