我想要做一些導入使用不同骰子滾動文本的數據。例如,你會有2-4,2-12,5-8,2-5。我想寫一個翻譯器,將它們轉換成適當的骰子。到目前爲止,我所擁有的將會翻譯它,但最終我會得到一些奇怪的結果。例如在5-8上它會出現5d1 + 3。有了2-8等其他的東西,它會給我一個合理的2d4。我試圖找出如何使它總是使用「真正的」骰子。Perl:骰子滾動「修復」來翻譯2-8,5-8,到2d4,1d4 + 3
目前我正在使用這個Perl腳本。您只需將它想要修復的骰子字符串傳遞給它,並返回它認爲正確的卷。我的問題是我想不出如何將骰子「雙方」限制在這些2,3,4,6,8,12,20兩側。
# turn 2-7 into 1d6+1 or 2-8 into 2d4
sub fix_DiceRolls {
my($diceRoll) = @_;
use POSIX;
if ($diceRoll =~ /^(\d+)(\-)(\d+)\b/i) {
# 2-5
#Group 1. 0-1 `2`
#Group 2. 1-2 `-`
#Group 3. 2-3 `5`
my($count) = $1;
my($size) = $3;
if ($count == 1) {
$diceRoll = "$1d$3";
} else {
my ($newSize) = $size/$count;
my ($remainder) = $size % $count;
my ($round_remainder) = ceil($remainder);
my ($round_newSize) = floor($newSize);
if ($remainder == 0) {
$diceRoll = $count."d".$newSize;
} else {
$diceRoll = $count."d".$round_newSize."+".$round_remainder;
}
}
}
return $diceRoll;
}
您確定此轉換更正確嗎?在2-8範圍內滾動2d4會得到不均勻的分佈 - 2或8的滾動比5或6的滾動要少。 – duskwuff
我只能說在原文中當他們使用「2-8」時,他們的意思是擲2個有4個邊的骰子。即2d4。當我在腳本中推2-8時,結果會返回2d4。 – ucemike
如果原稿中的「2-8」表示2d4,「5-8」是什麼意思?五個骰子?雙方? – Marty