X-Git-Url: https://git.auder.net/variants/%24%7Bvname%7D/current/gitweb.css?a=blobdiff_plain;f=base_rules.js;h=a0defd19f7d718c74ea7cdf361a9a3cb27e4904f;hb=5006aaca31fa5fa36cb82784d13f6d28d754c90c;hp=7dc134d0a8b0cfadc2b38a346f42597ca032fd2d;hpb=10c9010b3b04915e132b6b3820f2f19c9ea6dcf0;p=xogo.git diff --git a/base_rules.js b/base_rules.js index 7dc134d..a0defd1 100644 --- a/base_rules.js +++ b/base_rules.js @@ -286,9 +286,9 @@ export default class ChessRules { // Position part of the FEN string getPosition() { let position = ""; - for (let i = 0; i < this.size.y; i++) { + for (let i = 0; i < this.size.x; i++) { let emptyCount = 0; - for (let j = 0; j < this.size.x; j++) { + for (let j = 0; j < this.size.y; j++) { if (this.board[i][j] == "") emptyCount++; else { @@ -303,7 +303,7 @@ export default class ChessRules { if (emptyCount > 0) // "Flush remainder" position += C.FenEmptySquares(emptyCount); - if (i < this.size.y - 1) + if (i < this.size.x - 1) position += "/"; //separate rows } return position; @@ -1171,8 +1171,12 @@ export default class ChessRules { //////////////////////// // PIECES SPECIFICATIONS + getPawnShift(color) { + return (color == "w" ? -1 : 1); + } + pieces(color, x, y) { - const pawnShift = (color == "w" ? -1 : 1); + const pawnShift = this.getPawnShift(color); // NOTE: jump 2 squares from first rank (pawns can be here sometimes) const initRank = ((color == 'w' && x >= 6) || (color == 'b' && x <= 1)); return { @@ -2102,8 +2106,10 @@ export default class ChessRules { //////////////////// // MOVES VALIDATION - // Is piece (or square) at given position attacked by "oppCol" ? + // Is piece (or square) at given position attacked by "oppCol(s)" ? underAttack([x, y], oppCol) { + if (!Array.isArray(oppCol)) + oppCol = [oppCol]; // An empty square is considered as king, // since it's used only in getCastleMoves (TODO?) const king = this.board[x][y] == "" || this.isKing(x, y); @@ -2113,7 +2119,7 @@ export default class ChessRules { this.findCapturesOn( [x, y], { - byCol: [oppCol], + byCol: oppCol, segments: this.options["cylinder"], one: true } @@ -2129,7 +2135,7 @@ export default class ChessRules { segments: this.options["cylinder"], one: true }, - ([i1, j1], [i2, j2]) => this.getColor(i2, j2) == oppCol + ([i1, j1], [i2, j2]) => oppCol.includes(this.getColor(i2, j2)) ) ) );