Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Dlang alt to the dice roller:
- import std.stdio;
- import std.random;
- import std.string;
- import std.conv;
- import core.exception;
- import std.algorithm.iteration : sum;
- import std.algorithm.comparison : equal;
- import std.algorithm.searching : canFind, startsWith;
- void main(string[] args)
- {
- string dice = "";
- int modifier = 0;
- try {
- dice = args[1];
- }
- catch (RangeError){
- writeln("Missing dice\nUsage: dice #d# [modifier]");
- return;
- }
- try {
- args[2] = replace(args[2], "+", "");
- modifier = to!int(args[2]);
- }
- catch (RangeError){ } // Continue on range error
- catch (ConvException) { } // Continue on conversion error
- if (!canFind(dice, "d")) {
- writeln("Improper format\nUsage: dice #d# [modifier]");
- return;
- }
- auto results = roll(dice);
- string outp = "Rolled %s\nResults:\n";
- if (modifier != 0) {
- outp ~= " Modifier: %s\n";
- }
- outp ~= " Sum: %s\n";
- if (modifier != 0) {
- outp ~= " No Mod: %s\n";
- }
- outp ~= "Individual: %s";
- int total = sum(results);
- int modded = total + modifier;
- if (modifier != 0) {
- writefln(outp, dice, modifier, total, modded, results);
- }
- else {
- writefln(outp, dice, total, results);
- }
- }
- int[] roll(string dice)
- {
- int number;
- if (startsWith(dice, "d")) {
- number = 1;
- }
- else {
- number = to!int(dice.split("d")[0]);
- }
- int die = to!int(dice.split("d")[1]);
- int[] results = new int[number];
- for (int i = 0; i < number; i++) {
- results[i] = uniform(1, die+1);
- }
- return results;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement