Prepare some more variants (unfinished)
[vchess.git] / public / javascripts / variants / Dark.js
1 class Chess960Rules extends ChessRules
2 {
3 // Standard rules, in the shadow
4 setOtherVariables(fen)
5 {
6 super.setOtherVariables(fen);
7 const [sizeX,sizeY] = {V.size.x,V.size.y};
8 this.enlightened = {
9 "w": doubleArray(sizeX,sizeY,false),
10 "b": doubleArray(sizeX,sizeY,false)
11 };
12 setup enlightened: squares reachable by each side (TODO: one side would be enough)
13 }
14
15 isEnlightened(x, y, color)
16 {
17 //TODO: artificlaly change turn
18 }
19
20 getAllPotentialMoves()
21 {
22 let moves = []; //TODO
23 }
24
25 atLeastOneMove()
26 {
27 if (this.kingPos[this.turn][0] < 0)
28 return false;
29 return true; //TODO: is it right?
30 }
31
32 underCheck(move)
33 {
34 return false; //there is no check
35 }
36
37 getCheckSquares(move)
38 {
39 const c = this.getOppCol(this.turn); //opponent
40 const saveKingPos = this.kingPos[c]; //king might be taken
41 this.play(move);
42 // The only way to be "under check" is to have lost the king (thus game over)
43 let res = this.kingPos[c][0] < 0
44 ? [JSON.parse(JSON.stringify(saveKingPos))]
45 : [];
46 this.undo(move);
47 return res;
48 }
49
50 // NOTE: no (un)updateVariables() because no computer mode
51 // --> but isEnlightened() should have its variable updated
52 // --> in fact an array is enough (no need for a function)
53 // recomputed after every play/undo (although there are no undo here for now)
54
55 checkGameEnd()
56 {
57 // No valid move: our king disappeared
58 return this.turn == "w" ? "0-1" : "1-0";
59 }
60
61 static get THRESHOLD_MATE()
62 {
63 return 500; //checkmates evals may be slightly below 1000
64 }
65 }
66
67 const VariantRules = DarkRules;