Как дать логику каждому вражескому блоку? (Moving block game)
Делаю игру для портфолио, уже пару дней завис на одном моменте, сделал главный блок которым я могу управлять, и так же один вражеский блок, который передвигается рандомно по сетке (вверх, вниз, налево и направо), если вражеский блок коснется моего блока, то я проиграю, если я продержусь некоторое время, то игра станет сложнее (вражеских блоков станет больше).
Вот код который дает вражескому блоку рандомное направление.
const directions = ["y", "x", "-y", "-x"];
function randomDirection() {
return (enemyDirection =
directions[Math.floor(Math.random() * directions.length)]);
}
const enemyPosition = {
x: 0,
y: 0,
};
function enemyBlock(pos) {
if (pos === "y") {
enemyPosition.y =
enemyPosition.y < 550 ? enemyPosition.y + 50 : enemyPosition.y;
enemy.style.transform = `translateY(${enemyPosition.y}px) translateX(${enemyPosition.x}px)`;
} else if (pos === "-y") {
enemyPosition.y =
enemyPosition.y > 0 ? enemyPosition.y - 50 : enemyPosition.y;
enemy.style.transform = `translateY(${enemyPosition.y}px) translateX(${enemyPosition.x}px)`;
}
if (pos === "x") {
enemyPosition.x =
enemyPosition.x < 600 ? enemyPosition.x + 50 : enemyPosition.x;
enemy.style.transform = `translateX(${enemyPosition.x}px) translateY(${enemyPosition.y}px)`;
} else if (pos === "-x") {
enemyPosition.x =
enemyPosition.x > 0 ? enemyPosition.x - 50 : enemyPosition.x;
enemy.style.transform = `translateX(${enemyPosition.x}px) translateY(${enemyPosition.y}px)`;
}
}
Единственное решение которое приходит мне в голову, так это повторять выше приведенный код для каждого вражеского блока, то есть, если врагов будет 10, то мне придется повторить этот код 10 раз, что столько же раз нарушает правило DRY.
Вот ссылка на код в песочнице, чтобы было подробнее. https://codesandbox.io/s/tender-violet-64h7d?file=/src/script.js