X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FDobutsu.js;h=af8c4f645575ee52d2bf66c7e438b62529169222;hb=HEAD;hp=a5c038680a63c3f13ed7d58d5b5a6a250c5e26c8;hpb=6c00a6e55209930057bcf040cf444f40e7d47030;p=vchess.git diff --git a/client/src/variants/Dobutsu.js b/client/src/variants/Dobutsu.js index a5c03868..af8c4f64 100644 --- a/client/src/variants/Dobutsu.js +++ b/client/src/variants/Dobutsu.js @@ -4,6 +4,10 @@ import { sample, shuffle } from "@/utils/alea"; export class DobutsuRules extends ChessRules { + static get Options() { + return null; + } + static get HasFlags() { return false; } @@ -16,6 +20,10 @@ export class DobutsuRules extends ChessRules { return true; } + get showFirstTurn() { + return true; + } + static IsGoodFen(fen) { if (!ChessRules.IsGoodFen(fen)) return false; const fenParsed = V.ParseFen(fen); @@ -177,6 +185,7 @@ export class DobutsuRules extends ChessRules { } switch (this.getPiece(sq[0], sq[1])) { case V.PAWN: return this.getPotentialPawnMoves(sq); + case V.HEN: return this.getPotentialHenMoves(sq); case V.ELEPHANT: return this.getPotentialElephantMoves(sq); case V.GIRAFFE: return this.getPotentialGiraffeMoves(sq); case V.KING: return super.getPotentialKingMoves(sq); @@ -198,12 +207,19 @@ export class DobutsuRules extends ChessRules { } } + getPotentialHenMoves(sq) { + const c = this.turn; + const forward = (c == 'w' ? -1 : 1); + const steps = V.steps[V.ROOK].concat([[forward, 1], [forward, -1]]); + return super.getSlideNJumpMoves(sq, steps, 1); + } + getPotentialElephantMoves(sq) { - return super.getSlideNJumpMoves(sq, V.steps[V.BISHOP], "oneStep"); + return super.getSlideNJumpMoves(sq, V.steps[V.BISHOP], 1); } getPotentialGiraffeMoves(sq) { - return super.getSlideNJumpMoves(sq, V.steps[V.ROOK], "oneStep"); + return super.getSlideNJumpMoves(sq, V.steps[V.ROOK], 1); } getAllValidMoves() {