Примечание автора: данное программное решение разработан в качестве тестового задания в ходе собеседования в Lesta Games LLC. Права на используемые изображения пренадлежат Lesta Games LLC.
Задача в своей сути, являлась ничем иным как разработка аналога игры "Шахматы", но в сеттинге кораблей и с немного упрощенными правилами:
- Всего 3 типа фигур, но с возможностью дальнейшего расширения "Ангара".
- Механика стрельбы, вместо классической для шахмат "атаки в лоб".
- Препятствия, которые фигуры могут огибать вокруг.
- Установите зависимости. Хоть в проекте и используется Poetry как менеджер зависимостей, для удобства все зависимости также продублированы в requirements.txt.
Для установки через pip:
pip install -r requirements.txtДля установки через poetry:
poetry shell
poetry install- Запустите скрипт (через виртуальную среду или из системного интерпретатора):
python main.pyЗадание выдалось интересным. Обычно, в качестве тестового задания нужно написать web-сервер, telegram-бота, взломать пентагон (нужное подчеркнуть), что зачастую не имеет ничего общего с реальными задачами. Здесь же, напротив, интересная задача, которая заставит подумать, как грамотно:
- Выстроить наследование.
- Построить граф зависимостей.
- Разделить ответственность между сущностями (хоть в классе game.Game у меня и не особо получилось 😅).
Несколько раз переосмыслил весь процесс. Даже идея с радарами (которая так удачно вписалась в логику "поиска" противников) пришла лишь в последний момент. Пришлось немного вспомнить математику (привет формула расстояния двух точек 😥).
Задание интересное, а главное - заставляет подумать в дебаггере пару десятков минут, отлаживая в очередной раз неправильно реализованную логику.
Может, выполнено оно не самым изящным образом, но было интересно попробовать свои силы и знания в таком ключе.