3b640082df70dee58188c7716979e1000dae8e06
1 import { ChessRules
} from "@/base_rules";
3 export class LostqueenRules
extends ChessRules
{
5 // The king can move like a knight:
6 getPotentialKingMoves(sq
) {
8 super.getPotentialKingMoves(sq
).concat(
9 super.getSlideNJumpMoves(sq
, ChessRules
.steps
[V
.KNIGHT
], "oneStep"))
13 // Goal is to lose the queen (or be checkmated):
15 // If my queen disappeared, I win
16 const color
= this.turn
;
17 let haveQueen
= false;
18 outerLoop: for (let i
=0; i
<V
.size
.x
; i
++) {
19 for (let j
=0; j
<V
.size
.y
; j
++) {
21 this.board
[i
][j
] != V
.EMPTY
&&
22 this.getColor(i
,j
) == color
&&
23 this.getPiece(i
,j
) == V
.QUEEN
30 if (!haveQueen
) return color
== "w" ? "1-0" : "0-1";
31 if (this.atLeastOneMove()) return "*";
32 // No valid move: the side who cannot move (or is checkmated) wins
33 return this.turn
== "w" ? "1-0" : "0-1";