diff options
-rw-r--r-- | roll.php | 42 |
1 files changed, 28 insertions, 14 deletions
@@ -1,21 +1,35 @@ #!/usr/bin/env php <?php -$string = $argv[1]; +function usage() { + echo "Arguments are in the format [<COUNT>]d<SIZE>[+MOD]\n"; +} -preg_match('/([0-9]*)d([0-9]+)(([+-][0-9]+))?/', $string, $matches); -$dice = (int)$matches[1]; -$die_size = (int)$matches[2]; -@$mod = (int)$matches[3]; +function roll($input) { + preg_match('/([0-9]*)d([0-9]+)([+-][0-9]+)?/', $input, $matches); + if (sizeof($matches) < 2) { + usage(); + return; + } + $dice = (int)$matches[1]; + $die_size = (int)$matches[2]; + @$mod = (int)$matches[3]; + if ($dice<1) $dice = 1; -if ($dice<1) $dice = 1; + $total = 0; + for ($i=0; $i < $dice; $i++) { + $v = mt_rand(1, $die_size); + echo $v.'+'; + $total += $v; + } + $total += $mod; + echo $mod.' = '.$total."\n"; +} -$total = 0; -for ($i=0; $i < $dice; $i++) { - $v = mt_rand(1, $die_size); - echo $v.'+'; - $total += $v; +if (sizeof($argv) == 1) { + usage(); +} +array_shift($argv); +foreach ($argv as $arg) { + roll($arg); } -echo $mod; -$total += $mod; -echo ' = '.$total."\n"; |