// Stop at the first capture found (if any)
atLeastOneCapture() {
const color = this.turn;
- const oppCol = V.GetOppCol(color);
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) != oppCol &&
- this.filterValid(this.getPotentialMovesFrom([i, j])).some(m =>
- // Warning: discard castle moves
- m.vanish.length == 2 && m.appear.length == 1)
+ this.getColor(i, j) == color &&
+ this.filterValid(this.getPotentialMovesFrom([i, j])).some(m => {
+ return (
+ // Warning: discard castle moves
+ m.vanish.length == 2 && m.appear.length == 1 &&
+ this.filterValid([m]).length == 1
+ );
+ })
) {
return true;
}
// Stop at the first capture found (if any)
atLeastOneCapture() {
const color = this.turn;
- const oppCol = V.GetOppCol(color);
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) != oppCol &&
- this.getPotentialMovesFrom([i, j]).some(m =>
- // Warning: discard castle moves
- m.vanish.length == 2 && m.appear.length == 1)
+ this.getColor(i, j) == color &&
+ this.getPotentialMovesFrom([i, j]).some(m => {
+ return (
+ // Warning: discard castle moves
+ m.vanish.length == 2 && m.appear.length == 1 &&
+ this.filterValid([m]).length == 1
+ );
+ })
) {
return true;
}
getPossibleMovesFrom(sq) {
let moves = this.filterValid(this.getPotentialMovesFrom(sq));
const captureMoves = V.KeepCaptures(moves);
+
+console.log(this.atLeastOneCapture());
+
if (captureMoves.length > 0) return captureMoves;
if (this.atLeastOneCapture()) return [];
return moves;
// Stop at the first capture found (if any)
atLeastOneCapture() {
const color = this.turn;
- const oppCol = V.GetOppCol(color);
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) != oppCol &&
+ this.getColor(i, j) == color &&
this.getPotentialMovesFrom([i, j]).some(m => m.vanish.length == 2)
) {
return true;