Разработать прототип игры

Задание закрыто
Статус рабочей области:Поиск исполнителя
Стоимость:Договорная
Срок выполнения:1 день
Варианты оплаты:По договоренности
Дата публикации:2024-10-08 20:03
Был(а) на сайте:2024-10-11 14:18

Разработать прототип игры

 
Задача

Необходимо разработать на js простой, но работающий прототип игры Life

Оставлять заявки могут только авторизованные пользователи.
Исполнитель по этому заданию выбран.
Serhii  Shevtsov
Специализация: Программирование и IT
  • 1 500 руб1 день
Приветствую!
РАБОТАЮ БЕЗ ПРЕДОПЛАТ!
Ознакомился с заданием и готов сделать.
Начать могу сразу как все моменты обсудим.
Оплата за результат не на перед.
Telegram – https://t.me/Sswwtv
Артур
Специализация: Программирование и IT
  • 18 000 руб10 дней
Добрый день.

А я делал игру Жизнь (Life). Причем именно на js.
Там всё работало по правилам и можно было делать изначальные комбинации этих планеров и пр.
Исходники вроде не сохранились, но я могу написать ее заново.

Телеграм flancejob

С уважением, Артур.
Станислав Гулевич
Специализация: Тексты
  • 9 000 руб1 день
// script.js

class GameOfLife {
constructor() {
this.liveCells = new Set();
this.history = [];
this.maxHistory = 100; // Максимальное количество хранимых поколений
}

// Добавление живой клетки
addLiveCell(x, y) {
this.liveCells.add(`${x},${y}`);
}

// Вычисление следующего поколения
computeNextGeneration() {
const neighborCounts = new Map();

// Подсчет соседей
this.liveCells.forEach(cell => {
const [x, y] = cell.split(',').map(Number);
for (let dx = -1; dx <= 1; dx++) {
for (let dy = -1; dy <= 1; dy++) {
if (dx === 0 && dy === 0) continue;
const neighbor = `${x + dx},${y + dy}`;
neighborCounts.set(neighbor, (neighborCounts.get(neighbor) || 0) + 1);
}
}
});

const newLiveCells = new Set();

// Определение новых живых клеток
neighborCounts.forEach((count, cell) => {
if (count === 3 || (count === 2 && this.liveCells.has(cell))) {
newLiveCells.add(cell);
}
});

return newLiveCells;
}

// Проверка, является ли текущее поколение повторением сдвигом предыдущего
isPatternRepeated(prev, current) {
const prevArray = [...prev].map(cell => cell.split(',').map(Number));
const currentArray = [...current].map(cell => cell.split(',').map(Number));

if (prevArray.length !== currentArray.length) return false;

// Вычисляем смещения по X и Y
const dx = currentArray[0][0] - prevArray[0][0];
const dy = currentArray[0][1] - prevArray[0][1];

for (let i = 0; i < prevArray.length; i++) {
const [x, y] = prevArray[i];
if (!current.has(`${x + dx},${y + dy}`)) {
return false;
}
}
return true;
}

Отправлю архив с готовым кодом и пояснениями

Оставлять заявки могут только авторизованные пользователи.