import { ChessRules } from "@/base_rules";
+import { ArrayFun } from "@/utils/array";
+import { randInt } from "@/utils/alea";
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) {
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 = {
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;
}
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"
);