From 5c27a4b518693204ee33f85b50cb2cd518d38941 Mon Sep 17 00:00:00 2001 From: Benjamin Auder Date: Sat, 17 Apr 2021 14:14:22 +0200 Subject: [PATCH] Fix Football, add some pieces movements in rules for Cwda --- client/src/translations/rules/Cwda/en.pug | 20 +++++++++-- client/src/translations/rules/Cwda/es.pug | 20 +++++++++-- client/src/translations/rules/Cwda/fr.pug | 19 ++++++++-- client/src/variants/Football.js | 43 +++++++---------------- 4 files changed, 63 insertions(+), 39 deletions(-) diff --git a/client/src/translations/rules/Cwda/en.pug b/client/src/translations/rules/Cwda/en.pug index 30c016d2..af8b8163 100644 --- a/client/src/translations/rules/Cwda/en.pug +++ b/client/src/translations/rules/Cwda/en.pug @@ -39,6 +39,12 @@ figure.diagram-container figcaption. Moves of the Bede on the left, and of the Waffle on the right. +figure.diagram-container + .diagram + | fen:8/8/8/3F4/8/8/8/8 b7,c6,b5,f5,d3,d7,b3,c4,e4,f3,e6,f7: + figcaption. + Moves of the Fad. + p. When castling large, the king and rook arrive respectively on b1/b8 and c1/c8 so that the rook remains on the same color. @@ -61,11 +67,19 @@ ul figure.diagram-container .diagram.diag12 - | fen:8/8/8/3i4/8/8/8/8 c7,c3,e7,e3,c4,c6,e6,e4: + | fen:8/8/8/8/3G4/8/8/8 d5,d6,d7,d8,c4,b4,a4,e4,f4,g4,h4,c3,d3,e3: + .diagram.diag22 + | fen:8/8/8/8/4i3/8/8/8 d6,d2,f6,f2,d3,d5,f5,f3: + figcaption. + Moves of the Charging rook on the left, and of the Fibnif on the right. + +figure.diagram-container + .diagram.diag12 + | fen:8/8/8/8/3T4/8/8/8 b5,c6,e6,f5,c4,e4,c3,d3,e3: .diagram.diag22 - | fen:8/8/8/4T3/8/8/8/8 c6,d7,f7,g6,d5,f5,d4,e4,f4: + | fen:8/8/8/8/4c3/8/8/8 e5,e6,e7,e8,d4,c4,b4,a4,f4,g4,h4,d6,c5,f6,g5,d5,f5,d3,e3,f3: figcaption. - Moves of the Fibnif on the left, and of the Charging knight on the right. + Moves of the Charging knight on the left, and of the Colonel on the right. h3 The Remarkable Rookies diff --git a/client/src/translations/rules/Cwda/es.pug b/client/src/translations/rules/Cwda/es.pug index a5b5ac85..727ee165 100644 --- a/client/src/translations/rules/Cwda/es.pug +++ b/client/src/translations/rules/Cwda/es.pug @@ -41,6 +41,12 @@ figure.diagram-container | fen:8/8/8/4w3/8/8/8/8 e6,f5,e4,d5,c7,g7,g3,c3: figcaption Jugadas del Bede a la izquierda y del Gofre a la derecha. +figure.diagram-container + .diagram + | fen:8/8/8/3F4/8/8/8/8 b7,c6,b5,f5,d3,d7,b3,c4,e4,f3,e6,f7: + figcaption. + Jugadas del Fad. + p. Después del gran enroque, el rey y la torre llegan respectivamente en b1/b8 y c1/c8 para que la torre permanezca al mismo color. @@ -67,11 +73,19 @@ ul figure.diagram-container .diagram.diag12 - | fen:8/8/8/3i4/8/8/8/8 c7,c3,e7,e3,c4,c6,e6,e4: + | fen:8/8/8/8/3G4/8/8/8 d5,d6,d7,d8,c4,b4,a4,e4,f4,g4,h4,c3,d3,e3: + .diagram.diag22 + | fen:8/8/8/8/4i3/8/8/8 d6,d2,f6,f2,d3,d5,f5,f3: + figcaption. + Jugadas de la Torre de carga a la izquierda, y del Fibnif a la derecha. + +figure.diagram-container + .diagram.diag12 + | fen:8/8/8/8/3T4/8/8/8 b5,c6,e6,f5,c4,e4,c3,d3,e3: .diagram.diag22 - | fen:8/8/8/4T3/8/8/8/8 c6,d7,f7,g6,d5,f5,d4,e4,f4: + | fen:8/8/8/8/4c3/8/8/8 e5,e6,e7,e8,d4,c4,b4,a4,f4,g4,h4,d6,c5,f6,g5,d5,f5,d3,e3,f3: figcaption. - Jugadas del Fibnif a la izquierda, y del Caballo de carga a la derecha. + Jugadas del Caballo de carga a la izquierda, y del Coronel a la derecha. h3 Las Reclutas Notables diff --git a/client/src/translations/rules/Cwda/fr.pug b/client/src/translations/rules/Cwda/fr.pug index 53e51d8d..a5c7ce21 100644 --- a/client/src/translations/rules/Cwda/fr.pug +++ b/client/src/translations/rules/Cwda/fr.pug @@ -41,6 +41,12 @@ figure.diagram-container | fen:8/8/8/4w3/8/8/8/8 e6,f5,e4,d5,c7,g7,g3,c3: figcaption Coups du Bede à gauche, et de la Gaufre à droite. +figure.diagram-container + .diagram + | fen:8/8/8/3F4/8/8/8/8 b7,c6,b5,f5,d3,d7,b3,c4,e4,f3,e6,f7: + figcaption. + Coups du Fad. + p. Après le grand roque, roi et tour arrivent respectivement en b1/b8 et c1/c8 afin que la tour reste sur la même couleur. @@ -67,10 +73,17 @@ ul figure.diagram-container .diagram.diag12 - | fen:8/8/8/3i4/8/8/8/8 c7,c3,e7,e3,c4,c6,e6,e4: + | fen:8/8/8/8/3G4/8/8/8 d5,d6,d7,d8,c4,b4,a4,e4,f4,g4,h4,c3,d3,e3: + .diagram.diag22 + | fen:8/8/8/8/4i3/8/8/8 d6,d2,f6,f2,d3,d5,f5,f3: + figcaption Coups de la Tour chargeante à gauche, et du Fibnif à droite. + +figure.diagram-container + .diagram.diag12 + | fen:8/8/8/8/3T4/8/8/8 b5,c6,e6,f5,c4,e4,c3,d3,e3: .diagram.diag22 - | fen:8/8/8/4T3/8/8/8/8 c6,d7,f7,g6,d5,f5,d4,e4,f4: - figcaption Coups du Fibnif à gauche, et du Cavalier chargeant à droite. + | fen:8/8/8/8/4c3/8/8/8 e5,e6,e7,e8,d4,c4,b4,a4,f4,g4,h4,d6,c5,f6,g5,d5,f5,d3,e3,f3: + figcaption Coups du Cavalier chargeant à gauche, et du Colonel à droite. h3 Les Recrues Remarquables diff --git a/client/src/variants/Football.js b/client/src/variants/Football.js index 7829c2d6..18a3ecad 100644 --- a/client/src/variants/Football.js +++ b/client/src/variants/Football.js @@ -159,7 +159,7 @@ export class FootballRules extends ChessRules { V.OnBoard(i, j) && this.board[i][j] == V.EMPTY && ( - // In a corner? The, allow all ball moves + // In a corner? Then, allow all ball moves ([0, 8].includes(bp[0]) && [0, 8].includes(bp[1])) || // Do not end near the knight (Math.abs(i - x) >= 2 || Math.abs(j - y) >= 2) @@ -246,34 +246,17 @@ export class FootballRules extends ChessRules { const moves = super.getPotentialMovesFrom([x, y]) .filter(m => m.end.y != 4 || ![0, 8].includes(m.end.x)); // If bishop stuck in a corner: allow to jump over the next obstacle - if (moves.length == 0 && piece == V.BISHOP) { - if ( - x == 0 && y == 0 && - this.board[1][1] != V.EMPTY && - this.board[2][2] == V.EMPTY - ) { - return [super.getBasicMove([x, y], [2, 2])]; - } - if ( - x == 0 && y == 8 && - this.board[1][7] != V.EMPTY && - this.board[2][6] == V.EMPTY - ) { - return [super.getBasicMove([x, y], [2, 6])]; - } - if ( - x == 8 && y == 0 && - this.board[7][1] != V.EMPTY && - this.board[6][2] == V.EMPTY - ) { - return [super.getBasicMove([x, y], [6, 2])]; - } + if ( + moves.length == 0 && piece == V.BISHOP && + [0, 8].includes(x) && [0, 8].includes(y) + ) { + const indX = x == 0 ? [1, 2] : [7, 6]; + const indY = y == 0 ? [1, 2] : [7, 6]; if ( - x == 8 && y == 8 && - this.board[7][7] != V.EMPTY && - this.board[6][6] == V.EMPTY + this.board[indX[0]][indY[0]] != V.EMPTY && + this.board[indX[1]][indY[1]] == V.EMPTY ) { - return [super.getBasicMove([x, y], [6, 6])]; + return [super.getBasicMove([x, y], [indX[1], indY[1]])]; } } return moves; @@ -293,9 +276,9 @@ export class FootballRules extends ChessRules { const kmoves = this.tryKickFrom([i, j]); kmoves.forEach(km => { const key = V.CoordsToSquare(km.start) + V.CoordsToSquare(km.end); - if (!kicks[km]) { + if (!kicks[key]) { moves.push(km); - kicks[km] = true; + kicks[key] = true; } }); } @@ -306,7 +289,7 @@ export class FootballRules extends ChessRules { 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; + if (computer) break outerLoop; } } } -- 2.44.0