Several small improvements + integrate options + first working draft of Cwda
[vchess.git] / client / src / variants / Alapo.js
index 6864457..2d2a790 100644 (file)
@@ -1,4 +1,6 @@
 import { ChessRules } from "@/base_rules";
+import { ArrayFun } from "@/utils/array";
+import { randInt } from "@/utils/alea";
 
 export class AlapoRules extends ChessRules {
 
@@ -32,16 +34,14 @@ export class AlapoRules extends ChessRules {
   }
 
   getPotentialMinirookMoves(sq) {
-    return super.getSlideNJumpMoves(sq, V.steps[V.ROOK], "oneStep");
+    return super.getSlideNJumpMoves(sq, V.steps[V.ROOK], 1);
   }
   getPotentialMinibishopMoves(sq) {
-    return super.getSlideNJumpMoves(sq, V.steps[V.BISHOP], "oneStep");
+    return super.getSlideNJumpMoves(sq, V.steps[V.BISHOP], 1);
   }
   getPotentialMiniqueenMoves(sq) {
-    return (
-      super.getSlideNJumpMoves(
-        sq, V.steps[V.ROOK].concat(V.steps[V.BISHOP]), "oneStep")
-    );
+    return super.getSlideNJumpMoves(
+      sq, V.steps[V.ROOK].concat(V.steps[V.BISHOP]), 1);
   }
 
   getPotentialMovesFrom(sq) {
@@ -66,8 +66,8 @@ export class AlapoRules extends ChessRules {
     return "Alapo/" + b + suffix;
   }
 
-  static GenRandInitFen(randomness) {
-    if (randomness == 0)
+  static GenRandInitFen(options) {
+    if (options.randomness == 0)
       return "rbqqbr/tcssct/6/6/TCSSCT/RBQQBR w 0";
 
     const piece2pawn = {
@@ -79,7 +79,7 @@ export class AlapoRules extends ChessRules {
     let pieces = { w: new Array(6), b: new Array(6) };
     // Shuffle pieces on first (and last rank if randomness == 2)
     for (let c of ["w", "b"]) {
-      if (c == 'b' && randomness == 1) {
+      if (c == 'b' && options.randomness == 1) {
         pieces['b'] = pieces['w'];
         break;
       }
@@ -113,11 +113,12 @@ export class AlapoRules extends ChessRules {
       pieces[c][bishop2Pos] = "b";
       pieces[c][rook2Pos] = "r";
     }
+
     return (
       pieces["b"].join("") + "/" +
-      pieces["b"].map(p => piece2pawn[p]).join() +
-      "/8/8/8/8/" +
-      pieces["w"].map(p => piece2pawn[p].toUpperCase()).join() + "/" +
+      pieces["b"].map(p => piece2pawn[p]).join("") +
+      "/6/6/" +
+      pieces["w"].map(p => piece2pawn[p].toUpperCase()).join("") + "/" +
       pieces["w"].join("").toUpperCase() +
       " w 0"
     );
@@ -221,4 +222,15 @@ export class AlapoRules extends ChessRules {
     return super.getCurrentScore();
   }
 
+  static get VALUES() {
+    return {
+      r: 5,
+      b: 3,
+      q: 9,
+      t: 3,
+      c: 2,
+      s: 5
+    };
+  }
+
 };