/// <summary>
        /// Throws a series of dice, based on a string formula
        /// </summary>
        /// <param name="diceString">Represents a dice string e.g. 1w6+3</param>
        /// <returns>Random number based on the dice string</returns>
        public int throwDiceByFormula(string diceString)
        {
            int thrownNumber = 0;

            if (DiceEngine.isValidDiceFormula(diceString))
            {
                Dice diceToThrow = DiceEngine.getDice(diceString);
                thrownNumber = diceToThrow.Throw();
                Log.Append("Es fallen " + thrownNumber + " Augen auf " + diceString);
            }
            else
            {
                Log.Append("Ungültige Formel");
            }
            return(thrownNumber);
        }
Esempio n. 2
0
 public void Interpret()
 {
     if (_exc.GetType() == typeof(Parser.ParserException))
     {
         Assert.Throws(_exc.GetType(), () => new Parser(new Scanner(_expr).ScanTokens()).Parse());
     }
     else
     {
         var r = new DiceEngine().Interpret(new Parser(new Scanner(_expr).ScanTokens()).Parse(), _context);
         Console.WriteLine(r);
         if (_result is ICollection result)
         {
             Assert.Contains(r, result);
         }
         else
         {
             Assert.AreEqual(_result, r);
         }
     }
 }
Esempio n. 3
0
        public static string Interpret(string term)
        {
            var interpretResult = new InterpretResult();

            try
            {
                var expr   = new Parser(new Scanner(term).ScanTokens()).Parse();
                var result = new DiceEngine().Interpret(expr).ToString();

                interpretResult.Error  = null;
                interpretResult.Ast    = new AstPrinter().Print(expr, null);
                interpretResult.Pretty = new PrettyPrinter().PrettyPrint(expr, null);
                interpretResult.Result = result;
            }
            catch (Exception e)
            {
                interpretResult.Error = e.Message;
            }

            return(JsonConvert.SerializeObject(interpretResult, Settings));
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            Console.WriteLine("NDiceCLI - let's roll!");

            var de = new DiceEngine();

            while (true)
            {
                Console.Write("> ");

                var input = Console.ReadLine()?.Trim();
                if (string.IsNullOrEmpty(input))
                {
                    continue;
                }

                if (input.ToLowerInvariant() == "quit" || input.ToLowerInvariant() == "exit")
                {
                    return;
                }

                try
                {
                    var tokens = new Scanner(input).ScanTokens();
                    Console.WriteLine($"TKN: {TokensToString(tokens)}");
                    var expr = new Parser(tokens).Parse();
                    Console.WriteLine($"AST: {new AstPrinter().Print(expr, null)}");
                    Console.WriteLine("======");
                    var result = de.Interpret(expr, null);
                    Console.WriteLine(new PrettyPrinter().PrettyPrint(expr, null));
                    Console.WriteLine($"RES: {result}");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }