игровая комната, в ней может быть до 12 участников. Когда комната заполняется, каждому участнику надо назначить случайную роль.
Есть такие роли, которых может быть ровно одна штука, а есть без ограничений.
Вопрос - как при заполнении комнаты назначить роль, используя только SQL + plpgsql?
ап
—- Это не имеет прямого отношение к SQL. И ваш код я не читал 1. Допустим, у нас есть функция, дающая равномерное распределение. Например, это может быть timestamp::int32 mod 1000 Всем игрокам при входе в игру выдаём случайное число от 0 до 999 2. Прописываем для каждой роли диапазон, например, 0..100 медсестра, 100..200 комиссар, 200..500 мафия, 500..999999 мирный житель 3. Когда начинается игра, делаем update, который удаляет дубли медсестёр: ту, что с меньшим числом оставляет, а с большим — прибавляет к номеру 1000 (она становится таким образом мирным жителем). Это единственный шаг, где нужно(можно) написать нетривиальный sql-запрос Потом по желанию делаем ещё 1 апдейт, который в отдельную колонку пишет роль буквой, например, 'K'
1. сформировать набор ролей (т.е. селект все уникальные юнион набор рандомных)
Обсуждают сегодня