X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FSynochess.js;h=f5ee12adc408a6b5b2b43ec0f44b1ec809c4a75b;hb=2cfc3b918bf2c6581199f9ca72b61112c35fdb15;hp=e5c3213bfeceea530e0b81ee1cb20216aef03be7;hpb=1e8a838649e16509c80c9933d99d78856e11b5c2;p=vchess.git diff --git a/client/src/variants/Synochess.js b/client/src/variants/Synochess.js index e5c3213b..f5ee12ad 100644 --- a/client/src/variants/Synochess.js +++ b/client/src/variants/Synochess.js @@ -256,9 +256,6 @@ export class SynochessRules extends ChessRules { // or if move.end.x == enemy king rank. const color = this.getColor(sq[0], sq[1]); const oppCol = V.GetOppCol(color); - // check == -1 if (row, or col) unchecked, 1 if checked and occupied, - // 0 if checked and clear - let check = [-1, -1]; return moves.filter(m => { if ( m.end.y != this.kingPos[oppCol][1] && @@ -266,13 +263,15 @@ export class SynochessRules extends ChessRules { ) { return true; } + // check == -1 if (row, or col) unchecked, 1 if checked and occupied, + // 0 if checked and clear + let check = [-1, -1]; // TODO: factor two next "if"... if (m.end.x == this.kingPos[oppCol][0]) { if (check[0] < 0) { // Do the check: check[0] = 0; - let [kingPos1, kingPos2] = - [this.kingPos[color][1], this.kingPos[oppCol][1]]; + let [kingPos1, kingPos2] = [m.end.y, this.kingPos[oppCol][1]]; if (kingPos1 > kingPos2) [kingPos1, kingPos2] = [kingPos2, kingPos1]; for (let i = kingPos1 + 1; i < kingPos2; i++) { if (this.board[m.end.x][i] != V.EMPTY) { @@ -289,8 +288,7 @@ export class SynochessRules extends ChessRules { if (check[1] < 0) { // Do the check: check[1] = 0; - let [kingPos1, kingPos2] = - [this.kingPos[color][0], this.kingPos[oppCol][0]]; + let [kingPos1, kingPos2] = [m.end.x, this.kingPos[oppCol][0]]; if (kingPos1 > kingPos2) [kingPos1, kingPos2] = [kingPos2, kingPos1]; for (let i = kingPos1 + 1; i < kingPos2; i++) { if (this.board[i][m.end.y] != V.EMPTY) { @@ -344,7 +342,6 @@ export class SynochessRules extends ChessRules { let i = x + step[0]; let j = y + step[1]; while (V.OnBoard(i, j) && this.board[i][j] == V.EMPTY) { - moves.push(this.getBasicMove([x, y], [i, j])); i += step[0]; j += step[1]; } @@ -353,6 +350,7 @@ export class SynochessRules extends ChessRules { i += step[0]; j += step[1]; while (V.OnBoard(i, j) && this.board[i][j] == V.EMPTY) { + moves.push(this.getBasicMove([x, y], [i, j])); i += step[0]; j += step[1]; } @@ -527,7 +525,7 @@ export class SynochessRules extends ChessRules { evalPosition() { let evaluation = super.evalPosition(); - if (this.turn == 'b') + if (this.turn == 'b' && !!this.reserve) // Add reserves: evaluation += this.reserve['b'][V.SOLDIER] * V.VALUES[V.SOLDIER]; return evaluation;