public DieString Add(int mod) { DieString ret = new DieString(String); mod += Modifier; while (mod > 3) { ret.NumberOfDice += 1; mod -= 3; } ret.Modifier = mod; ret.String = $"{ret.NumberOfDice}d{mod:+0;-#}"; return(ret); }
public static bool Test() { Dictionary <string, Tuple <int, int, int> > pairs = new Dictionary <string, Tuple <int, int, int> >(); for (int i = 0; i < strs.Length; i++) { pairs.Add(strs[i], values[i]); } foreach (string str in strs) { try { var die = new DieString(str); int roll = die.Roll(); bool success = die.NumberOfDice == pairs[str].Item1 && die.DieSides == pairs[str].Item2 && die.Modifier == pairs[str].Item3 && roll > die.NumberOfDice && roll <= die.NumberOfDice * die.DieSides + die.Modifier; if (!success) { Debug.WriteLine( $"DieString '{str}' failed. Results = {PrintStats(die)}\r\nExpectation = {PrintStats(pairs[str])} "); return(false); } else { Debug.WriteLine( $"DieString '{str}' Passed. Results = {PrintStats(die)}\r\nExpectation = {PrintStats(pairs[str])} "); } } catch (ArgumentException) { Debug.WriteLine( $"dieString {str} failed. This is {(pairs[str].Item1 == 0 ? "" : "not")} a good thing."); } catch (Exception) { Debug.WriteLine($"Another error occurred. DieStr = {str}"); return(false); } } DieString d = new DieString("3d+4"); DieString d2 = d.Add(4); return(d2.NumberOfDice == 5 && d2.Modifier == 2); }
private static string PrintStats(DieString die) { return ($"Number of dice = {die.NumberOfDice}, sides per die = {die.DieSides}, modifier = {die.Modifier:+0;-#}"); }