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