return ChessRules.fen2board(f);
}
- initVariables(fen)
- {
- super.initVariables(fen);
- // Decode last non-capturing checkered move (if any)
- const cmove = fen.split(" ")[4];
- if (cmove != "-")
- {
- const piece = cmove.charAt(0);
- const startEnd = cmove.substr(1).split(";");
- const start = startEnd[0].split(",");
- const end = startEnd[1].split(",");
- this.moves.push(new Move({
- appear: [ new PiPo({c:"c", p:piece, x:end[0], y:end[1]}) ],
- vanish: [ new PiPo({c:"c", p:piece, x:start[0], y:start[1]}) ]
- }));
- }
- }
-
static GetFlags(fen)
{
let flags = [
return res;
}
+ getCheckSquares(move, c)
+ {
+ this.play(move);
+ const kingAttacked = this.isAttacked(this.kingPos[c], this.getOppCol(c))
+ || this.isAttacked(this.kingPos[c], 'c');
+ let res = kingAttacked
+ ? [ JSON.parse(JSON.stringify(this.kingPos[c])) ] //need to duplicate!
+ : [ ];
+ this.undo(move);
+ return res;
+ }
+
updateVariables(move)
{
const piece = this.getPiece(move.start.x,move.start.y);
static GenRandInitFen()
{
- let fen = ChessRules.GenRandInitFen();
- return fen.replace(/ - 0$/, "1111111111111111 - 0 -");
- }
-
- getFen()
- {
- let fen = super.getFen() + " ";
- const L = this.moves.length;
- if (L > 0 && this.moves[L-1].vanish.length==1 && this.moves[L-1].appear[0].c=="c")
- {
- // Ok, un-cancellable checkered move
- fen += this.moves[L-1].appear[0].p
- + this.moves[L-1].start.x + "," + this.moves[L-1].start.y + ";"
- + this.moves[L-1].end.x + "," + this.moves[L-1].end.y;
- }
- else fen += "-";
- return fen;
+ return ChessRules.GenRandInitFen() + "1111111111111111"; //add 16 pawns flags
}
getFlagsFen()