this.endGame(this.mycolor=="w"?"0-1":"1-0");
},
newGame: function(mode, fenInit, color, oppId, moves, continuation) {
- const fen = "3N1K2/2n2q2/P1R1kPnN/p3b1p1/b7/5Q2/4r3/8 0000";//fenInit || VariantRules.GenRandInitFen();
+ const fen = fenInit || VariantRules.GenRandInitFen();
console.log(fen); //DEBUG
if (mode=="human" && !oppId)
{
}
else if (mode == "computer")
{
- this.mycolor = "w";//Math.random() < 0.5 ? 'w' : 'b';
+ this.mycolor = Math.random() < 0.5 ? 'w' : 'b';
if (this.mycolor == 'b')
setTimeout(this.playComputerMove, 500);
}
// Check piece-king rectangle (if any) corners for enemy pieces
if (m.end.x == kp[0] || m.end.y == kp[1])
return; //"flat rectangle"
- const corner1 = [Math.max(m.end.x,kp[0]), Math.min(m.end.y,kp[1])];
- const corner2 = [Math.min(m.end.x,kp[0]), Math.max(m.end.y,kp[1])];
+ const corner1 = [m.end.x, kp[1]];
+ const corner2 = [kp[0], m.end.y];
for (let [i,j] of [corner1,corner2])
{
if (this.board[i][j] != VariantRules.EMPTY && this.getColor(i,j) == oppCol)
{
// Try in opposite direction:
let [i,j] = [x-step[0],y-step[1]];
- while (i>=0 && i<sizeX && j>=0 && j<sizeY && this.board[i][j] == V.EMPTY)
+ while (i>=0 && i<sizeX && j>=0 && j<sizeY)
{
- i -= step[0];
- j -= step[1];
- }
- if (i>=0 && i<sizeX && j>=0 && j<sizeY && colors.includes(this.getColor(i,j))
- && this.getPiece(i,j) == V.KNIGHT)
- {
- if (!this.isImmobilized([i,j]))
- return true;
+ while (i>=0 && i<sizeX && j>=0 && j<sizeY && this.board[i][j] == V.EMPTY)
+ {
+ i -= step[0];
+ j -= step[1];
+ }
+ if (i>=0 && i<sizeX && j>=0 && j<sizeY)
+ {
+ if (colors.includes(this.getColor(i,j)))
+ {
+ if (this.getPiece(i,j) == V.KNIGHT && !this.isImmobilized([i,j]))
+ return true;
+ continue outerLoop;
+ }
+ // [else] Our color, could be captured
+ i -= step[0];
+ j -= step[1];
+ }
}
}
}