Skip to content

ApostolFet/HangManGame

Repository files navigation

HangMan Logo

HangManGame

Checked with mypy Linting: Ruff

В игре "Виселица" игрок пытается угадать секретное слово по буквам. Для каждой неправильной попытки игроку показывается часть виселицы, и у него есть ограниченное количество попыток, чтобы угадать слово.

Дополнительные функции

  • Два режима: консольное приложение и 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.

Для удобного запуска были определены точки входа:

  1. Запуск в режиме консольного приложения
hangman-cli
  1. Запуск в рижиме телеграм бота
hangman-bot
  1. Запуск и откат миграций
hangman-migrations-up
hangman-migrations-down

Все команды доступны в консоле при активированном виртуальном окружении

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages