From d2009805f6d8f5d601dca0114b52c086cafabf34 Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 28 Feb 2025 12:50:15 +0100 Subject: [PATCH] d --- javascript/client-only-logic.js | 8 ++--- javascript/game-logic.js | 58 +++++++++++++++++++++++++-------- 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/javascript/client-only-logic.js b/javascript/client-only-logic.js index c7567f2..375673c 100644 --- a/javascript/client-only-logic.js +++ b/javascript/client-only-logic.js @@ -89,16 +89,16 @@ function updatePieces() { pieceList.forEach(pieceRecord => { const piece = document.getElementById("piece" + pieceRecord.id); - //const classList = piece.classList; + const classList = piece.classList; - piece.classList.remove("basic"); - piece.classList.remove("queen"); + classList.remove("basic"); + classList.remove("queen"); console.log(pieceRecord.type); - piece.classList.add(pieceRecord.type); + classList.add(pieceRecord.type); diff --git a/javascript/game-logic.js b/javascript/game-logic.js index e5df700..20f3694 100644 --- a/javascript/game-logic.js +++ b/javascript/game-logic.js @@ -37,6 +37,9 @@ function generateDefaultPositions(){ } function getPieceRecord(x,y){ + if (x > 7 || x < 0 || y > 7 || y < 0) { + return false; + } return pieceList.find(pieceRecord => pieceRecord.x == x && pieceRecord.y == y); } @@ -141,23 +144,54 @@ function getCasualties(oldX, oldY, newX, newY) { } return casualties; } +function continuableInDirectionForQueen(directionX, directionY, pieceRecord) { + const pieceX = pieceRecord.x; + const pieceY = pieceRecord.y; + const player = pieceRecord.player; + + for (let i = 1; i < 8; i++) { + const x = pieceX + (i*directionX); + const y = pieceY + (i*directionY); + + if(x > 7 || x < 0 || y > 7 || y < 0 || (x+directionX) > 7 || (x+directionX) < 0 || (y+directionY) > 7 || (y+directionY) < 0 ){ + return false; + } + + const record = getPieceRecord(x, y); + if (record) { + if (record.player == player || getPieceRecord(x,y)) { + + } + + } + + } +} function continuable(pieceRecord){ const x = pieceRecord.x; const y = pieceRecord.y; const player = pieceRecord.player; const type = pieceRecord.type; - if((type == "queen" || player == "white") && ((getPieceRecord(x+1, y+1) && getPieceRecord(x+1, y+1).player != player && !getPieceRecord(x+2, y+2) && (y+2) < 8 && (x+2) < 8) || ((getPieceRecord(x-1, y+1) && getPieceRecord(x-1, y+1).player != player && !getPieceRecord(x-2, y+2) && (y+2) < 8 && (x-2) > 0)))){ + if(player == "white" && ((getPieceRecord(x+1, y+1) && getPieceRecord(x+1, y+1).player != player && !getPieceRecord(x+2, y+2) && (y+2) < 8 && (x+2) < 8) || ((getPieceRecord(x-1, y+1) && getPieceRecord(x-1, y+1).player != player && !getPieceRecord(x-2, y+2) && (y+2) < 8 && (x-2) > 0)))){ return true; } - if((type == "queen" || player == "black") && ((getPieceRecord(x+1, y-1) && getPieceRecord(x+1, y-1).player != player && !getPieceRecord(x+2, y-2) && (y-2) > 0 && (x+2) < 8) || ((getPieceRecord(x-1, y-1) && getPieceRecord(x-1, y-1).player != player && !getPieceRecord(x-2, y-2) && (y-2) > 0 && (x-2) > 0)))){ + if( player == "black" && ((getPieceRecord(x+1, y-1) && getPieceRecord(x+1, y-1).player != player && !getPieceRecord(x+2, y-2) && (y-2) > 0 && (x+2) < 8) || ((getPieceRecord(x-1, y-1) && getPieceRecord(x-1, y-1).player != player && !getPieceRecord(x-2, y-2) && (y-2) > 0 && (x-2) > 0)))){ return true; } + if(type == "queen"){ + for (let i = 1; i < 9; i++) { + nowX = x + i; + nowY = y + i; + + } + } + return false; } @@ -174,22 +208,13 @@ function getOportunities(pieceRecord){ return opportunities; } -function upgradeToQueenIfEligible(pieceRecord) { - const player = pieceRecord.player; - const type = pieceRecord.type; - const y = pieceRecord.y; - if ((player == "white" && y == 7) || (player == "black" && y == 0) && type == "basic") { - alert("QQQUUUUEEEEEn"); - pieceRecord.type == "queen"; - updatePieceRecord(pieceRecord); - } -} function swapPlayers() { currentPlayer = (currentPlayer == "white") ? "black" : "white"; } function makeMove(pieceRecord, x, y){ + const player = pieceRecord.player; if (!isMoveValid(pieceRecord, x, y)) { return 0; @@ -208,13 +233,20 @@ function makeMove(pieceRecord, x, y){ if (casualties.length == 0 && getOportunities(pieceRecord).length != 0) { //POTŘREBA DODĚLAT SBÍRÁNÍ DÍLKŮ ZA NESKÁKÁNÍ } + + if ((player == "white" && y == 7) || (player == "black" && y == 0) && pieceRecord.type == "basic") { + + pieceRecord.type = "queen"; + + } + const updatedPieceRecord = updatePieceRecordPosition(pieceRecord, x, y); if (continuable(updatedPieceRecord) && casualties.length > 0) { return 2; } - upgradeToQueenIfEligible(pieceRecord); + return 1; } generateDefaultPositions(); \ No newline at end of file