From: Benjamin Auder Date: Fri, 23 Nov 2018 15:24:54 +0000 (+0100) Subject: Attempt to fix Alice chess X-Git-Url: https://git.auder.net/doc/html/%7B%7B%20asset%28%27mixstore/css/static/home.css%27%29%20%7D%7D?a=commitdiff_plain;h=0b5fa571c10c5d5befc81b3984ead9b4b1a3e14e;p=vchess.git Attempt to fix Alice chess --- diff --git a/public/javascripts/components/game.js b/public/javascripts/components/game.js index 397ba521..c7e9ff18 100644 --- a/public/javascripts/components/game.js +++ b/public/javascripts/components/game.js @@ -574,6 +574,7 @@ Vue.component('my-game', { 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 = fenInit || VariantRules.GenRandInitFen(); console.log(fen); //DEBUG this.score = "*"; diff --git a/public/javascripts/variants/Alice.js b/public/javascripts/variants/Alice.js index 4d105069..d457f5f5 100644 --- a/public/javascripts/variants/Alice.js +++ b/public/javascripts/variants/Alice.js @@ -28,6 +28,38 @@ class AliceRules extends ChessRules return (Object.keys(this.ALICE_PIECES).includes(b[1]) ? "Alice/" : "") + b; } + initVariables(fen) + { + super.initVariables(fen); + const fenParts = fen.split(" "); + const position = fenParts[0].split("/"); + if (this.kingPos["w"][0] < 0 || this.kingPos["b"][0] < 0) + { + // INIT_COL_XXX won't be used, so no need to set them for Alice kings + for (let i=0; i Should be OK as is. getPotentialMovesFrom([x,y]) @@ -93,8 +126,12 @@ class AliceRules extends ChessRules psq.p = VariantRules.ALICE_CODES[psq.p]; //goto board2 }); } - else //move on board2: mark vanishing piece as Alice - m.vanish[0].p = VariantRules.ALICE_CODES[m.vanish[0].p] + else //move on board2: mark vanishing pieces as Alice + { + m.vanish.forEach(psq => { + psq.p = VariantRules.ALICE_CODES[psq.p]; + }); + } return true; }); } @@ -127,6 +164,28 @@ class AliceRules extends ChessRules return res; } + updateVariables(move) + { + super.updateVariables(move); //standard king + const piece = this.getPiece(move.start.x,move.start.y); + const c = this.getColor(move.start.x,move.start.y); + // "l" = Alice king + if (piece == "l") + { + this.kingPos[c][0] = move.appear[0].x; + this.kingPos[c][1] = move.appear[0].y; + this.castleFlags[c] = [false,false]; + } + } + + unupdateVariables(move) + { + super.unupdateVariables(move); + const c = this.getColor(move.start.x,move.start.y); + if (this.getPiece(move.start.x,move.start.y) == "l") + this.kingPos[c] = [move.start.x, move.start.y]; + } + getNotation(move) { if (move.appear.length == 2 && move.appear[0].p == VariantRules.KING)