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 => {
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);

@ -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();
Loading…
Cancel
Save