Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
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 - Начать работу с ботом
- 👨‍✈️ Присоединиться к бою - Выбор уровня и поиск соперника
- 👤 Профиль - Просмотр рейтинга и статистики
- 🏆 Турнирная таблица - Рейтинг игроков
- ❓ Как играть - Правила и инструкции
- ❌ Выйти из очереди - Покинуть очередь поиска соперника

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages