From 5ef202d1b52dc6a216e6a50153c4d97eb853d950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Sun, 10 Jan 2021 19:19:29 +0200 Subject: [PATCH] Allow piece to move onto its own square and capture itself --- takhta.html | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/takhta.html b/takhta.html index 3943642..2e41f80 100644 --- a/takhta.html +++ b/takhta.html @@ -390,11 +390,6 @@ renderedPromotion = whiteMove ? whitePieces[promotion] : blackPieces[promotion]; } - // Are we moving the piece onto itself? - if (startLetter === endLetter && startNumber === endNumber) { - return {error: 'Start and end squares of the move cannot be identical'}; - } - // Are we moving the piece from where it is located? let startSquare = document.getElementById(startLetter + startNumber); if (startSquare.childNodes.length === 0) { @@ -409,7 +404,7 @@ // Can the piece move to this location? let endSquare = document.getElementById(endLetter + endNumber); - if (endSquare.childNodes.length !== 0 && !captures) { + if (endSquare.childNodes.length !== 0 && !captures && startSquare !== endSquare) { return {error: 'Square ' + endLetter + endNumber + ' is occupied, did you mean to capture?'}; } if (endSquare.childNodes.length === 0 && captures) { @@ -423,10 +418,12 @@ removedPieces[endLetter + endNumber] = endSquare.childNodes[0].data; endSquare.removeChild(endSquare.childNodes[0]); } - removedPieces[startLetter + startNumber] = renderedPiece; - startSquare.removeChild(startSquare.childNodes[0]); - placedPieces[endLetter + endNumber] = promotion ? renderedPromotion : renderedPiece; - endSquare.appendChild(document.createTextNode(promotion ? renderedPromotion : renderedPiece)) + if (startSquare !== endSquare || !captures) { + removedPieces[startLetter + startNumber] = renderedPiece; + startSquare.removeChild(startSquare.childNodes[0]); + placedPieces[endLetter + endNumber] = promotion ? renderedPromotion : renderedPiece; + endSquare.appendChild(document.createTextNode(promotion ? renderedPromotion : renderedPiece)) + } // Flip whose turn it is document.getElementById('tomove').childNodes[0].data = whiteMove ? 'Black' : 'White';