|
|
|
|
@ -54,6 +54,7 @@ function updatePieceRecordPosition(pieceRecord, x, y) { |
|
|
|
|
pieceRecord.x = x; |
|
|
|
|
pieceRecord.y = y; |
|
|
|
|
updatePieceRecord(pieceRecord); |
|
|
|
|
return pieceRecord; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function isMoveValid(pieceRecord, x, y){ |
|
|
|
|
@ -94,7 +95,12 @@ function isMoveValid(pieceRecord, x, y){ |
|
|
|
|
const nowX = currentX + (i*directionX); |
|
|
|
|
const nowY = currentY + (i*directionY); |
|
|
|
|
|
|
|
|
|
if (getPieceRecord(nowX, nowY)) { |
|
|
|
|
if (inWayPieceRecord = getPieceRecord(nowX, nowY)) { |
|
|
|
|
|
|
|
|
|
if(inWayPieceRecord.player == player){ |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
space = 0; |
|
|
|
|
piecesInWay++; |
|
|
|
|
}else{ |
|
|
|
|
@ -128,7 +134,7 @@ function getCasualties(oldX, oldY, newX, newY) { |
|
|
|
|
pieceRecord = getPieceRecord(x,y); |
|
|
|
|
|
|
|
|
|
if (pieceRecord) { |
|
|
|
|
casualties.put(pieceRecord); |
|
|
|
|
casualties.push(pieceRecord); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -136,17 +142,19 @@ function getCasualties(oldX, oldY, newX, newY) { |
|
|
|
|
return casualties; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function canContinue(pieceRecord){ |
|
|
|
|
function continuable(pieceRecord){ |
|
|
|
|
const x = pieceRecord.x; |
|
|
|
|
const y = pieceRecord.y; |
|
|
|
|
const player = pieceRecord.player; |
|
|
|
|
const type = pieceRecord.type; |
|
|
|
|
|
|
|
|
|
if((type == "queen" || player == "white") && (getCasualties(x+1, y+1, x+2, y+2).count() == 1 || getCasualties(x-1, y+1, x-2, y+2).count() == 1)){ |
|
|
|
|
if((type == "queen" || player == "white") && ((getPieceRecord(x+1, y+1) && !getPieceRecord(x+2, y+2) && (y+2) < 8 && (x+2) < 8) || ((getPieceRecord(x-1, y+1) && !getPieceRecord(x-2, y+2) && (y+2) < 8 && (x-2) > 0)))){ |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if((type == "queen" || player == "black") && (getCasualties(x+1, y-1, x+2, y-2).count() == 1 || getCasualties(x-1, y-1, x-2, y-2).count() == 1)){ |
|
|
|
|
if((type == "queen" || player == "black") && ((getPieceRecord(x+1, y-1) && !getPieceRecord(x+2, y-2) && (y-2) > 0 && (x+2) < 8) || ((getPieceRecord(x-1, y-1) && !getPieceRecord(x-2, y-2) && (y-2) > 0 && (x-2) > 0)))){ |
|
|
|
|
alert("bun"); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -160,13 +168,24 @@ function swapPlayers() { |
|
|
|
|
function makeMove(pieceRecord, x, y){ |
|
|
|
|
|
|
|
|
|
if (!isMoveValid(pieceRecord, x, y)) { |
|
|
|
|
return false; |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const oldX = pieceRecord.x; |
|
|
|
|
const oldY = pieceRecord.y; |
|
|
|
|
|
|
|
|
|
const casualties = getCasualties(oldX, oldY, x, y); |
|
|
|
|
|
|
|
|
|
const casualties = getCasualties(); |
|
|
|
|
|
|
|
|
|
while (condition) { |
|
|
|
|
|
|
|
|
|
casualties.forEach(casualty => { |
|
|
|
|
nukePieceRecord(casualty); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const updatedPieceRecord = updatePieceRecordPosition(pieceRecord, x, y); |
|
|
|
|
|
|
|
|
|
if (continuable(updatedPieceRecord)) { |
|
|
|
|
return 2; |
|
|
|
|
} |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
generateDefaultPositions(); |