Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
# BattleStudy - Telegram Bot для поединков по теории вероятностей ## Описание проекта BattleStudy - это Telegram-бот для проведения интеллектуальных поединков по теории вероятностей. Игроки могут соревноваться друг с другом, решая задачи различной сложности и зарабатывая рейтинговые очки. ## Основные возможности ### 🎮 Игровой процесс - Поединки 1 на 1 : Игроки соревнуются в решении задач по теории вероятностей - Три уровня сложности : Easy, Medium, Hard с разными временными лимитами и рейтинговыми наградами - Система очередей : Автоматический поиск соперников по выбранному уровню сложности - Реванш : Возможность повторного поединка с тем же соперником ### 📊 Рейтинговая система - Динамический рейтинг : Очки начисляются за победы и снимаются за поражения - Дифференцированные награды : - Easy: +10 за победу, -5 за поражение - Medium: +25 за победу, -15 за поражение - Hard: +50 за победу, -35 за поражение - Статистика побед : Отдельный подсчет побед по каждому уровню сложности ### ⏱️ Временные ограничения - Easy: 1 минута на ответ - Medium: 3 минуты на ответ - Hard: 5 минут на ответ ### 🏆 Дополнительные функции - Профиль игрока : Просмотр статистики игрока - Турнирная таблица : Рейтинг лучших игроков - Как играть : Инструкции по игре - Умная система вопросов : Исключение уже показанных задач для предотвращения повторов ## Технические особенности ### Структура проекта ``` BattleStudy/ ├── handlers/ # Обработчики команд и сообщений │ ├── common.py # Общие команды (/start, профиль, очереди) │ ├── match.py # Логика проведения матчей │ └── rematch.py # Система реванша ├── models/ # Модели данных │ ├── player.py # Модель игрока │ └── match.py # Модель матча ├── database/ # Работа с базой данных │ ├── models.py # ORM модели SQLAlchemy │ ├── connection.py # Подключение к БД │ └── repository.py # Репозиторий для работы с данными ├── questions.json # База вопросов по уровням сложности ├── config.py # Конфигурация приложения └── main.py # Точка входа в приложение ``` ## База вопросов Вопросы хранятся в файле questions.json и организованы по уровням сложности: - Easy : Базовые задачи на простые вероятности - Medium : Задачи средней сложности с комбинаторикой - Hard : Сложные задачи с условными вероятностями Каждый вопрос содержит: - Уникальный ID - Текст задачи - Правильный ответ ## Особенности реализации ### Система матчей - Фабрика матчей : MatchFactory для создания и управления играми - Активные матчи : Хранение состояния игр в памяти - Таймауты : Автоматическое завершение матчей по истечении времени - Валидация ответов : Гибкая система проверки правильности ответов ### Управление очередями - Автоматический поиск : Мгновенное создание матча при наличии соперника - Уровневые очереди : Отдельные очереди для каждого уровня сложности ### База данных - Модель Player : Хранение рейтинга и статистики игроков - Модель UserQuestion : Отслеживание решенных задач для предотвращения повторов - Асинхронные операции : Неблокирующие запросы к базе данных ## Команды бота - /start - Начать работу с ботом - 👨✈️ Присоединиться к бою - Выбор уровня и поиск соперника - 👤 Профиль - Просмотр рейтинга и статистики - 🏆 Турнирная таблица - Рейтинг игроков - ❓ Как играть - Правила и инструкции - ❌ Выйти из очереди - Покинуть очередь поиска соперника