Commit | Line | Data |
---|---|---|
955fbf56 BA |
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 | }; |