Кидач кубиків за нотацією
Справжній синтаксичний аналізатор для нотації кидання кубиків: введіть 3d6+2, 4d6kh3 або adv і отримайте кожен окремий кидок кубика, залишені й відкинуті кубики та підсумок.
🔒 Обробляється повністю у вашому браузері — те, що ви тут вводите, ніколи не вивантажується.
Результат
Dice Notation Roller читає та виконує ті самі скорочення, якими користуються за столом у настільних рольових іграх і в книгах правил: «NdS» означає кинути N кубиків із S гранями, тож «3d6» кидає три шестигранні кубики. Додайте плоский модифікатор за допомогою +N або -N («3d6+2»), поєднайте кілька груп кубиків в одному виразі («2d8+1d6-1») або використовуйте скорочення D&D 5e для переваги/перешкоди («adv» кидає два двадцятигранні кубики й залишає більший, «dis» залишає менший). Повністю підтримується також нотація «залишити найбільші» та «залишити найменші» («4d6kh3» кидає чотири шестигранні кубики й залишає три найбільші — стандартний спосіб кидати характеристики в D&D).
Під капотом це справжні токенізатор і парсер, а не список заздалегідь відомих виразів: нотація сканується символ за символом і перетворюється на токени (групи кубиків, ключові слова adv/dis, звичайні числа та оператори +/-), збирається в невелике дерево виразу і лише потім обчислюється. Будь-яка синтаксично правильна комбінація працює, включно з нотацією, для якої ніхто не писав прикладу. Кожен кубик кидається за допомогою криптографічного генератора випадкових чисел браузера (crypto.getRandomValues, а не Math.random) з використанням відбраковувальної вибірки, так що кожна грань має абсолютно рівний шанс, а в результаті показується кожен окремий кубик, які кубики були залишені, а які відкинуті для кидків kh/kl, застосований модифікатор і кінцевий підсумок.
Щоб інструмент залишався передбачуваним і швидким, групи кубиків обмежені 100 кубиками й 1000 граней на групу, а кількість залишених найбільших/найменших кубиків ніколи не може перевищувати кількість кинутих. Некоректна нотація — невідомий символ, два оператори поспіль, висячий + у кінці — призводить до конкретного, зрозумілого повідомлення про помилку, а не до мовчазної невдачі чи аварійного завершення. Усе працює локально в браузері: жодна нотація, кидок чи результат ніколи нікуди не надсилаються.