From 2ab4051c6fe720dc47e99b0c305a0d779ee02d51 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sun, 19 May 2019 17:58:42 +0200 Subject: Moved Gamelogic to DSALib --- DSALib/Auxiliary/Dice.cs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 DSALib/Auxiliary/Dice.cs (limited to 'DSALib/Auxiliary/Dice.cs') diff --git a/DSALib/Auxiliary/Dice.cs b/DSALib/Auxiliary/Dice.cs new file mode 100644 index 0000000..3dd6562 --- /dev/null +++ b/DSALib/Auxiliary/Dice.cs @@ -0,0 +1,43 @@ +using System; +using System.Linq; + +namespace DSACore.Auxiliary +{ + public static class Dice // roll it! + { + private static readonly Random Rnd = new Random(); + + public static int Roll(int d = 20) + { + return Rnd.Next(d) + 1; + } + + public static int Roll(string input) + { + var strings = input.ToLower().Split(new[] {'w', 'd'}, 2, StringSplitOptions.RemoveEmptyEntries).ToList(); + var count = Convert.ToInt32(strings[0]); + var d = Convert.ToInt32(strings[0]); + + if (strings.Count != 2) + throw new ArgumentException($"{input}: erfüllt nicht die Formatvogaben( Anzahl d Augenzahl)"); + + return Roll(count, d); + } + + public static int Roll(int count, int d) + { + if (d <= 0) return 0; + + var sum = 0; + for (var i = 0; i < Math.Abs(count); i++) + { + var roll = Roll(d); + sum += roll; + } + + sum *= Math.Abs(count) / count; + + return sum; + } + } +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf