X-Git-Url: https://git.auder.net/?a=blobdiff_plain;ds=sidebyside;f=client%2Fsrc%2Fvariants%2FGrasshopper.js;h=fb8c27cda7e5efee0ffb401d8dad06915b28a9e3;hb=78c23cd6e4717d6d07c84177b515c6e03717da7e;hp=416f63256a078ab5c7dd217ca09eb6729b6bf145;hpb=b83a675a3066c67cc7843ae27ad8aeffd15b0976;p=vchess.git diff --git a/client/src/variants/Grasshopper.js b/client/src/variants/Grasshopper.js index 416f6325..fb8c27cd 100644 --- a/client/src/variants/Grasshopper.js +++ b/client/src/variants/Grasshopper.js @@ -2,11 +2,22 @@ import { ChessRules } from "@/base_rules"; import { ArrayFun } from "@/utils/array"; import { randInt } from "@/utils/alea"; -export const VariantRules = class GrasshopperRules extends ChessRules { +export class GrasshopperRules extends ChessRules { static get HasEnpassant() { return false; } + static get PawnSpecs() { + return Object.assign( + {}, + ChessRules.PawnSpecs, + { + twoSquares: false, + promotions: ChessRules.PawnSpecs.promotions.concat([V.GRASSHOPPER]) + } + ); + } + static get GRASSHOPPER() { return "g"; } @@ -91,14 +102,14 @@ export const VariantRules = class GrasshopperRules extends ChessRules { return moves; } - isAttacked(sq, colors) { + isAttacked(sq, color) { return ( - super.isAttacked(sq, colors) || - this.isAttackedByGrasshopper(sq, colors) + super.isAttacked(sq, color) || + this.isAttackedByGrasshopper(sq, color) ); } - isAttackedByGrasshopper([x, y], colors) { + isAttackedByGrasshopper([x, y], color) { // Reversed process: is there an adjacent obstacle, // and a grasshopper next in the same line? for (const step of V.steps[V.ROOK].concat(V.steps[V.BISHOP])) { @@ -116,7 +127,7 @@ export const VariantRules = class GrasshopperRules extends ChessRules { if ( V.OnBoard(i, j) && this.getPiece(i, j) == V.GRASSHOPPER && - colors.includes(this.getColor(i, j)) + this.getColor(i, j) == color ) { return true; } @@ -139,7 +150,7 @@ export const VariantRules = class GrasshopperRules extends ChessRules { static GenRandInitFen(randomness) { return ChessRules.GenRandInitFen(randomness) - .replace("w 0 1111 -", "w 0 1111") + .slice(0, -2) .replace( "/pppppppp/8/8/8/8/PPPPPPPP/", "/gggggggg/pppppppp/8/8/PPPPPPPP/GGGGGGGG/"