X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FFootball.js;h=ffe6736b1daf268e29d0972a7699015392c20906;hb=HEAD;hp=18a3ecad4ee3dbf691698677214ce600f42c7e5c;hpb=5c27a4b518693204ee33f85b50cb2cd518d38941;p=vchess.git diff --git a/client/src/variants/Football.js b/client/src/variants/Football.js index 18a3ecad..ffe6736b 100644 --- a/client/src/variants/Football.js +++ b/client/src/variants/Football.js @@ -266,6 +266,7 @@ export class FootballRules extends ChessRules { const c = this.turn; let moves = []; let kicks = {}; + let adjacentPieces = false; for (let s of steps) { const [i, j] = [x + s[0], y + s[1]]; if ( @@ -281,15 +282,19 @@ export class FootballRules extends ChessRules { kicks[key] = true; } }); + if (!adjacentPieces) adjacentPieces = true; } } - if (Object.keys(kicks).length > 0) { - // And, always add the "end" move. For computer, keep only one + if (adjacentPieces) { + // Add the "end" move (even if no valid kicks) outerLoop: for (let i=0; i < V.size.x; i++) { for (let j=0; j < V.size.y; j++) { if (this.board[i][j] != V.EMPTY && this.getColor(i, j) == c) { - moves.push(super.getBasicMove([x, y], [i, j])); - if (computer) break outerLoop; + moves.push({ + appear: [], vanish: [], + start: { x: x, y: y }, end: { x: i, y: j } + }); + if (computer) break outerLoop; //no choice for computer } } } @@ -358,7 +363,7 @@ export class FootballRules extends ChessRules { play(move) { // Special message saying "passes are over" - const passesOver = (move.vanish.length == 2); + const passesOver = (move.vanish.length == 0); if (!passesOver) { this.prePlay(move); V.PlayOnBoard(this.board, move); @@ -380,7 +385,7 @@ export class FootballRules extends ChessRules { } undo(move) { - const passesOver = (move.vanish.length == 2); + const passesOver = (move.vanish.length == 0); if (move.turn[0] != this.turn) { [this.turn, this.subTurn] = move.turn; this.movesCount--; @@ -434,7 +439,7 @@ export class FootballRules extends ChessRules { // NOTE: evalPosition() is wrong, but unused since bot plays at random getNotation(move) { - if (move.vanish.length == 2) return "pass"; + if (move.vanish.length == 0) return "pass"; if (move.vanish[0].p != 'a') return super.getNotation(move); // Kick: simple notation (TODO?) return V.CoordsToSquare(move.end);