Этот телеграмм бот создан для игры в шахматы с онлайн соперником или игры с одного устройства.
Имя бота - @StChessBot
Вся основная логика шахматной партии лежит в файле engine.py. Здесь просчитываются возможные ходы фигур, их перемещение, а также генерация шахматной доски и многое другое, что связано с шахматами.
В файле config.py на основе текущей шахматной доски генерируется клавиатура, с помощью которой пользователь взаимодействует с шахматами. В этом файле также хранится токен бота, благодаря которому можно управлять именно этим ботом.
"Сердце" бота находится в файле main.py. Здесь переплетаются все функции прошлых файлов и добавляются функции самого бота. Все функции бота направлены на ответную реакцию на человека, который либо написал команду боту, либо нажал на кнопку клавиатуры. Таким образом бот начинает поиск соперника, регистрирует ходы пользователя, передает ход сопернику и остальное.
В данном разделе кратко описывается процесс работы бота и то, как я его реализовала.
Действие пользователя | Действие бота |
---|---|
С помощью команды /play_online пользователь встает в очередь на поиск соперника | ID пользователя добавляется в online.json в раздел "search", как только находится второй пользователь бот перемещает двух пользователей в раздел "play", далее бот генерирует новую картинку доски, делает рассылку пользователям, а также создает отдельный json файл их партии с разными данными об игре. |
В начале своего хода пользователь выбирает фигуру, которой бы он желал сходить | Бот определяет тип шахматной фигуры (пешка, ладья, конь и др.) и на основе этого генерирует возможные ходы для данной фигуры и передает их в виде списка кортежей, в котором первое значение - x шахматного поля, а во втором - y (таким образом (7, 7) будет правый нижний угол доски со стороны белых). На основе данного списка генерируется новая клавиатура, в ней все возможные клетки для хода помечены символом галочки (✔). |
Пользователь выбирает куда он хотел бы сходить данной фигурой | Бот регистрирует ход, проверяет не подставляет ли данный ход короля пользователя или не поставлен ли шах королю соперника, записывает в json файл партии новые данные и передает ход сопернику |
Пользователю ставят мат или он сдается | Пользователям пишет, кто из них выиграл партию, из раздела "play" файла online.json удаляются ID пользователей завершивших партию, удаляется json партии и картинка доски |