Как в беседе сделать игру «крестики-нолики» на Автопилоте

Всем привет! Меня зовут Климов Сергей.

Хотел написать короткую инструкцию — получилась максимально подробная. Кому не нужны подробности, можете смотреть только скрины команд

Для создания игры в крестики-нолики вам понадобится 2 ресурса, 1 список, 4 команды + 1 команда очистки поля.

Ресурсы

1 ресурс с номером 19385 нужен для создания поля 3х3 из кнопок

2 ресурс с номером 19545 нужен для записи:

— в содержимое, id и имя человека%subs_id% (%first_name%), чтоб можно было упомянуть человека в сообщении

— в примечание порядок ходов цифрами 1 и 2, чтоб игроки делали ход по очереди. 2 — человек ходит; 1 — не может ходить

Данные записываются автоматически из команд, кроме поля с цифрами от 1 до 9.
Цифры первый раз нужно занести в ручную
1 of 2
Данные записываются автоматически из команд, кроме поля с цифрами от 1 до 9.
1 команда. Вызов игроку

Чтобы начать игру, нужно в ответном сообщении любому человеку написать кн

Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #3

Условия:

%reply_author%>0 — проверяем, что в игру приглашают человека, а не сообщество

%reply_author% не равна %subs_id% — человек приглашает не сам себя

Уровень списка 131790=0 — никто не начал игру

Во вторую секцию добавляем наш список с номером 131790, чтобы проверять не запустилась ли игра. Таким образом предотвращаем запуск игры другим игроком

Действия:

  1. Добавляем в список 131790 и уровень устанавливаем равным 1

2. Ресурсу с номером 19545 устанавливаем для содержимого значение %subs_id% (%first_name%)

3. Сменить исполнителя команды с ID %reply_author%

4. Ресурсу с номером 19545 для содержимого добавляем строки %subs_id% (%first_name%)

5. Добавляем временные переменные (будем копировать в каждую команду):

%id%={array}{get}19545|id|body{/get}|1|val|col{/array} — человек, пригласивший в игру

%id_2%={array}{get}19545|id|body{/get}|2|val|col{/array} — человек, которого пригласили

6. Отправляем сообщение в беседу:

@id%id%, предлагает пользователю @id%id_2% сыграть в крестики-нолики.

Чтобы принять предложение, @id%id_2% {gender}должен|должна{/gender} написать «кн принять»

Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #4
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #5
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #6
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #7
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #8
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #9
1 of 6
2 команда. Принять вызов

Чтобы принять игру, человеку, которому сделали вызов, нужно написать кн принять

Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #10

Условия:

%subs_id%={array}{get}19545|id|body{/get}|2|val|col{/array} — проверяем, что игру принимает именно тот, кому сделали вызов

Действия:

  1. Копируем переменные %id% и %id_2% из команды 1

2. Отправляем сообщение с кнопками:

{array}{get}19385|id|body{/get}|1|val|col{/array} — кнопка с цифрой 1

{array}{get}19385|id|body{/get}|2|val|col{/array} — кнопка с цифрой 2(итак, 9 раз)

3. Изменяем ресурс с номером 19545 и для содержимого устанавливаем значение 2 и 1 в столбик — будут ходить крестики

Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #11
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #12
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #13
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #14
1 of 4
Желательно каждую кнопку записать в переменную, чтобы меньше нагружать АП. Но т.к. у меня не корректно отрабатывала команда, я оставил как на скрине.

Показываю что надо было добавить к команде (выше действия отправить сообщение):

  1. Добавляем временную переменную %res%={get}19385|id|body{/get} — содержимое ресурса (поле из кнопок 3х3)

2. Добавляем временную переменную %line_1%={array}%res%|1|val|col{/array} — первая строка ресурса

3. Добавляем временную переменную %line_2%={array}%res%|2|val|col{/array} — вторая строка ресурса. Итак 9 строк

Переменные использовать в командах 2, 3 и 4
Переменные использовать в командах 2, 3 и 4
Команда 3. Ходят крестики

Событие:

Написал сообщение подходящим под регулярное выражение \d — отправил цифру

Условия:

%subs_id%={array}{get}19545|id|body{/get}|1|val|col{/array} — проверяем, что id человека равна id, которое мы записали в ресурс

{array}{get}19545|id|note{/get}|1|val|col{/array}=2 — проверяем, что именно его очередь ходить

Таким образом мы предотвратили вмешательство в игру посторонних людей и соблюдаем очередь ходов между игроками

Действия:

  1. Добавляем временную переменную %content%={reg}%content%~~[^\d]+(\d+)[^\d]+(\d+)~~2{/reg} — при нажатии на кнопку, получаем обращение к боту @vkwkaa1 и номер кнопки, которую нажали. Бот имеет свою id и поэтому через регулярку нам нужно достать номер кнопки (2 группа цифр)

2. Изменяем ресурс с номером 19385 и для примечания добавляем строки %content%

3. Добавляем временную переменную %res%={get}19385|id|body{/get} — содержимое ресурса (поле из кнопок 3х3)

4. Добавляем временную переменную %new_res%={array}%res%|%content%|val|col|Х{/array} — заменяем цифру, которую нажали на Х

5. Изменяем ресурс с номером 19385 и для содержимого устанавливаем значение %new_res% — заменили строку с цифрой на крестик

6. Копируем переменные %id% и %id_2% из команды 1

7. Добавляем условную переменную %text%, в которой проверяем: выиграл человек, ничья между игроками или просто сделал ход

— если, строки 1, 2 и 3 содержат Х, то отправляем сообщение {gender}Выиграл|Выиграла{/gender} @id%id%

— если, строки 4, 5 и 6 содержат Х, то отправляем сообщение {gender}Выиграл|Выиграла{/gender} @id%id%

— если, строки 7, 8 и 9 содержат Х, то отправляем сообщение {gender}Выиграл|Выиграла{/gender} @id%id%

— если, строки 1, 4 и 7 содержат Х, то отправляем сообщение {gender}Выиграл|Выиграла{/gender} @id%id%

— если, строки 2, 5 и 8 содержат Х, то отправляем сообщение {gender}Выиграл|Выиграла{/gender} @id%id%

— если, строки 3, 6 и 9 содержат Х, то отправляем сообщение {gender}Выиграл|Выиграла{/gender} @id%id%

— если, строки 1, 5 и 9 содержат Х, то отправляем сообщение {gender}Выиграл|Выиграла{/gender} @id%id%

— если, строки 3, 5 и 7 содержат Х, то отправляем сообщение {gender}Выиграл|Выиграла{/gender} @id%id%

— если, {array}{get}19385|id|note{/get}|%content%|num|col{/array}=9, то отправляем сообщение Игра между @id%id% и @id%id_2% закончилась ничьей!

— иначе, @id%id% {gender}сделал|сделала{/gender} ход.<br>Теперь ходит @id%id_2%

8. Отправляем сообщение %text%. Кнопки постоянные

9. Изменяем ресурс с номером 19545 и для содержимого устанавливаем значение 1 и 2 в столбик — будут ходить нолики

10. Добавляем условную переменную %delete%, чтобы проверить нужно ли очистить поле и обнулить список и ресурсы

— если %text% содержит выиграл,ничь, то 134383 — событие для очистки

— иначе пусто

11. Выполнить событие с номером %delete%

Скрины команды
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #17
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #18
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #19
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #20
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #21
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #22
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #23
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #24
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #25
1 of 10
Скрины команды
Команда 4. Ходят нолики

Копируем полностью команду 3. Заменяем копией:

Условие:

%subs_id%={array}{get}19545|id|body{/get}|2|val|col{/array} — проверяем, что id человека равна id, которое мы записали в ресурс

{array}{get}19545|id|note{/get}|2|val|col{/array}=2 — проверяем, что именно его очередь ходить

Действия:

  1. %new_res%={array}%res%|%content%|val|col|О{/array} — заменяем цифру, которую нажали на О

2. Условную переменную %text%

— крестики Х меняем на нолики О и сообщение меняем на {gender}Выиграл|Выиграла{/gender} @id%id_2% в каждом случае

— убираем условие о ничье, т.к. ничья возможна в случае когда крестики сходили

— иначе отправляем сообщение @id%id_2% {gender}сделал|сделала{/gender} ход.<br>Теперь ходит @id%id%

3. Изменяем ресурс с номером 19545 и для содержимого устанавливаем значение 2 и 1 в столбик — будут ходить крестики

Скрины команды
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #27
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #28
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #29
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #30
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #31
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #32
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #33
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #34
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #35
1 of 10
Скрины команды
Команда 5. Очистка

Событие:

Добавлен в приватный список с номером 134383

ИЛИ

Написал сообщение стоп кн

С условием:

%subs_id%={array}{get}19545|id|body{/get}|1|val|col{/array} — проверяем, что останавливает игру человек, который начал (для случая, если второй человек не принял вызов, иначе никто не сможет больше играть)

Действия:

  1. Удалены все участники из списка с номером 131790

2. Изменяем ресурс с номером 19385 и для содержимого устанавливаем значение с цифрами от 1 до 9 в столбик

3. Изменяем ресурс с номером 19385 и для примечания устанавливаем значение пусто

4. Изменяем ресурс с номером 19545 и для содержимого устанавливаем значение пусто

5. Изменяем ресурс с номером 19545 и для примечания устанавливаем значение пусто

6. Отправляем сообщение в беседу со словом Успех. Прячем кнопки, чтоб не мешались

Скрины команды
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #37
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #38
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #39
Как в беседе сделать игру «крестики-нолики» на Автопилоте, image #40
1 of 5
Скрины команды

Вопросы можете задать мне

Поиграть можно здесь

940 views·25 shares