Как сделать рулетку в ВК группе

Решил отойти от темы ботов для ВК и сделать небольшой лохотрон (рулетку типа). Принцип работы простой и понятый — после запуска пользователю выпадает один из призов, однако у каждого приза будет свой шанс выпадения. Чем выше шанс — тем вероятнее и чаще он будет попадаться.

Шаг 1: Подготовка и осознание

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

Коэффициент приза — это обратная дробь стоимости приза. При умножении стоимости на коэффициент всегда будет получаться единица.

Как Настроить Конкурс Рулетка от ActiveBot.

В качестве призов, а также их стоимости, я буду использовать просто деньги. Для примера сравним шансы выпадения 10.000 рублей, 5.000 рублей и 2.000 рублей:

  • Коэфф. 10к = 1 / 10000 = 0,0001
  • Коэфф. 5к = 1 / 5000 = 0,0002
  • Коэфф. 2к = 1 / 2000 = 0,0005
  • Шанс выпадения 10к = 0,0001 / (0,0001 + 0,0002 + 0,0005) * 100% = 12,5%
  • Шанс выпадения 5к = 0,0002 / (0,0001 + 0,0002 + 0,0005) * 100% = 25%
  • Шанс выпадения 2к = 0,0005 / (0,0001 + 0,0002 + 0,0005) * 100% = 62,5%

Если все эти проценты сложить, то в сумме получится 100% (12,5 + 25 + 62,5).

Сейчас все расчёты я сделал вручную для демонстрации принципа работы скрипта, который в дальнейшем будет всё это делать за нас в автоматическом режиме.

Шаг 2: Написание скрипта

Всего в моём тестовом проекте будет два файла: index.php (главная) и func.php (скрипт):

Пришло время писать код. Открываем файл func.php и создаём массив с призами. Я сделаю 7 элементов с разными суммами:

‘1.000.000 рублей’, ‘price’ => 1000000 ), array ( ‘name’ => ‘750.000 рублей’, ‘price’ => 750000 ), array ( ‘name’ => ‘600.000 рублей’, ‘price’ => 600000 ), array ( ‘name’ => ‘400.000 рублей’, ‘price’ => 400000 ), array ( ‘name’ => ‘250.000 рублей’, ‘price’ => 250000 ), array ( ‘name’ => ‘150.000 рублей’, ‘price’ => 150000 ), array ( ‘name’ => ‘100.000 рублей’, ‘price’ => 100000 ), );

Далее нам понадобятся две функции. Первая будет считать сумму коэффициентов всех призов, а вторая запустит рулетку и вернёт позицию выигранного приза в массиве.

Начинаем писать первую:

function totalChance( array $prizes ) < $result = 0; foreach ( $prizes as $key =>$params ) < $result += ( 1 / $params[‘price’] ); >return $result; >

На вход функция получает массив всех призов (который мы запихали в константу PRIZES), далее перебирает все призы, суммирует их коэффициенты и возвращает полученное значение.

Еще по теме:  Сделать трифорс в ВК

Переходим к функции №2. Создаём рандомное число от 1 до 100 и записываем его в переменную:

function startLottery( array $prizes ) < $rand = mt_rand( 1, 100 ); // Тут продолжим писать код >

Далее в функцию мы вставим цикл, который будет перебирать всё тот же массив с призами. На каждой итерации будет подсчитываться шанс текущего приза и предыдущего (на первой итерации для «предыдущего шанса» ставим 0). И если рандомное число попадает в промежуток этих двух высчитанных шансов (ранд > пред.шанс И ранд

Конечный облик функции:

function startLottery( array $prizes ) < $rand = mt_rand( 1, 100 ); // Рандомное число $current_chance = $prev_chance = 0; // Вероятность выпадения текущего и предыдущего призов. Пока что приравниваем к нулю. foreach ( PRIZES as $key =>$params ) < $current_coefficient = 1 / $prizes[$key][‘price’]; // Коэффициент текущего приза $current_chance += $current_coefficient / totalChance( $prizes ) * 100; // Вероятность выпадения текущего приза в процентах if ( $key != 0 ) // Проверяем, на какой итерации находится цикл по индексу массива (0 — первый индекс) < $prev_coefficient = 1 / $prizes[$key — 1][‘price’]; // Коэффициент предыдущего приза $prev_chance += $prev_coefficient / totalChance( $prizes ) * 100; // Вероятность выпадения предыдущего приза в процентах >if ( $rand > $prev_chance and $rand return -1; >

Шаг 3: Тесты

Для тестов рулетки добавил цикл в код, который 1000 раз вызовет вышенаписанную функцию, а также посчитает количество выпадений для каждого приза:

$a = 0; $b = 0; $c = 0; $d = 0; $e = 0; $f = 0; $g = 0; for ( $i = 0; $i < 1000; $i++ ) < $x = startLottery( PRIZES ); echo PRIZES[$x][‘name’] . ‘
‘; switch ( PRIZES[$x][‘price’] ) < case 1000000: < $a++; break; >case 750000: < $b++; break; >case 600000: < $c++; break; >case 400000: < $d++; break; >case 250000: < $e++; break; >case 150000: < $f++; break; >case 100000: < $g++; break; >> > echo ‘
‘; echo $a . ‘ (‘ . 1 / PRIZES[0][‘price’] / totalChance( PRIZES ) * 100 . ‘%)’ . ‘
‘; echo $b . ‘ (‘ . 1 / PRIZES[1][‘price’] / totalChance( PRIZES ) * 100 . ‘%)’ . ‘
‘; echo $c . ‘ (‘ . 1 / PRIZES[2][‘price’] / totalChance( PRIZES ) * 100 . ‘%)’ . ‘
‘; echo $d . ‘ (‘ . 1 / PRIZES[3][‘price’] / totalChance( PRIZES ) * 100 . ‘%)’ . ‘
‘; echo $e . ‘ (‘ . 1 / PRIZES[4][‘price’] / totalChance( PRIZES ) * 100 . ‘%)’ . ‘
‘; echo $f . ‘ (‘ . 1 / PRIZES[5][‘price’] / totalChance( PRIZES ) * 100 . ‘%)’ . ‘
‘; echo $g . ‘ (‘ . 1 / PRIZES[6][‘price’] / totalChance( PRIZES ) * 100 . ‘%)’ . ‘
‘;

В итоге получаем вот такую картину:

Как можно заметить — количество выпадений очень близко к процентной вероятности (та, что в скобках), а значит больше ничего дорабатывать не придётся.

Код для тестов теперь можно убирать, дабы он не мешал.

Шаг 4: Оформление

Переходим в файл index.php, в котором делаем простую форму с кнопкой. После каждого нажатия будет отправляться ajax-запрос и инициироваться новый запуск рулетки:

Еще по теме:  Во что Вконтакте поиграть с друзьями

Рулетка .game .prize #text form button Сюда надо тыкать function call() < var msg = $(‘#form’).serialize(); $.ajax(< type: ‘POST’, url: ‘/func.php’, dаta: msg, success: function(data) < var obj = jQuery.parseJSON(data); if (obj.success == ‘success’) < $(‘.prize’).html(‘Твой выигрыш: ‘ + obj.prize + »); > else < $(‘.prize’).html(‘Ошибка’); > > >); >

В func.php добавляем обработку формы:

if ( $_POST[‘type’] == ‘lot’ ) < $i = startLottery( PRIZES ); // Запуск рулетки, получение индекса приза в массиве $result = array ( ‘success’ =>’success’, ‘prize’ => PRIZES[$i][‘name’] // Название массива, которое будет выведено пользователю ); echo json_encode( $result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ); // Конвертируем массив $result в JSON и распечатываем >

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

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

  • 5id15
  • 03.07.2022
  • 4 438
  • 0
  • 1

Источник: kotoff.net

Скрипт Как написать своего бота ВКонтакте рулетку? [ ЧАСТЬ 1 ]

Всем привет, сегодня расскажу вам как написать своего бота ВК рулетку на NODE.JS! Если эта тема наберет 20 симпатий, я сделаю вторую часть.

И так, для начала необходимо сделать следующее:

Установить NODE.JS — nodejs.org
Я буду работать в IDE Visual Studio Code, вы можете так же её скачать, она бесплатна. Если хотите, можете использовать другую.

После установки NODE.JS, создаем где-нибудь папку в которой будет наш бот.
Добавляем эту папку в VS Code. Открываем терминал в VS Code с помощью сочетания клавиш Ctrl + ` / Ctrl + Ё
Прописываем следующую команду:

Нажимаем ENTER на всех вопросах.
Далее, прописываем еще пару команд:
npm i vk-io —save
npm i nodemon -g
После чего, создаем группу ВК.

1595681033314.png

Создаём ключ доступа и даём все разрешения, нужны все для дальнейшей работы бота, в случае если нам понадобиться узнать, лайкнул ли пользователь определённый пост в группе, добавлять фотографии, выставлять посты, узнавать товары и т.д

Далее переходим во вкладку Long Poll API, ставим такие же настройки как у меня:

1595681136377.png

1595681145662.png

Обязательно не забудьте включить сообщения сообщества и возможности ботов.

Переходим в VS Code, создаём в нашей папке файл index.js, пишем в нем следующий код:

JavaScript:

const < VK >= require(«vk-io»), vk = new VK(< token: «токен вашей группы», apiMode: «parallel», pollingGroupId: «цифровой id вашей группы» >); vk.updates.use( async (mes, next) => < if ( mes.senderType != «user» ) return; user = await vk.api.users.get(< user_ids: mes.senderId >); mes.send(`Здравствуйте, $!`) try < await next(); >catch ( e ) < console.log(e); >>); async function start() < await vk.updates.startPolling(); console.log(«Бот успешно запущен»); >start().catch((e) => < console.error(e); >);

Я написал простейший код, в котором мы сделали так, чтобы на каждое сообщение пользователя, бот приветствовал его.
Чтобы распознавать определенные команды необходимо дописать ( до функции start() ) следующий код:

Еще по теме:  Как скопировать содержимое страницы Вконтакте

JavaScript:

vk.updates.hear(/^(Привет|Ку|Дарова)/iu, async mes => < return mes.send(«Приветствую вас!») >)

  1. Привет
  2. Ку
  3. Дарова

На этом все, во второй части мы подключим базу данных MYSQL и сделаем регистрацию пользователей.

Источник: v-h.guru

РКИ and EDUCATION TODAY

Новые технологии в образовании, русский язык как иностранный, когнитивная лингвистика, новости и последние исследования в области преподавания иностранных языков,психолингвистика, педагогический дизайн, digital humanities и second language acquisition.

5 сайтов для создания колеса фортуны

рки онлайн

Колесо фортуны или колесо удачи — это замечательный способ узнать ваше будущее. А еще — это замечательный способ внести разнообразие в онлайн-уроки.

Вы преподаете РКИ онлайн? Тогда вам колесо удачи точно пригодится!

1) во-первых, это очень интригует. Теперь не вы, а колесо удачи решает, кому из студентов сейчас отвечать. Это вносит элемент неожиданности. Студенты ждут с замиранием сердца.

2) во-вторых, когда работает колесо удачи, студенты не «спят». Обычно же, если вы работаете в опредленном порядке, студенты знают, когда придет их очередь отвечать. Перестают следить за теми, кто отвечает сейчас и знают заранее, какое предложение или задание выпадет на их долю. Вот именно в этом очень помогает колесо удачи. Кто сейчас будет отвечать — нитко не знает.

Это судьба.

Если вы преподаете РКИ онлайн,то я рекомендую это колесо для того, чтобы разнообразить ваших занятий. Создать колесо удачи очень легко! Работает оно онлайн, либо можно скачать бесплатное приложение.

✅

Если вы хотите получать больше интересных материалов и новостей о событиях из мира лингвистики и мира РКИ, присоединяйтесь к сообществу «РКИ сегодня»

5 сайтов для создания колеса фортуны

рки онлайн курс

Один из самых популярных сайтов для создания колеса удачи. Все предельно просто. Крутите колесо и испытываете удачу. Бесплатно. Без регистрации.
Чтобы изменить параметры, нужно нажать «Modify wheel» и в носите нужные параметры. Я внесла имена студентов.
Но можно еще внести какие-то другие задания:
Например:

  • глаголы ( проспрягать выпавший глагол, если вы только приступили к спряжению глаголов)
  • посчитать от 1 до 10, от 10 до 20 и тд.,
  • назвать 10 фруктов/профессий/12 месяцев и тд (зависит от уровня студентов и многих других факторов)
  • может быть, у вас есть еще идеи?

уроки рки онлайн

Удобный, бесплатный, понятный сайт, где можно быстро и бесплатно создать разные виды «колес»

онлайн рки

Сайт на русском языке. Без регистрации и бесплатно можно создать колесо фортуны, а также бросить кости или жребий.

4) https://space24.top/koleso-fortuny

средства икс для уроков

5) Приложения для колеса удачи.
Так как сайтов, на мой взгляд, уже достаточно, я решила добавить бесплатные мобильные приложения для использования и создания колеса удачи.

Рулетка судьбы

средства икт

для Андроид
для iOS

На самом деле, в магазинах приложений очень много подобных бесплатных приложений.
Вам нужно ввести:

  • колесо фортуны
  • рулетка судьбы
  • колесо удачи

Источник: www.rki.today

Рейтинг
( Пока оценок нет )
Загрузка ...