Coder Social home page Coder Social logo

gamebot's Introduction

TelegramChess

Этот телеграмм бот создан для игры в шахматы с онлайн соперником или игры с одного устройства.

Имя бота - @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 партии и картинка доски

gamebot's People

Contributors

velelele avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.