Я задолбался писать ботов «в стол» и выпустил «Ворди»: безлимитный Wordle с глобальным рейтингом игроков

О всемирном помешательстве я узнал неделю назад. Утро понедельника не предвещало ничего интересного, но внезапно в ленте новостей оказалась заметка о Wordle. Жизнь сразу обрела цель и смысл: «Сейчас я за пару дней выкачу бота для игры!».

Как, думаю, уже понятно, в итоге потребовалось чуть больше пары дней, но замечу, что мои друзья играют в Ворди уже со среды. Почему Ворди? Здесь может быть несколько ответов, но главный, если уж начистоту, конечно, в том, что все нормальные варианты сочетания слов "wordle" и "bot" были уже заняты. Ха-ха, мда. Остальные ответы примерно такого характера: мне нравится звучание, легко запоминается, в слове тоже пять букв.

Я задолбался писать ботов «в стол» и выпустил «Ворди»: безлимитный Wordle с глобальным рейтингом игроков

Кстати, из всех зарегистрированных имён рабочим оказался только один бот. Я сыграл слово дня, сыграл слово из всего словаря, мне выпало слово "акажу" и я поклялся, что в моём боте такая дичи не встретится.

Что ж, теперь в моём словаре для игры 1234 прекрасных слова, одно интереснее другого. Из "Нового частотного словаря русской лексики" я выбрал существительные из пяти букв и получил число слов, близкое к 1234. Скоро оказалось, что там встречаются слова множественного числа, жаргонные и, скажем так, не очень литературные. Их я заменил на названия животных — слова всем известные, но в повседневной жизни употребляемые нечасто (скажем, жираф).

Вскоре пришлось избавиться от буквы "ё": на клавиатуру идеально помещались всего 32 буквы. Несмотря на то, что я очень трепетно отношусь к этой букве и набираю её всякий раз, где это возможно, я принял решение удалить из словаря (игрового) все слова, её содержащие, чтобы избежать разночтений и запутываний. Впрочем, два слова я всё-таки оставил, это "тезка" и "ликер".

Чтобы не было путаницы, стоит объяснить, что ещё, конечно же, используется словарь всех известных слов из пяти букв, его размер чуть больше 3,5 тысяч. Уже после того как бот был полностью отлажен, я решил добавить пользовательский словарь, чтобы все вводимые слова сохранялись. При повторном употребление (вводе) увеличивается индекс использования, и я раз в несколько дней смогу добавлять наиоболее востребованные слова в основной словарь, если они действительно существуют.

Я задолбался писать ботов «в стол» и выпустил «Ворди»: безлимитный Wordle с глобальным рейтингом игроков

Если вам понравилось слово, которое вы отгадывали, вы можете переслать другу сообщение с цветными плитками (стандартный вариант), а если ваш результат вам не нравится, вы можете просто передать другу номер. Эти цифры номера вводятся обычным образом как буквы слова, бот принимает любой номер до 1234 включительно. Вы и сами можете ввести любой номер из головы. Чем меньше число, тем чаще употребляется слово, это совсем не значит, что оно будет простым для отгадывания: взять хотя бы слова 1 и 2!

Ну, не буду больше затягивать, но добавлю ещё пару слов о разработке. Из настолько объёмных (функциональных) ботов этот у меня — первый, в котором отсутствует привычное меню на кнопках. Я не люблю обычные кнопки в Телеграмме и по возможности всё реализовываю на подстрочных (inline), но здесь я решил обойтись только командами. А чтобы было проще, релевантная команда выводится в конце сообщения. Интересно будет узнать, насколько такое решение удобно и хорошо смотрится.

Начать игру можно здесь. Я также добавил дублёра, если основной бот не справится с нагрузкой: Телеграмм устанавливает ограничение на количество отправляемых ботом сообщений в минуту. Если такое случится, бот сообщит адрес дублёра. База данных у них одна, прогресс сохраняется.

Да, и ещё, к вопросу о названии статьи. У меня есть бот, которого я разрабатывал около полугода, в нём есть возможность тонкой настройки под пользователя, 12 языков и около полусотни тудушек :) Кроме него есть ещё парочка простых, но, возможно, достойных внимания. Обещаю представить общественности и других ботов, если справлюсь с запуском и поддержкой этого.

Что ж, всего хорошего и приятной игры!

77
реклама
разместить
12 комментариев

Я задолбался писать ботов в стол и выкинул стол.

2

Если загуглить "Wordie", гугл меняет логотип на анимационную демонстрацию игры.

Насколько я понимаю, идея не нова и является своеобразной разновидностью игры "Быки и коровы", где вместо слов числа. Прикольная идея, только реализация хромает. Не очень хочется перечислять все проблемы, но из бросающихся в глаза опишу две:
1. Клавиатура не нужна, потому что вручную проще набрать слово, чем жать на кнопки. Стереть выбранные буквы нельзя, а при нажатии на вычеркнутые ("_") они всё равно появляются. Ещё сообщения от бота идут вперемешку с клавиатурой, которая уходит наверх из-за этого. Либо пусть бот обновляет сообщение с клавиатурой, либо пусть вообще её не использует. Плюс удалять предыдущую клавиатуру - тоже так себе решение. Лучше выбрать что-то из вариантов, которые я предложил, если хотите грамотно организовать интерфейс.
2. Если буква стоит на своём месте, а потом повторяется в слове, бот тоже её считает. Он не должен повторно считать буквы, это путает. На скриншоте он одну букву "а" посчитал на своём месте, а потом ещё раз посчитал как не на своём месте, хотя в ответе она одна. В итоге получается, что сам бот даёт не подсказки, а наоборот, путает игрока.

Я бы добавил такую игру в своего игрового бота, но у меня на очереди шашки, морской бой и шахматы. Правда, лень. Но игра с числами у меня есть)

Вы можете не тратить время на сбор базы слов, а использовать мой API - там в базе 19,4 тыс. слов с пояснениями. И это только русский язык.

Спасибо за комментарий. Действительно, проще набрать слово, чем жать на кнопки клавиатуры, но жать на них и не нужно, клавиатура тут не для этого: это алфавит, в котором отсутствующие буквы вычёркиваются, а имеющиеся выделяются.
По поводу плиток: действительно, вторая буква будет тоже выделяться, но это соответствует правилам игры, в которых оговаривается, что буква помечается жёлтым, если стоит не на своём месте. Таким образом, вторая такая же буква удовлетворяет тому же правилу.
Гугл меняет логотип если загуглить "Wordle", а не "Wordie". Вас, видимо, всемирное помешательство обошло стороной :) Просто попробуйте поиграть, и, возможно, вы тоже вольётесь. А пытаться поменять правила под себя ну это такое себе.

Сколько пользователей?

Всего 33 человека. Сыграно больше 5 игр у 14 человек. За сегодня сыграно (или начато) 87 игр. Вы играете? Всё нравится или, может быть, есть какие-то замечания?

Интересная реализация, я тоже о таком подумывал!

Позвольте рассказать как бы сделал я, может быть вам понравится моя идея.
Я бы сделал так:
Как только юзер отправляет слово, удаляю его сообщение и присылаю сгенерированную картинку с его словом на фоне желто/зеленых кубиков
Следом сообщение со сгенерированной картинкой клавиатуры, с использованными буквами.
Когда юзер отправляет второе слово, снова удаляю его, а так-же картинку с подсказкой клавиатуры. И присылаю новое слово картинкой и новую клавиатуру.
Если юзер ввел несуществующее слово, писал бы что такого нет, и как только он напишет существующее, удалял бы эти сообщения.

Получилось бы примерно так, только в квадратах были бы буквы