Данная работа выполнялась в рамках полуфинала олимпиады DevOps на сайте траетория будущего.
В игре есть два игрокаю От их стартовых позиций можно проложить маршрут друг к другу, каждая клетка поля имеет один из 10 цветов, заданных случайным образом:
Игроки начинают игру в противоположных углах. Первый игрок начинает игру в левом нижнем углу. Второй игрок - в правом верхнем. Игроки выбирают цвет по очереди, начиная с первого игрока. Для выбора цвета разрешены те цвета, с которыми есть соприкосновения. Нельзя выбрать цвет соперника. При выборе нового цвета к пространству игрока добавляются клетки, соприкасающиеся с полем игрока, в которых указан данный цвет (т.е. при заливке цветом поле постепенно растет не менее, чем на 1 клетку).
Игра останавливается в тот момент, когда игрок не может выбрать цвет и совершить ход.
Побеждает тот игрок, у которого в момент окончания игры больше занятых клеток.
Для установки проекта сначала установите Docker:
sudo apt-get update
sudo apt-get install docker.io
sudo apt-get install docker-compose
Выполните клонирование репозитория:
git clone https://github.com/Tminww/devops-game.git
Перейдите в дирректорию проекта:
cd devops-game
Создайте необходимые файлы и дирректорию:
mkdir /backend/src/log
touch /backend/src/.env
Теперь нужно указать в файле .env путь к базе данных SQLite:
echo 'DB_PATH="<path_to_database>"' > ./backend/src/.env
Запустите docker-compose:
sudo docker-compose up -d --build
Проверить работу контейнеров можно следующей командой:
sudo docker ps -a
Если все прошло успешно, то по следующим URI будут доступны:
localhost:8000 - backend
localhost:8080 - frontend
После выполнения всех действий по установке проекта откройте браузер.
Вбейте в адресной строке localhost:8080 и перейдите на главный экран веб-приложения.
- Нажмите кнопку Играть и у вас отрисуется поле.
- Нажмите кнопку Результаты и у вас отобразятся результаты последних 10 игр
-
Документация для
backendбыла сгенерирована библиотекойlezydocsиswagger -
Модульное тестирование реализовано с помощью библиотеки
pytest -
Для backend на
Pythonиспользовался форматтерBlack -
Для frontend на
JSиспользовался форматтерPrettier -
Использалась база данных
Sqlite -
Для взаимодействия
клиента и серверабыло выбраноREST API -
Логгирование сохраняется в папке
backend/src/log