9

Игра "Быки и Коровы" (Telegram бот)

Игра "Быки и Коровы" (Telegram бот)

Продолжаю изучать программирование и в качестве учебной задачи запилил нового бота. Бот реализует довольно известную игру "Быки и Коровы" (Статья на wiki - https://ru.wikipedia.org/wiki/%D0%91%D1%8B%D0%BA%D0%B8_%D0%B...). В классическом варианте цифры не могут повторяться и число не может начинаться с нуля. По-моему это излишне упрощает и без того несложную игру, поэтому ноль может стоять на первом месте и цифры могут повторяться в любых количествах.


Чтобы поиграть - нужно переписываться с ботом в мессенджере Telegram. У телеграма есть клиенты для любых телефонов и компьютеров. Есть даже веб-версия, так что ничего устанавливать не обязательно (подробнее - https://telegram.org/)


Самого бота можно найти по ссылке https://telegram.me/bulls_and_cows_numbers_bot

Или поиском в самом телеграме по словам bulls_and_cows_numbers_bot


ПРАВИЛА:

Игра состоит в следующем: бот загадывает 4 цифры, игроку предлагается угадать это число, использовав как можно меньше попыток. После каждой попытки бот сообщает подсказку (количество быков и коров). Делая правильные выводы из полученных подсказок можно угадать число в среднем за 6 - 7 попыток. Число попыток не ограничено.


Подробнее о том, как считается количество быков и коров:


Пример: загадано 0250, ваш ответ - 0202.

1) Считаем количество быков, для этого смотрим цифры вашего ответа по порядку.

- первая цифра 0 - бык, т.к. в 0250 на первом месте тоже 0

- вторая цифра 2 - бык, т.к. в 0250 на втором месте тоже 2

- третья цифра 0 - не бык, т.к. в 0250 на третьем месте 5

- четвертая цифра 2 - не бык, т.к. в 0250 на четвертом месте 0

Итого 2 быка. (2Б)

2) Считаем количество коров, для этого смотрим цифры вашего ответа по порядку,

но только те которые не являются быками:

- первая цифра 0 - уже бык, поэтому не может быть коровой, хотя в загаданном числе она есть еще и на третьем месте

- вторая цифра 2 - уже бык, тоже не может быть коровой

- третья цифра 0 - корова, т.к. не бык и при этом есть в 0250 на четвертом месте

- четвертая цифра 2 - не бык и не корова. Она присутствует в 0250, но первые две цифры уже заняты быками, т.е. мы должны проверить есть ли 2 среди последних цифр __50.

Иными словами каждая цифра в загаданном числе и в ответе может соответствовать только одному животному.

Итого 1 корова. (1К)

Т.е. подсказка на ваш ответ будет 0202 2Б 1К

Ещё примеры:

1) загадано 1111 ответ 1214 - 2Б 0К

2) загадано 2342 ответ 3222 - 1Б 2К

3) загадано 5678 ответ 6587 - 0Б 4К

4) загадано 1234 ответ 1111 - 1Б 0К


Ну, как смог, так и объяснил =)


Если в правилах что-то не понятно - пишите в комментариях, постараюсь пояснить


Для тех кому интересно: бот написан на python. База данных - MariaDB. В качестве хостинга (и заодно IDE) используется c9.io (кстати рекомендую - крутая штука)

0
Автор поста оценил этот комментарий

ты бы токен убрал из config.py, мало ли)

или переходи на gitlab.com, там приватные репозитории бесплатные

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

С токеном хотел заморочится. Но потом подумал: а кому он нужен? В крайнем случае получу новый токен, не так уж это проблемно. А эти боты все равно долго не проживут. Ибо нафиг никому не нужны) Но вообще мысль здравая. А за гитлаб спасибо, попробую.

0
Автор поста оценил этот комментарий

Привет, тоже учусь и хочу написать бота(правда, в качестве игры выбрал виселицу) , можно посмотреть код как-нибудь? репозитория на гитхабе нету? конкретно интересует взаимодействие с пользователем и обработка сообщений. ты setwebhook или getupdates использовал?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я использую getupdates, с вебхуком слету разобраться не получилось, решил пару прототипов сделать без хука. Да и пока не нашел простого примера бота с использованием twx.botapi и вебхука. У тебя в телеграме случайно не такой же ник "mmvsha"?

Репозиторий есть: https://github.com/moskmax/nim_telegrambot

Сам бот в файле nimbot.py, но там много лишнего. В файле notes.txt есть пример простого бота.

показать ответы
0
Автор поста оценил этот комментарий

еще мысль, сейчас боты можно добавлять в переписку, поэтому если больше одного участника - не выдавай каждый раз сообщение, мол, "некорректный ответ". т.е. воспринимай только 4 цифры.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Эта фича мной пока совсем не изучена. Что-то мне подсказывает что для реализации нормального добавления этого бота в переписку нужно будет не только это переделать. Но на заметку возьму, спс.

2
Автор поста оценил этот комментарий

напиши алгоритм решения, т.е. игру когда бот угадывает)

а минусуют потому что большинству пикабу нужны котики, нытьё и сиськи. это тебе не реддит. sad but true.


спасибо, рекорд пока:


0011 1Б 0К

2233 0Б 0К

4455 0Б 1К

6677 0Б 1К

8899 1Б 0К

0022 0Б 0К

2212 0Б 1К

6491 2Б 0К

5791 4Б 0К

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Можно, конечно (и довольно интересная задача). Но только зачем? Читерить при игре с людьми? Просто так же не интересно наблюдать как бот число разгадывает?

показать ответы
0
Автор поста оценил этот комментарий

А можно добавить, пожалуйста, команду "Сдаться", чтобы можно было узнать число и найти ошибку у себя, когда зашел в тупик?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Набирай /newgame Это как раз и есть "Сдаться". И число тебе обязательно скажут)

показать ответы
0
DELETED
Автор поста оценил этот комментарий
Потому что массовому пользователю не нужен сложный текст без картинок. А у редкого спеца твой пост вряд ли вызовет восторг.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Нужно быть редким спецом чтобы поиграть в прикольную математическую игру? Хотя понятно, конечно. И немного грустно.

показать ответы
1
Автор поста оценил этот комментарий
Запили лучше пост как написать своего бота для телеграм. Хотябы самого простого.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Было в планах. Но я сам пока только-только начинаю учиться. Но если будут ещё спрашивать, постараюсь не затягивать с этим.

0
Автор поста оценил этот комментарий

Печалька. Хоть бы пояснили за что заминусили.

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества