76 lines
2.8 KiB
JavaScript
76 lines
2.8 KiB
JavaScript
const { colors } = require('./constants');
|
|
function getStartPositions() {
|
|
const startPositions = [];
|
|
for (let i = 0; i < 16; i++) {
|
|
let pawn = {};
|
|
pawn.basePos = i;
|
|
pawn.position = i;
|
|
if (i < 4) pawn.color = colors[0];
|
|
else if (i < 8) pawn.color = colors[1];
|
|
else if (i < 12) pawn.color = colors[2];
|
|
else if (i < 16) pawn.color = colors[3];
|
|
startPositions.push(pawn);
|
|
}
|
|
return startPositions;
|
|
}
|
|
function getPawnPositionAfterMove(rolledNumber, pawn) {
|
|
const { position, color } = pawn;
|
|
switch (color) {
|
|
case 'red':
|
|
if (pawn.position + rolledNumber <= 73) {
|
|
if (position >= 0 && position <= 3) {
|
|
return 16;
|
|
} else if (position <= 66 && position + rolledNumber >= 67) {
|
|
return position + rolledNumber + 1;
|
|
} else {
|
|
return position + rolledNumber;
|
|
}
|
|
} else {
|
|
return position;
|
|
}
|
|
case 'blue':
|
|
if (pawn.position + rolledNumber <= 79) {
|
|
if (position >= 4 && position <= 7) {
|
|
return 55;
|
|
} else if (position <= 67 && position + rolledNumber > 67) {
|
|
return position + rolledNumber - 52;
|
|
} else if (position <= 53 && position + rolledNumber >= 54) {
|
|
return position + rolledNumber + 20;
|
|
} else {
|
|
return position + rolledNumber;
|
|
}
|
|
} else {
|
|
return position;
|
|
}
|
|
case 'green':
|
|
if (pawn.position + rolledNumber <= 85) {
|
|
if (position >= 8 && position <= 11) {
|
|
return 42;
|
|
} else if (position <= 67 && position + rolledNumber > 67) {
|
|
return position + rolledNumber - 52;
|
|
} else if (position <= 40 && position + rolledNumber >= 41) {
|
|
return position + rolledNumber + 39;
|
|
} else {
|
|
return position + rolledNumber;
|
|
}
|
|
} else {
|
|
return position;
|
|
}
|
|
case 'yellow':
|
|
if (pawn.position + rolledNumber <= 85) {
|
|
if (position >= 12 && position <= 15) {
|
|
return 29;
|
|
} else if (position <= 67 && position + rolledNumber > 67) {
|
|
return position + rolledNumber - 52;
|
|
} else if (position <= 27 && position + rolledNumber >= 28) {
|
|
return position + rolledNumber + 58;
|
|
} else {
|
|
return position + rolledNumber;
|
|
}
|
|
} else {
|
|
return position;
|
|
}
|
|
}
|
|
}
|
|
module.exports = { getStartPositions, getPawnPositionAfterMove };
|