Инструкция по использованию дайсомёта

Kolman
Гарцующий дредноут
Сообщений: 2395
Зарегистрирован: 26 дек 2010, 12:22

Инструкция по использованию дайсомёта

Сообщение Kolman » 24 апр 2016, 18:09

Инструкция:
В форме ответа появилась кнопка "dice" вставляющая тег

Код: Выбрать все

[dice][/dice]
.
Если нажать эту кнопку, предварительно выделив текст, то текст будет обрамлён этим тегом.
Тег dice предназначен для моделирования броска дайсов. При отправке поста тег автоматически заменяется на результат броска.

Правила составления кода броска указаны ниже.

Бросок дайсов:
описывается конструкцией
NdM,
где N - количество дайсов, M - их размерность.
N можно опустить, тогда получится бросок одного дайса.
Результатом вычислений является специальный объект "Результат броска", содержащий массив значений.
Примеры:




Сходно работает функция
dice(N, M)
где N - количество дайсов, M - их размерность.
Можно использовать сокращённую форму:
dice(M) - вернёт бросок одного дайса.
Примеры:

Код: Выбрать все

dice(6)

Код: Выбрать все

dice(10,10)


В качестве агрументов M и N могут использоваться переменные, хранящие числа. О переменных смотри ниже.

Функции:
К результату броска можно применять функции:
count() - количество значений,
sum() - сумма значений,
max() - наибольшее значение,
min() - наименьшее значение.
Все эти функции принимают один аргумент - результат броска.
Примеры:

Код: Выбрать все

count(10d10)

Код: Выбрать все

sum(10d10)

Код: Выбрать все

max(10d10)

Код: Выбрать все

min(10d10)


Фильтры:
Фильтр задаётся выражением сравнения, заключённым в обратные апострофы `.
Конструкция фильтра пишется непосредственно после конструкции броска.
В выражении должна фигурировать системная переменная x (икс), которая как раз и сравнивается с другими значениями.
Результатом применения фильтра является объект "результат броска", содержащий выборку значений из исходного объекта.

Операции сравнения:
> - больше
< - меньше
== - равно (обратите внимание - требуются ДВА знака равенства!)
!= - не равно
>= - больше или равно
<= - меньше или равно

Логические операции:
&& - И
|| - ИЛИ
! - НЕ

Примеры:

Код: Выбрать все

10d10`x>5`

Код: Выбрать все

10d10`x<5`

Код: Выбрать все

10d10`x>1 && x<7`
- x больше 1 и меньше 7

Код: Выбрать все

10d10`x<5 || x>=8`
- x меньше 5 или больше или равен 8

Код: Выбрать все

10d10`!(x>5 || x==1)`
- неверно, что x больше 5 или равен 1

Именно для результатов фильтрации целесообразно применять функцию count()

Код: Выбрать все

count(10d10`x>5`)


Вычисления
Над результатами функций можно производить арифметические операции:
+ - сложение
- - вычитание
* - умножение
/ - деление
% - остаток от деления

Код: Выбрать все

sum(5d6) - max(10d10)


Многострочные вычисления и переменные
Если требуется более серьёзный анализ броска, можно воспользоваться многострочным синтаксисом и переменными.

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

Переменные - это именованные ячейки памяти, используемые для хранения значений, в т.ч. результатов промежуточных вычислений.
Чтобы создать переменную достаточно присвоить ей значение.

Код: Выбрать все

a = 10
- в переменной будет храниться число

Код: Выбрать все

a = 5d6
- в переменной будет храниться результат броска.
Если в переменной хранится результат броска, для неё справедливо то же, что для конструкции броска: к ней можно применять функции и фильтры.

Код: Выбрать все

a = 10d10;
count(a`x>5`) - count(a`x==1`);

Значение броска вычисляется только в момент присвоения, и не может измениться после этого. Это позволяет использовать его несколько раз в разных вычислениях.

Переменные могут использоваться с функцией dice()

Код: Выбрать все

a=4;
b=6;
dice(a,b)

Код: Выбрать все

res1=10d6;
success1=res1`x>3`;
c=count(success1);
res2 = dice(c, 10);


Вывод нескольких значений
Для вывода значений используется функция print().
В предыдущих примерах она неявно вызывалась транслятором для последней строки.
Функция принимает один аргумент - значение, которое нужно вывести. Это может быть результат броска, значение, строка, заключённая в кавычки, или результат их конкатенации (склеивания).
Для склеивания строк используется операция + (плюс)
Примеры:

Код: Выбрать все

print("Это строка");

Код: Выбрать все

print(10);

Код: Выбрать все

print(10d10);

Код: Выбрать все

print("Бросок "+10d10);


print целесообразно использовать с переменными в многострочных вычислениях:

Код: Выбрать все

a=10d10;
done = count(a`x>5`);
fail = count(a`x==1`);
print(a);
print("done "+done);
print("fail "+fail);
print("result "+(done-fail));
За мир и покой приходится платить. Это аксиома. Платить деньгами или кровью, всеобщей воинской обязанностью или всеобщим унижением. Кому чем нравится.

Kolman
Гарцующий дредноут
Сообщений: 2395
Зарегистрирован: 26 дек 2010, 12:22

Re: Инструкция по использованию дайсомёта

Сообщение Kolman » 24 апр 2016, 18:13

Вот, что получилось у меня, когда я скопировал код из последнего примера, обрамил его тегом dice, и нажал "отправить".
[7, 10, 4, 10, 3, 4, 6, 10, 6, 9]
done 7
fail 0
result 7
За мир и покой приходится платить. Это аксиома. Платить деньгами или кровью, всеобщей воинской обязанностью или всеобщим унижением. Кому чем нравится.

Аватар пользователя
Sven
underground master
Сообщений: 14452
Зарегистрирован: 26 дек 2010, 12:22
Откуда: Москва
Контактная информация:

Re: Инструкция по использованию дайсомёта

Сообщение Sven » 09 май 2018, 12:16

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

Аватар пользователя
Sven
underground master
Сообщений: 14452
Зарегистрирован: 26 дек 2010, 12:22
Откуда: Москва
Контактная информация:

Re: Инструкция по использованию дайсомёта

Сообщение Sven » 10 май 2020, 09:15

Дополнение по дайсомёту. Появился дайсомёт в конференции в Discord. Дайсы бросаются по правилу !roll (число дайсов)d(число граней) - в специальном канале "Dice". Администрация оставляет за собой право доверять дайсам проброшенным там, или на форуме, приоритет дискорду.


Вернуться в «Кодекс правил»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 0 гостей