From d9263e2b92b06fb97703303a0e28956dbaf48026 Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 25 Feb 2025 21:49:32 +0100 Subject: [PATCH] another cummit --- javascript/client-only-logic.js | 24 ++++-------- javascript/game-logic.js | 65 +++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 16 deletions(-) diff --git a/javascript/client-only-logic.js b/javascript/client-only-logic.js index 0cadfbf..c5552e4 100644 --- a/javascript/client-only-logic.js +++ b/javascript/client-only-logic.js @@ -76,24 +76,11 @@ function generatePieces(){ }); } -function findValidMoves(piece){ - - const x = piece.getAttribute("x"); - const y = piece.getAttribute("y"); - - const pieceRecord = getPieceRecord(x,y); - - const directionMultiplier = (pieceRecord.player == "white") ? 1 : -1; - - var validMoves = new Array(); - - //DODÄšLAT ZDE! - - return validMoves; - - +function getPieceRecordFromPiece(piece) { + return getPieceRecord(piece.getAttribute("x"), piece.getAttribute("y")); } + function resetPieceSelection() { if(selectedPiece != null){ selectedPiece.classList.remove("selected"); @@ -105,6 +92,7 @@ function pieceClickEvent(piece){ resetPieceSelection(); selectedPiece = piece; selectedPiece.classList.add("selected"); + } @@ -112,7 +100,11 @@ function pieceClickEvent(piece){ function tileClickEvent(x, y){ if(selectedPiece != null){ + + const pieceRecord = getPieceRecordFromPiece(selectedPiece); movePiece(selectedPiece, x, y) + + alert(isMoveValid(pieceRecord, x,y)) resetPieceSelection(); } } diff --git a/javascript/game-logic.js b/javascript/game-logic.js index 1d5c55b..a7d83a9 100644 --- a/javascript/game-logic.js +++ b/javascript/game-logic.js @@ -44,4 +44,69 @@ function updatePieceRecord(pieceRecord) { pieceList[index] = pieceRecord; } +function updatePieceRecordPosition(pieceRecord, x, y) { + pieceRecord.x = x; + pieceRecord.y = y; + updatePieceRecord(pieceRecord); +} + +function isMoveValid(pieceRecord, x, y){ + + + if(0 > y > 7 || 0 > x > 7){ + return false; + } + + if (getPieceRecord(x,y)) { + return false; + } + + const currentX = pieceRecord.x; + const currentY = pieceRecord.y; + + if (Math.abs(y - currentY) != Math.abs(x - currentX)) { + return false; + } + + const player = pieceRecord.player; + const type = pieceRecord.type; + + //Check correct Y direction if piece is basic + if (currentY > y && player == "white" && type == "basic") { + return false; + } + + + const directionY = (y > currentY) ? 1 : -1; + const directionX = (x > currentX) ? 1 : -1; + + space = 0; + piecesInWay = 0; + + for (let i = 1; i < (Math.abs(y-currentY)+1); i++) { + + const nowX = currentX + (i*directionX); + const nowY = currentY + (i*directionY); + + if (getPieceRecord(nowX, nowY)) { + space = 0; + piecesInWay++; + }else{ + space++; + piecesInWay = 0; + } + + if(piecesInWay > 1){ + return false; + } + + if (space > 1 && type == "basic") { + return false; + } + } + + return true; + +} + generateDefaultPositions(); \ No newline at end of file