/* W = Player one basic piece V = Player one queen piece B = Player two basic piece P = Player two queen piece */ var pieceList = new Array(); function generateDefaultPositions(){ var id = 0; for (let i = 0; i < 8; i++) { for (let j = 0; j < 3; j++) { if((i+j) % 2 == 0){ pieceRecord = {id:id, x:i, y:j, player:"white", type:"basic"}; pieceList.push(pieceRecord); id++; } } } for (let i = 0; i < 8; i++) { for (let j = 5; j < 8; j++) { if((i+j) % 2 == 0){ pieceRecord = {id:id, x:i, y:j, player:"black", type:"basic"}; pieceList.push(pieceRecord); id++; } } } } function getPieceRecord(x,y){ return pieceList.find(pieceRecord => pieceRecord.x == x && pieceRecord.y == y); } function nukePieceRecord(pieceRecord) { const index = pieceList.findIndex(record => record.id == pieceRecord.id); pieceList.splice(index, 1); } function updatePieceRecord(pieceRecord) { const index = pieceList.findIndex(record => record.id == pieceRecord.id); 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; } function getCasualties(oldX, oldY, newX, newY) { const directionX = (newX > oldX) ? 1 : -1; const directionY = (newY > oldY) ? 1 : -1; const casualties = new Array(); for (let i = 1; i < (Math.abs(newY - oldY) + 1); i++) { const x = oldX + (i*directionX); const y = oldY + (i*directionY); pieceRecord = getPieceRecord(x,y); if (pieceRecord) { casualties.put(pieceRecord); } } return casualties; } generateDefaultPositions();