|
|
|
|
@ -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(); |