Lostqueen variant now listed
[vchess.git] / client / src / variants / Lostqueen.js
1 import { ChessRules } from "@/base_rules";
2
3 export class LostqueenRules extends ChessRules {
4
5 // The king can move like a knight:
6 getPotentialKingMoves(sq) {
7 return (
8 super.getPotentialKingMoves(sq).concat(
9 super.getSlideNJumpMoves(sq, ChessRules.steps[V.KNIGHT], "oneStep"))
10 );
11 }
12
13 // Goal is to lose the queen (or be checkmated):
14 getCurrentScore() {
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++) {
20 if (
21 this.board[i][j] != V.EMPTY &&
22 this.getColor(i,j) == color &&
23 this.getPiece(i,j) == V.QUEEN
24 ) {
25 haveQueen = true;
26 break outerLoop;
27 }
28 }
29 }
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";
34 }
35
36 };