From: Benjamin Auder Date: Tue, 3 Mar 2020 14:56:42 +0000 (+0100) Subject: Fix some variants and improve a few other things a little bit X-Git-Url: https://git.auder.net/img/scripts/%7B%7B%20asset%28%27mixstore/doc/html/index.html?a=commitdiff_plain;h=4404e58c0a30105472942367dce894223b05c7fe;p=vchess.git Fix some variants and improve a few other things a little bit --- diff --git a/client/src/components/ComputerGame.vue b/client/src/components/ComputerGame.vue index aee1f70e..9699c5a8 100644 --- a/client/src/components/ComputerGame.vue +++ b/client/src/components/ComputerGame.vue @@ -38,7 +38,8 @@ export default { this.compWorker.onmessage = e => { let compMove = e.data; // Small delay for the bot to appear "more human" - const delay = Math.max(500 - (Date.now() - this.timeStart), 0); + const minDelay = this.gameInfo.mode == "versus" ? 500 : 1000; + const delay = Math.max(minDelay - (Date.now() - this.timeStart), 0); let self = this; setTimeout(() => { if (this.currentUrl != document.location.href) return; //page change diff --git a/client/src/components/ContactForm.vue b/client/src/components/ContactForm.vue index cadbf73d..f9c5c60b 100644 --- a/client/src/components/ContactForm.vue +++ b/client/src/components/ContactForm.vue @@ -12,7 +12,7 @@ div label.modal-close(for="modalContact") fieldset label(for="userEmail") {{ st.tr["Email"] }} - input#userEmail(type="email") + input#userEmail(type="email" :value="st.user.email") fieldset label(for="mailSubject") {{ st.tr["Subject"] }} input#mailSubject(type="text") diff --git a/client/src/variants/Allmate.js b/client/src/variants/Allmate.js index 5636f568..728de25f 100644 --- a/client/src/variants/Allmate.js +++ b/client/src/variants/Allmate.js @@ -5,10 +5,6 @@ export const VariantRules = class AllmateRules extends ChessRules { return false; } - canTake(sq1, sq2) { - return false; //Captures handled differently - } - getCheckSquares() { // No notion of check return []; @@ -20,6 +16,10 @@ export const VariantRules = class AllmateRules extends ChessRules { getPotentialMovesFrom([x, y]) { let moves = super.getPotentialMovesFrom([x, y]); + // Remove standard captures (without removing castling): + moves = moves.filter(m => { + return m.vanish.length == 1 || m.appear.length == 2; + }); // Augment moves with "mate-captures": // TODO: this is coded in a highly inefficient way... diff --git a/client/src/variants/Baroque.js b/client/src/variants/Baroque.js index 8f1f9ba0..ae4b511f 100644 --- a/client/src/variants/Baroque.js +++ b/client/src/variants/Baroque.js @@ -72,7 +72,7 @@ export const VariantRules = class BaroqueRules extends ChessRules { ) { const oppPiece = this.getPiece(i, j); if (oppPiece == V.IMMOBILIZER) { - // Moving is impossible only if this immobilizer is not neutralized + // Moving is possible only if this immobilizer is neutralized for (let step2 of adjacentSteps) { const [i2, j2] = [i + step2[0], j + step2[1]]; if (i2 == x && j2 == y) continue; //skip initial piece! @@ -474,8 +474,8 @@ export const VariantRules = class BaroqueRules extends ChessRules { } isAttackedByBishop([x, y], colors) { - // We cheat a little here: since this function is used exclusively for king, - // it's enough to check the immediate surrounding of the square. + // We cheat a little here: since this function is used exclusively for + // the king, it's enough to check the immediate surrounding of the square. const adjacentSteps = V.steps[V.ROOK].concat(V.steps[V.BISHOP]); for (let step of adjacentSteps) { const [i, j] = [x + step[0], y + step[1]]; @@ -512,6 +512,23 @@ export const VariantRules = class BaroqueRules extends ChessRules { return false; } + isAttackedByKing([x, y], colors) { + const steps = V.steps[V.ROOK].concat(V.steps[V.BISHOP]); + for (let step of steps) { + let rx = x + step[0], + ry = y + step[1]; + if ( + V.OnBoard(rx, ry) && + this.getPiece(rx, ry) === V.KING && + colors.includes(this.getColor(rx, ry)) && + !this.isImmobilized([rx, ry]) + ) { + return true; + } + } + return false; + } + static get VALUES() { return { p: 1, diff --git a/client/src/variants/Knightrelay.js b/client/src/variants/Knightrelay.js index eebb0f22..de1e89ab 100644 --- a/client/src/variants/Knightrelay.js +++ b/client/src/variants/Knightrelay.js @@ -29,7 +29,7 @@ export const VariantRules = class KnightrelayRules extends ChessRules { // Potential promotions: const finalPieces = piece == V.PAWN && x + step[0] == lastRank ? [V.ROOK, V.KNIGHT, V.BISHOP, V.QUEEN] - : [V.PAWN]; + : [piece]; for (let p of finalPieces) { moves.push( this.getBasicMove([x,y], [x+step[0],y+step[1]], {