{
static getPpath(b)
{
- const V = VariantRules;
return ([V.MARSHALL,V.CARDINAL].includes(b[1]) ? "Grand/" : "") + b;
}
this.captures = { "w": {}, "b": {} }; //for promotions
}
- static get size() { return [10,10]; }
+ static get size() { return {x:10,y:10}; }
static get MARSHALL() { return 'm'; } //rook+knight
static get CARDINAL() { return 'c'; } //bishop+knight
getEpSquare(move)
{
const [sx,sy,ex] = [move.start.x,move.start.y,move.end.x];
- if (this.getPiece(sx,sy) == VariantRules.PAWN && Math.abs(sx - ex) >= 2)
+ if (this.getPiece(sx,sy) == V.PAWN && Math.abs(sx - ex) >= 2)
{
const step = (ex-sx) / Math.abs(ex-sx);
let res = [{
{
switch (this.getPiece(x,y))
{
- case VariantRules.MARSHALL:
+ case V.MARSHALL:
return this.getPotentialMarshallMoves([x,y]);
- case VariantRules.CARDINAL:
+ case V.CARDINAL:
return this.getPotentialCardinalMoves([x,y]);
default:
return super.getPotentialMovesFrom([x,y])
{
const color = this.turn;
let moves = [];
- const V = VariantRules;
- const [sizeX,sizeY] = VariantRules.size;
+ const [sizeX,sizeY] = [V.size.x,V.size.y];
const shift = (color == "w" ? -1 : 1);
const startRanks = (color == "w" ? [sizeX-2,sizeX-3] : [1,2]);
const lastRanks = (color == "w" ? [0,1,2] : [sizeX-1,sizeX-2,sizeX-3]);
getPotentialMarshallMoves(sq)
{
- const V = VariantRules;
return this.getSlideNJumpMoves(sq, V.steps[V.ROOK]).concat(
this.getSlideNJumpMoves(sq, V.steps[V.KNIGHT], "oneStep"));
}
getPotentialCardinalMoves(sq)
{
- const V = VariantRules;
return this.getSlideNJumpMoves(sq, V.steps[V.BISHOP]).concat(
this.getSlideNJumpMoves(sq, V.steps[V.KNIGHT], "oneStep"));
}
isAttackedByMarshall(sq, colors)
{
- const V = VariantRules;
return this.isAttackedBySlideNJump(sq, colors, V.MARSHALL, V.steps[V.ROOK])
|| this.isAttackedBySlideNJump(
sq, colors, V.MARSHALL, V.steps[V.KNIGHT], "oneStep");
isAttackedByCardinal(sq, colors)
{
- const V = VariantRules;
return this.isAttackedBySlideNJump(sq, colors, V.CARDINAL, V.steps[V.BISHOP])
|| this.isAttackedBySlideNJump(
sq, colors, V.CARDINAL, V.steps[V.KNIGHT], "oneStep");
updateVariables(move)
{
super.updateVariables(move);
- if (move.vanish.length==2 && move.appear.length==1
- && move.vanish[1].p != VariantRules.PAWN)
+ if (move.vanish.length==2 && move.appear.length==1 && move.vanish[1].p != V.PAWN)
{
// Capture: update this.captures
if (!this.captures[move.vanish[1].c][move.vanish[1].p])
unupdateVariables(move)
{
super.unupdateVariables(move);
- if (move.vanish.length==2 && move.appear.length==1
- && move.vanish[1].p != VariantRules.PAWN)
+ if (move.vanish.length==2 && move.appear.length==1 && move.vanish[1].p != V.PAWN)
{
this.captures[move.vanish[1].c][move.vanish[1].p] =
Math.max(0, this.captures[move.vanish[1].c][move.vanish[1].p]-1);