jakub 10 months ago
parent e56eb455c9
commit d2009805f6
  1. 8
      javascript/client-only-logic.js
  2. 58
      javascript/game-logic.js

@ -89,16 +89,16 @@ function updatePieces() {
pieceList.forEach(pieceRecord => { pieceList.forEach(pieceRecord => {
const piece = document.getElementById("piece" + pieceRecord.id); const piece = document.getElementById("piece" + pieceRecord.id);
//const classList = piece.classList; const classList = piece.classList;
piece.classList.remove("basic"); classList.remove("basic");
piece.classList.remove("queen"); classList.remove("queen");
console.log(pieceRecord.type); console.log(pieceRecord.type);
piece.classList.add(pieceRecord.type); classList.add(pieceRecord.type);

@ -37,6 +37,9 @@ function generateDefaultPositions(){
} }
function getPieceRecord(x,y){ 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); return pieceList.find(pieceRecord => pieceRecord.x == x && pieceRecord.y == y);
} }
@ -141,23 +144,54 @@ function getCasualties(oldX, oldY, newX, newY) {
} }
return casualties; 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){ function continuable(pieceRecord){
const x = pieceRecord.x; const x = pieceRecord.x;
const y = pieceRecord.y; const y = pieceRecord.y;
const player = pieceRecord.player; const player = pieceRecord.player;
const type = pieceRecord.type; 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; 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; return true;
} }
if(type == "queen"){
for (let i = 1; i < 9; i++) {
nowX = x + i;
nowY = y + i;
}
}
return false; return false;
} }
@ -174,22 +208,13 @@ function getOportunities(pieceRecord){
return opportunities; 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() { function swapPlayers() {
currentPlayer = (currentPlayer == "white") ? "black" : "white"; currentPlayer = (currentPlayer == "white") ? "black" : "white";
} }
function makeMove(pieceRecord, x, y){ function makeMove(pieceRecord, x, y){
const player = pieceRecord.player;
if (!isMoveValid(pieceRecord, x, y)) { if (!isMoveValid(pieceRecord, x, y)) {
return 0; return 0;
@ -208,13 +233,20 @@ function makeMove(pieceRecord, x, y){
if (casualties.length == 0 && getOportunities(pieceRecord).length != 0) { if (casualties.length == 0 && getOportunities(pieceRecord).length != 0) {
//POTŘREBA DODĚLAT SBÍRÁNÍ DÍLKŮ ZA NESKÁKÁNÍ //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); const updatedPieceRecord = updatePieceRecordPosition(pieceRecord, x, y);
if (continuable(updatedPieceRecord) && casualties.length > 0) { if (continuable(updatedPieceRecord) && casualties.length > 0) {
return 2; return 2;
} }
upgradeToQueenIfEligible(pieceRecord);
return 1; return 1;
} }
generateDefaultPositions(); generateDefaultPositions();
Loading…
Cancel
Save