static get ANTIKING() { return 'a'; }
- static get PIECES() {
+ static get PIECES()
+ {
return ChessRules.PIECES.concat([V.ANTIKING]);
}
- initVariables(fen)
+ setOtherVariables(fen)
{
- super.initVariables(fen);
+ super.setOtherVariables(fen);
this.antikingPos = {'w':[-1,-1], 'b':[-1,-1]};
- const position = fen.split(" ")[0].split("/");
- for (let i=0; i<position.length; i++)
+ const rows = V.ParseFen(fen).position.split("/");
+ for (let i=0; i<rows.length; i++)
{
let k = 0;
- for (let j=0; j<position[i].length; j++)
+ for (let j=0; j<rows[i].length; j++)
{
- switch (position[i].charAt(j))
+ switch (rows[i].charAt(j))
{
case 'a':
this.antikingPos['b'] = [i,k];
this.antikingPos['w'] = [i,k];
break;
default:
- let num = parseInt(position[i].charAt(j));
+ const num = parseInt(rows[i].charAt(j));
if (!isNaN(num))
k += (num-1);
}
V.steps[V.ROOK].concat(V.steps[V.BISHOP]), "oneStep");
}
- underCheck(move)
+ underCheck(color)
{
- const c = this.turn;
- const oppCol = this.getOppCol(c);
- this.play(move)
- let res = this.isAttacked(this.kingPos[c], [oppCol])
- || !this.isAttacked(this.antikingPos[c], [oppCol]);
- this.undo(move);
+ const oppCol = this.getOppCol(color);
+ let res = this.isAttacked(this.kingPos[color], [oppCol])
+ || !this.isAttacked(this.antikingPos[color], [oppCol]);
return res;
}
- getCheckSquares(move)
+ getCheckSquares(color)
{
- let res = super.getCheckSquares(move);
- this.play(move);
- const c = this.turn;
- if (!this.isAttacked(this.antikingPos[c], [this.getOppCol(c)]))
- res.push(JSON.parse(JSON.stringify(this.antikingPos[c])));
- this.undo(move);
+ let res = super.getCheckSquares(color);
+ if (!this.isAttacked(this.antikingPos[color], [this.getOppCol(color)]))
+ res.push(JSON.parse(JSON.stringify(this.antikingPos[color])));
return res;
}
updateVariables(move)
{
super.updateVariables(move);
- const piece = this.getPiece(move.start.x,move.start.y);
- const c = this.getColor(move.start.x,move.start.y);
+ const piece = move.vanish[0].p;
+ const c = move.vanish[0].c;
// Update antiking position
if (piece == V.ANTIKING)
{
unupdateVariables(move)
{
super.unupdateVariables(move);
- const c = this.getColor(move.start.x,move.start.y);
- if (this.getPiece(move.start.x,move.start.y) == V.ANTIKING)
+ const c = move.vanish[0].c;
+ if (move.vanish[0].p == V.ANTIKING)
this.antikingPos[c] = [move.start.x, move.start.y];
}
return pieces["b"].join("") + "/" + ranks23_black +
"/8/8/" +
ranks23_white + "/" + pieces["w"].join("").toUpperCase() +
- " 1111 w";
+ " w 1111 -";
}
}
+
+const VariantRules = AntikingRules;