Храните только занятые клетки по координатам, а отображайте видимую область. После хода проверяйте четыре направления через новую клетку; сохраняйте позиции, очередь хода и статус игры.
Создание бесконечного поля для игры в крестики‑нолики
Храните только занятые клетки по координатам, а отображайте видимую область. После хода проверяйте четыре направления через новую клетку; сохраняйте позиции, очередь хода и статус игры.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создать клиентское веб‑приложение (без серверной части) реализации крестиков‑ноликов на неограниченном поле, где:
- Победа фиксируется, когда на любой линии подряд появляется заданное количество одинаковых символов (значение задаётся константой).
- Первый ход обязателен в клетку с координатами (0, 0).
- Состояние игры должно сохраняться между перезагрузками страницы (например, используя localStorage).
Ответ
Храните только занятые клетки по координатам, а отображайте видимую область. После хода проверяйте четыре направления через новую клетку; сохраняйте позиции, очередь хода и статус игры.
Ключ клетки — строка x,y; первый ход разрешён только в 0,0. Для направлений (1,0), (0,1), (1,1), (1,−1) считайте одинаковые символы в обе стороны плюс текущую клетку: сумма не меньше константы означает победу. Занятую клетку и ход после завершения отклоняйте. При восстановлении localStorage валидируйте структуру, координаты и версию данных. Панорамирование и виртуализация позволяют не создавать бесконечное число DOM-элементов.