Further fix in Alice chess; still some issues
authorBenjamin Auder <benjamin.auder@somewhere>
Fri, 23 Nov 2018 16:55:11 +0000 (17:55 +0100)
committerBenjamin Auder <benjamin.auder@somewhere>
Fri, 23 Nov 2018 16:55:11 +0000 (17:55 +0100)
public/javascripts/base_rules.js
public/javascripts/components/game.js
public/javascripts/variants/Alice.js

index 346eff0..c24c84c 100644 (file)
@@ -503,25 +503,25 @@ class ChessRules
                // No: if happen on last 1/2 move, could lead to forbidden moves, wrong evals
                return this.filterValid(potentialMoves);
        }
                // No: if happen on last 1/2 move, could lead to forbidden moves, wrong evals
                return this.filterValid(potentialMoves);
        }
-       
+
        // Stop at the first move found
        atLeastOneMove()
        {
                const color = this.turn;
                const oppCol = this.getOppCol(color);
                let [sizeX,sizeY] = VariantRules.size;
        // Stop at the first move found
        atLeastOneMove()
        {
                const color = this.turn;
                const oppCol = this.getOppCol(color);
                let [sizeX,sizeY] = VariantRules.size;
-               for (var i=0; i<sizeX; i++)
+               for (let i=0; i<sizeX; i++)
                {
                {
-                       for (var j=0; j<sizeY; j++)
+                       for (let j=0; j<sizeY; j++)
                        {
                                if (this.board[i][j] != VariantRules.EMPTY && this.getColor(i,j) != oppCol)
                                {
                                        const moves = this.getPotentialMovesFrom([i,j]);
                                        if (moves.length > 0)
                                        {
                        {
                                if (this.board[i][j] != VariantRules.EMPTY && this.getColor(i,j) != oppCol)
                                {
                                        const moves = this.getPotentialMovesFrom([i,j]);
                                        if (moves.length > 0)
                                        {
-                                               for (let i=0; i<moves.length; i++)
+                                               for (let k=0; k<moves.length; k++)
                                                {
                                                {
-                                                       if (this.filterValid([moves[i]]).length > 0)
+                                                       if (this.filterValid([moves[k]]).length > 0)
                                                                return true;
                                                }
                                        }
                                                                return true;
                                                }
                                        }
@@ -824,7 +824,7 @@ class ChessRules
                for (let j=1; j<moves1.length && moves1[j].eval == moves1[0].eval; j++)
                        candidates.push(j);
 
                for (let j=1; j<moves1.length && moves1[j].eval == moves1[0].eval; j++)
                        candidates.push(j);
 
-               //console.log(moves1.map(m => { return [this.getNotation(m), m.eval]; }));
+//             console.log(moves1.map(m => { return [this.getNotation(m), m.eval]; }));
                return moves1[_.sample(candidates, 1)];
        }
 
                return moves1[_.sample(candidates, 1)];
        }
 
index c7e9ff1..a7acc10 100644 (file)
@@ -574,7 +574,8 @@ Vue.component('my-game', {
                        this.newGame("computer");
                },
                newGame: function(mode, fenInit, color, oppId, moves, continuation) {
                        this.newGame("computer");
                },
                newGame: function(mode, fenInit, color, oppId, moves, continuation) {
-                       //const fen = "3b1l2/ppp1p1pp/4o1r1/4N3/8/8/PPPPPPPP/RN1BBKQR 1111";//"rqbbnnkr/pppppppp/8/8/8/8/PPPPPPPP/RNNBBKQR 1111";//fenInit || VariantRules.GenRandInitFen();
+                       //const fen = "bbrkqnrn/pppppppp/8/8/8/8/PPPPPPPP/NNRKQBBR 1111";
+                       //const fen = "bbrkqnr1/pppppp1p/6o1/6s1/3SS3/8/PPP2PPP/NNRKQBBR 1111"; //first 2 moves == pb
                        const fen = fenInit || VariantRules.GenRandInitFen();
                        console.log(fen); //DEBUG
                        this.score = "*";
                        const fen = fenInit || VariantRules.GenRandInitFen();
                        console.log(fen); //DEBUG
                        this.score = "*";
@@ -635,6 +636,7 @@ Vue.component('my-game', {
                        }
                        else //against computer
                        {
                        }
                        else //against computer
                        {
+                               //this.mycolor = "w";
                                this.mycolor = Math.random() < 0.5 ? 'w' : 'b';
                                if (this.mycolor == 'b')
                                        setTimeout(this.playComputerMove, 500);
                                this.mycolor = Math.random() < 0.5 ? 'w' : 'b';
                                if (this.mycolor == 'b')
                                        setTimeout(this.playComputerMove, 500);
index d457f5f..3d79580 100644 (file)
@@ -132,6 +132,9 @@ class AliceRules extends ChessRules
                                        psq.p = VariantRules.ALICE_CODES[psq.p];
                                });
                        }
                                        psq.p = VariantRules.ALICE_CODES[psq.p];
                                });
                        }
+                       // Fix en-passant captures
+                       if (m.vanish.length == 2 && this.board[m.end.x][m.end.y] == VariantRules.EMPTY)
+                               m.vanish[1].c = this.getOppCol(this.getColor(x,y));
                        return true;
                });
        }
                        return true;
                });
        }
@@ -225,4 +228,21 @@ class AliceRules extends ChessRules
                this.board = saveBoard;
                return res;
        }
                this.board = saveBoard;
                return res;
        }
+
+       static get VALUES() {
+               return {
+                       'p': 1,
+                       's': 1,
+                       'r': 5,
+                       'u': 5,
+                       'n': 3,
+                       'o': 3,
+                       'b': 3,
+                       'c': 3,
+                       'q': 9,
+                       't': 9,
+                       'k': 1000,
+                       'l': 1000
+               };
+       }
 }
 }