// 6) Check promoted array
if (!fenParsed.promoted)
return false;
- fenpromoted = fenParsed.promoted;
- if (fenpromoted == "-")
+ if (fenParsed.promoted == "-")
return true; //no promoted piece on board
- const squares = fenpromoted.split(",");
+ const squares = fenParsed.promoted.split(",");
for (let square of squares)
{
const c = V.SquareToCoords(square);
return true;
}
+ static ParseFen(fen)
+ {
+ const fenParts = fen.split(" ");
+ return Object.assign(
+ ChessRules.ParseFen(fen),
+ {
+ reserve: fenParts[4],
+ promoted: fenParts[5],
+ }
+ );
+ }
+
static GenRandInitFen()
{
- const fen = ChessRules.GenRandInitFen();
- return fen.replace(" w 1111", " w 1111 0000000000 -");
+ return ChessRules.GenRandInitFen() + " 0000000000 -";
}
getFen()
getReserveFen()
{
- let counts = _.map(_.range(10), 0);
- for (let i=0; i<V.PIECES.length; i++)
+ let counts = new Array(10);
+ for (let i=0; i<V.PIECES.length-1; i++) //-1: no king reserve
{
counts[i] = this.reserve["w"][V.PIECES[i]];
counts[5+i] = this.reserve["b"][V.PIECES[i]];
}
if (res.length > 0)
res = res.slice(0,-1); //remove last comma
+ else
+ res = "-";
return res;
}
}
};
this.promoted = doubleArray(V.size.x, V.size.y, false);
- for (let square of fenParsd.promoted.split(","))
+ if (fenParsed.promoted != "-")
{
- const [x,y] = V.SquareToCoords(square);
- promoted[x][y] = true;
+ for (let square of fenParsed.promoted.split(","))
+ {
+ const [x,y] = V.SquareToCoords(square);
+ promoted[x][y] = true;
+ }
}
}
super.updateVariables(move);
if (move.vanish.length == 2 && move.appear.length == 2)
return; //skip castle
- const color = this.turn;
+ const color = move.appear[0].c;
if (move.vanish.length == 0)
{
this.reserve[color][move.appear[0].p]--;