# Minesweeper Unity Test Task

Тестовое задание: клон классической игры «Сапёр», реализованный в Unity.

## Описание

Проект представляет собой простую реализацию Minesweeper в одной Unity-сцене. Внешний вид не является приоритетом; основной фокус сделан на игровой логике и выполнении функциональных требований.

## Технологии

- Unity
- C#
- VContainer
- DOTS ECS

## Функциональность

- Главное меню с кнопкой `Start`.
- Игровое поле с настраиваемым размером и количеством мин.
- Первый клик по клетке всегда безопасный.
- Управление мышью:
  - левая кнопка мыши открывает клетку;
  - правая кнопка мыши ставит или снимает флажок.
- Автоматическое раскрытие пустых областей:
  - при открытии клетки без мин рядом раскрываются соседние пустые клетки;
  - также раскрываются их соседи.
- Таймер игры:
  - запускается после открытия первой клетки;
  - останавливается при завершении игры.
- Пауза во время игры.
- Окно паузы с кнопками:
  - `Restart`;
  - `Continue`;
  - `Main Menu`.
- Завершение игры при победе или поражении.
- Экран окончания игры с текстом результата и кнопками:
  - `Restart`;
  - `Main Menu`.
- Возможность начать игру заново в любой момент по нажатию клавиши.
- Перезапуск по клавише также работает после победы или поражения.

## Настройка игры

Размер поля и количество мин задаются через значения в конфигурации или инспекторе Unity.

Интерфейс для изменения этих параметров не обязателен.

## Требования к разработке

- Перед началом работы обязательно прочитать этот `README.md`.
- При реализации соблюдать требования из этого файла.
- Использовать `VContainer` для организации зависимостей.
- Использовать `DOTS ECS` для игровой логики, где это применимо.
- Вся игра должна быть реализована в одной сцене.

## Требования к проекту

- Проект должен открываться напрямую через Unity.
- Проект должен быть готов к загрузке на GitHub или передаче архивом.

## Как запустить

1. Открыть проект в Unity.
2. Дождаться импорта ассетов.
3. Открыть основную сцену проекта.
4. Нажать `Play` в Unity Editor.
5. В главном меню нажать кнопку `Start`.

## Управление

| Действие | Управление |
| --- | --- |
| Открыть клетку | Левая кнопка мыши |
| Поставить или снять флажок | Правая кнопка мыши |
| Начать заново | Клавиша перезапуска |
| Пауза | Кнопка паузы на игровом экране |

## Условия победы и поражения

Игрок проигрывает, если открывает клетку с миной.

Игрок выигрывает, если открыты все клетки, не содержащие мины.

## Примечания

Алгоритм расстановки мин упрощенный. Главное условие: первая открытая клетка никогда не содержит мину.
