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.
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
| 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.
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
| 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.
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
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)
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;
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;
}
});
}
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;
}
}
}