В игре "Виселица" игрок пытается угадать секретное слово по буквам. Для каждой неправильной попытки игроку показывается часть виселицы, и у него есть ограниченное количество попыток, чтобы угадать слово.
- Два режима: консольное приложение и Telegram Bot
- Поддержка различных языков (на данный момент "ru" and "en")
- Изменение количества ошибок (от 1 до 10)
Проект разработан с применением принципов из Чистой Архитектуры. И разделен на следующие слои:
- domain - основная логика игры
- application - сценарии использования приложения и интерфейсы (абстракции).
- infrastructure - реализация интерфейсов слоя application, логика работы с хранилищем (хранилище слов, данных игры).
- presentation - ввод и вывод приложения. На данном слое хранится логика отображения для консольного приложения и для бота, а также классы для расширения доступных языков.
- main - слой собирающий вместе всё приложение. Исходя из конфигурации, компонует объекты и запускает приложение.
Для проверки качества кода использовались проверки типов mypy и линтер ruff. Были написаны юнит тесты на основную логику приложения и интеграционные тесты для проверки работы с базой данных.
В проекте используется src-layout и приложение устанавливается в виртуальное окружение как пакет. Добавлены опциональные зависимости для:
- для запуска проекта в режиме бота: bot
- для запуска тестов: test
- для запуска mypy и ruff: dev
Вся конфигурация инструментов и пакета определена в файле pyproject.toml Для работы с проектом используется - pip.
Для удобного запуска были определены точки входа:
- Запуск в режиме консольного приложения
hangman-cli
- Запуск в рижиме телеграм бота
hangman-bot
- Запуск и откат миграций
hangman-migrations-up
hangman-migrations-down
Все команды доступны в консоле при активированном виртуальном окружении