X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fbase_rules.js;h=db9b981a9f0b8f053e666f0ccf8fed1aea69aba0;hb=1c5bfdf23707e893735f185786e9774b2270ace1;hp=4f1478e17680fd5dde812d2f66bcd81319ebaed2;hpb=0ba6420d3515e278b34c29e5afa1e58f6e08e9eb;p=vchess.git diff --git a/client/src/base_rules.js b/client/src/base_rules.js index 4f1478e1..db9b981a 100644 --- a/client/src/base_rules.js +++ b/client/src/base_rules.js @@ -195,17 +195,19 @@ export const ChessRules = class ChessRules { } // Argument is a move: const move = moveOrSquare; - const [sx, sy, ex] = [move.start.x, move.start.y, move.end.x]; + const s = move.start, + e = move.end; // NOTE: next conditions are first for Atomic, and last for Checkered if ( move.appear.length > 0 && - Math.abs(sx - ex) == 2 && + Math.abs(s.x - e.x) == 2 && + s.y == e.y && move.appear[0].p == V.PAWN && ["w", "b"].includes(move.appear[0].c) ) { return { - x: (sx + ex) / 2, - y: sy + x: (s.x + e.x) / 2, + y: s.y }; } return undefined; //default @@ -595,6 +597,7 @@ export const ChessRules = class ChessRules { }) ); } + return mv; } @@ -1121,6 +1124,7 @@ export const ChessRules = class ChessRules { // Some variants may show a bigger moves list to the human (Switching), // thus the argument "computer" below (which is generally ignored) let moves1 = this.getAllValidMoves("computer"); + if (moves1.length == 0) //TODO: this situation should not happen return null; @@ -1209,7 +1213,7 @@ export const ChessRules = class ChessRules { return (color == "w" ? 1 : -1) * (b.eval - a.eval); }); } else return currentBest; - // console.log(moves1.map(m => { return [this.getNotation(m), m.eval]; })); +// console.log(moves1.map(m => { return [this.getNotation(m), m.eval]; })); candidates = [0]; for (let j = 1; j < moves1.length && moves1[j].eval == moves1[0].eval; j++) @@ -1234,8 +1238,9 @@ export const ChessRules = class ChessRules { alpha = Math.max(alpha, v); if (alpha >= beta) break; //beta cutoff } - } //color=="b" + } else { + // color=="b" for (let i = 0; i < moves.length; i++) { this.play(moves[i]); v = Math.min(v, this.alphabeta(depth - 1, alpha, beta));