Coder Social home page Coder Social logo

naval-battle-bot's Introduction

Постановка задачи

Что?

Телеграмм бот, с которым можно играть в игру "Морской бой"

Что бот должен уметь?

  1. Генерировать игровое поле противника и расставлять корабли случайным образом
  2. Генерировать игровое поле игрока и расставлять корабли случайным образом
  3. Хранить состояние ("в игре", "не в игре")
  4. Репрезентовать игровое поле в виде клавиатуры 8Х8
  5. Отмечать промахи и попадания на поле
  6. Нагибать игрока шквальным огнём
  7. do it

Описание взаимодействия с ботом

  1. Пользователь отправляет команду /start боту (или стартует его, найдя в поиске)
  2. Бот приветствует пользователя и предлагает сыграть в игру "Морской бой", возвращая сообщение с двумя кнопками "Игра", "Не хочу", также предлагает пользователю прочитать подробные правила, отправив команду /help
  3. На этом этапе пользователь может совершить 4 действия
    1. Согласиться поиграть с ботом в игру, выбрав кнопку "Игра"
    2. Не согласиться играть, выбрав кнопку "Не хочу"
    3. Отправить в чат команду /help
    4. Отправить в чат любое другое сообщение
  4. Пользователь отправляет в чат согласие играть в игру
    1. Бот сообщает пользователю, что очень рад поиграть и возвращает игровое поле противника
    2. Бот сохраняет информацию о том, что пользователь находится в состоянии "Игра"
    3. Пользователь на этом этапе может совершить 3 действия
      1. Выбрать ячейку нанесения удара
      2. Прислать в чат команду /cancel
      3. Прислать что-то отличное от этих 2-х пунктов
    4. Пользователь атакует
      1. Бот проверяет, попал или нет
      2. Если попал
        1. Если все корабли потоплены, поздравляет с победой и переводит игру в состояние "не в игре", присылает пользователю сообщение с предложением сыграть еще раз
        2. Возвращает поле для следующего выстрела и так до промаха
      3. Если нет
        1. Возвращает поле игрока, и передаёт ход боту
    5. Бот атакует
      1. Бот проверяет, попал или нет
      2. Если попал
        1. Если все корабли потоплены, поздравляет себя с победой и переводит игру в состояние "не в игре", присылает пользователю сообщение с предложением сыграть еще раз
        2. Бот атакует и так до промаха
      3. Если нет
        1. Возвращает поле противника, и передаёт ход игроку
    6. Пользователь присылает в чат команду /cancel
      1. Бот переводит состояние из "в игре" в "не в игре"
      2. Бот отправляет в чат сообщение о том, что игра закончилась
      3. Бот отправляет в чат сообщение о том, что если пользователь захочет снова сыграть, то пусть отправит сообщение "Игра"
    7. Пользователь в состоянии "в игре" присылает в чат, что какое-то действие не связанное с игровыми правилами
      1. Бот отправляет пользователю сообщение о том, что по правилам игры пользователь может выбрать ячейку для атаки или команду /cancel
  5. Пользователь отправляет в чат отказ играть в игру
    1. Бот отправляет пользователю сообщение, типа, "Понятно! Струсил!" и инструкцию, что нужно сделать пользователю если он все-таки захочет поиграть
  6. Пользователь отправляет в чат команду /help
    1. Бот присылает пользователю правила игры и описание команд
  7. Пользователь отправляет в чат любое другое сообщение
    1. Бот сообщает, что не понимает пользователя и снова предлагает сыграть в игру

naval-battle-bot's People

Contributors

pikhto 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.